Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分散和聚集在MP J Express中的工作原理_Java_Mpi_Cluster Computing_Mpj Express - Fatal编程技术网

Java 分散和聚集在MP J Express中的工作原理

Java 分散和聚集在MP J Express中的工作原理,java,mpi,cluster-computing,mpj-express,Java,Mpi,Cluster Computing,Mpj Express,我将为我的项目创建一个新的集群api。所以这几天我开始学习MP J Express。我只是用这种方式编写了使用“分散”和“聚集”的程序。但我得到了零点异常。不知道哪里错了 这是我的密码 import mpi.MPI; public class ScatterGather { public static void main(String args[]){ MPI.Init(args); int rank = MPI.COMM_WOR

我将为我的项目创建一个新的集群api。所以这几天我开始学习MP J Express。我只是用这种方式编写了使用“分散”和“聚集”的程序。但我得到了零点异常。不知道哪里错了

这是我的密码

    import mpi.MPI;

    public class ScatterGather {
        public static void main(String args[]){
        MPI.Init(args);
        int rank = MPI.COMM_WORLD.Rank();
        int size = MPI.COMM_WORLD.Size();
        int unitSize=4,root=0;
        int sendbuf[]=null;
        if(rank==root){
          sendbuf= new int[unitSize*size];
        }
        int recvbuf[] = new int[unitSize];
      MPI.COMM_WORLD.Scatter(sendbuf,0,unitSize,MPI.INT,recvbuf,0,unitSize,MPI.INT,root);
        if(rank!=root){
            for(int i=0;i<unitSize;i++){
               recvbuf[i]=rank;
            }
        }
      MPI.COMM_WORLD.Gather(recvbuf,0,unitSize,MPI.INT,sendbuf,0,unitSize,MPI.INT,root);
        if(rank==root){
           for(int i=0;i<unitSize;i++){
                System.out.println(sendbuf[i]+ " ");
           }
        }
        MPI.Finalize();
     }
}

我认为散乱对象(int数组)未初始化。您能否尝试将sendbuf初始化为一些虚拟值并重试。

我认为未初始化中的散乱对象(int数组)。您能否尝试将sendbuf初始化为一些虚拟值并重试。

尝试初始化
sendbuf=new int[unitSize*size]用于每个进程。删除
if(rank==root)
条件,看看它是否有效


散布发现sendbuf数组为
null
这就是它抛出
NullPointerException

尝试初始化
sendbuf=new int[unitSize*size]用于每个进程。删除
if(rank==root)
条件,看看它是否有效

散布发现sendbuf数组为
null
,这就是它抛出
NullPointerException

而不是code>的原因

if (rank == root) 
    {
        send_buffer = new int [unitsize * size];
    }
只保持下面的路线

send_buffer = new int [unitsize * size];
您的输出将是: MPJ Express(0.44)在多核配置中启动

0 0 0 1 1 2 2 2 3 3 3代替代码

if (rank == root) 
    {
        send_buffer = new int [unitsize * size];
    }
只保持下面的路线

send_buffer = new int [unitsize * size];
您的输出将是: MPJ Express(0.44)在多核配置中启动

0 0 0 1 1 1 2 2 2 3 3 3