私は MPI の初心者で、C 言語と Simulator for Processors (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();
}