繁体   English   中英

在Java中的main外部初始化MPI

[英]Initializing MPI outside of main in java

我试图在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 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];
           }
}

为什么不在您的主要方法中初始化myranksize 然后将它们作为您的Distributed类构造函数的参数传递?

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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM