我创建程序以将二维数组从从属发送到主控。像这样的代码:
int **hasil;
hasil=(int**)malloc(baris*sizeof(int));
for(t=0;t<baris;t++){
hasil[t]=(int*)malloc(kolom*sizeof(int));
}
//some code to generate data
MPI_Type_contiguous(kolom, MPI_INT,&rowtype);
MPI_Type_commit(&rowtype);
if(rank==master){
int **terima;
int t,m,x;
terima=(int**)malloc(baris*sizeof(int));
for(t=0;t<baris;t++){
terima[t]=(int*)malloc(kolom*sizeof(int));
for(m=0;m<kolom;m++){
terima[t][m]=-1;
}
}
for(x=1;x<numOfProc;x++){
MPI_Recv(&(terima[0][0]),baris,rowtype,x,99,MPI_COMM_WORLD,&status);
}
} else {
MPI_Send(&(hasil[0][0]),baris,rowtype,master,99,MPI_COMM_WORLD);
}
我不知道为什么不发送所有数组元素。
关于“哈西尔”:
1 123 1234 1234 55345
2 123 1234 1234 12345
3 98765 1234 1234 12345
4 123 1234 1234 12345
5 123 1234 1234 12345
6 123 1234 1234 12345
7 123 1234 1234 12345
8 123 1234 1234 12345
9 123 1234 1234 12345
10 123 1234 1234 12345
11 123 1234 1234 12345
但在'terima'上:
1 123 1234 1234 55345
2 123 1234 1234 12345
3 98765 1234 1234 12345
4 123 1234 1234 12345
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
有人知道我的代码有什么问题吗?请告诉我。
谢谢大家