在java中在main之外初始化MPI
我正在尝试用java创建一个分布式MPI类,它将为我做一些计算。不幸的是,MPI.Init似乎需要主类中的argv、argc。在这个类中有没有初始化MPI的方法在java中在main之外初始化MPI,java,mpi,mpj-express,Java,Mpi,Mpj Express,我正在尝试用java创建一个分布式MPI类,它将为我做一些计算。不幸的是,MPI.Init似乎需要主类中的argv、argc。在这个类中有没有初始化MPI的方法 public class distributed { public distributed(int mat[][],int n,int m) throws MPIException { MPI.Init(argv); // issue is here,i dont have "argv" to initial
public class distributed {
public distributed(int mat[][],int n,int m) throws MPIException {
MPI.Init(argv); // issue is here,i dont have "argv" to initialize with,causing null pointer exceptions in variables like "myrank"
final int myrank = MPI.COMM_WORLD.Rank();
final int size = MPI.COMM_WORLD.Size();
final int rows = n;
final int rowChunk = (rows+size-1)/size;
final int startRow = myrank *rowChunk;
int endRow = (myrank+1)*rowChunk;
int[] newRow = new int[m];
}
}
为什么不在main方法中初始化
myrank
和size
。然后将它们作为分布式类构造函数的参数传递
public class Distributed {
public Distributed(int mat[][],int n,int m, int myrank, int size) {
// These two variables are now parameters of the constructor
// final int myrank = MPI.COMM_WORLD.Rank();
// final int size = MPI.COMM_WORLD.Size();
final int rows = n;
final int rowChunk = (rows+size-1)/size;
final int startRow = myrank *rowChunk;
int endRow = (myrank+1)*rowChunk;
int[] newRow = new int[m];
}
public static void main (String [] args) {
MPI.Init(args, args.length);
final int myrank = MPI.COMM_WORLD.Rank();
final int size = MPI.COMM_WORLD.Size();
Distributed d = new Distributed (..., myrank, size);
}
}