2014-12-02 102 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);