我正在尝试使用MPI发送数字,但数据已损坏。我无法弄清楚为什么。我的代码是:
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
。那是为什么?
答案 0 :(得分:2)
不应该将整个数组作为缓冲区而不是第一个值传递?我的意思是:
MPI.COMM_WORLD.Send(send, 0, 1, MPI.INT, 1, 17);