2014-12-02 101 views
0

我试图使用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。这是为什么?

回答

2

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

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