我是 MPI 的初学者,我正在使用 C 语言和处理器模拟器 (MPICH2),我编写了以下代码来发送一个 2D 数组以使 2 个处理器从中取一条线,但在运行 MPICH2 时会产生错误,代码是:
#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
int main(int argc, char *argv[]) {
int rank;
int commsize;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD,&commsize);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
char** name=malloc(2*sizeof(char*));
int i;
for(i=0;i<2;i++){
name[i]=malloc(15*sizeof(char));
}
name[0]="name";
name[1]="age";
/////////////////////
if(rank==0) {
char** mArray=malloc(2*sizeof(char*));
MPI_Scatter(&name,1,MPI_CHAR,&mArray,1,MPI_CHAR,0,MPI_COMM_WORLD);//send
}
else {
char** mArray=malloc(2*sizeof(char*));
int k;
for(k=0;k<2;k++){
mArray[k]=malloc(15*sizeof(char));
}
MPI_Scatter(&mArray,1,MPI_CHAR,&mArray,1,MPI_CHAR,0,MPI_COMM_WORLD);//receive
printf("line is %s \n",mArray[rank-1]);
}
MPI_Finalize();
}