MPI Recv数据被破坏
问题描述:
我试图使用MPI发送一个数字,但数据被破坏。我无法弄清楚为什么。我的代码是:MPI Recv数据被破坏
import mpi.*;
public class test {
public static void main(String[] args) throws MPIException{
MPI.Init(args);
int rank = MPI.COMM_WORLD.Rank();
int clusterSize = MPI.COMM_WORLD.Size();
int[] send = new int[1];
int[] recv = new int[1];
send[0] = 12387394;
if(rank == 0) {
MPI.COMM_WORLD.Send(send[0], 0, 1, MPI.INT, 1, 17);
} else {
MPI.COMM_WORLD.Recv(recv, 0, 1, MPI.INT, 0, 17);
System.out.println(recv[0]);
}
MPI.Finalize();
}
}
我得到的输出是1
。这是为什么?
答
不应该将整个数组作为缓冲区而不是第一个值传递?我的意思是:
MPI.COMM_WORLD.Send(send, 0, 1, MPI.INT, 1, 17);