gpt4 book ai didi

c - 发送字符串数组 MPI C

转载 作者:太空宇宙 更新时间:2023-11-04 04:47:09 25 4
gpt4 key购买 nike

我正在尝试向 MPI 中的从属进程发送一个字符串数组,但我不知道该怎么做。我有一个很大的字符串数组,我已经从一个文件中读取了这些字符串,我需要将这个数组的一部分发送给奴隶。我正在分配一个新数组,其中包含主要数组中的一些元素并尝试发送它。这是代码的发送部分:

int w = 0;
int division = size / (procs -1);
for(i=1; i<procs; i++){
//allocating
char **array1 = (char**) malloc(sizeof(*array1) * division);
array1[0] = (char*) malloc(sizeof(*array1[0]) * division * buf);
for(j=1; j<division; j++)
array1[i] = &(array1[0][i*buf]);

// filling it up
for(j=0; j<division; j++)
array1[j] = array[w++];

// sending
MPI_Send(&array1, division[i], MPI_CHAR, i, tag, MPI_COMM_WORLD);

// clearing memory
free(array1);
}
printf("%d: All Sent\n", rank);

如果我把发送方法改成这样

MPI_SEND(&array[0][0] ...)

它有效,但我需要为每个进程发送多个字符串。

最佳答案

我也在做 MPI 项目,因为没有人回答这个问题,我会尽力而为。我认为在您的实现中,您传递了一个指针列表,每个指针指向一个 char 列表,因此 MPI_send 本质上发送了一个数组地址列表。因此,data_type“char”将不匹配,或者它可能只能找到每个数组中的第一个字符。

关于c - 发送字符串数组 MPI C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19744458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com