MPI Recv数据损坏

时间:2014-12-02 09:48:55

标签: java mpi openmpi

我正在尝试使用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。那是为什么?

1 个答案:

答案 0 :(得分:2)

不应该将整个数组作为缓冲区而不是第一个值传递?我的意思是:

MPI.COMM_WORLD.Send(send, 0, 1, MPI.INT, 1, 17);