发送字符串数组MPI C
我试图在MPI中向从属进程发送一个字符串数组,但我不知道怎么做。我有一个很大的字符串数组,我从一个文件中读取了这个数组,我需要将这个数组的一部分发送给从属文件。我正在分配一个新数组,其中包含主数组中的一些元素,并尝试发送此数组。以下是代码的发送部分:发送字符串数组MPI C,c,arrays,mpi,C,Arrays,Mpi,我试图在MPI中向从属进程发送一个字符串数组,但我不知道怎么做。我有一个很大的字符串数组,我从一个文件中读取了这个数组,我需要将这个数组的一部分发送给从属文件。我正在分配一个新数组,其中包含主数组中的一些元素,并尝试发送此数组。以下是代码的发送部分: int w = 0; int division = size / (procs -1); for(i=1; i<procs; i++){ //allocating char **array1 = (char**) malloc
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项目,因为没有人回答这个问题,所以我会尽我所能。我认为在您的实现中,您传递一个指针列表,每个指针指向一个字符列表,因此MPI_send本质上发送一个数组地址列表。因此,数据类型“char”将不匹配,或者它可能只在每个数组中找到第一个char 就我的经验而言,顺序malloc不能保证记忆的连续性 2D数组在内存中不连续,MPI无法以“标准”方式传输它 有关问题的说明,请参见以下内容:
虽然代码没有编译,但2D数组是在连续内存中分配的。
MPI_SEND(&array[0][0] ...)