我是MPI的初学者,我正在使用C语言和处理器模拟器(MPICH2),我写了下面的代码发送一个二维数组,以使2个处理器从其中取出一条线但它在运行时MPICH2产生的错误,代码:发送2个昏暗的阵列使用分散
#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();
}