Java 分散和聚集在MP J Express中的工作原理
我将为我的项目创建一个新的集群api。所以这几天我开始学习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
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