gpt4 book ai didi

java - 在java中的main之外初始化MPI

转载 作者:行者123 更新时间:2023-12-02 01:03:46 26 4
gpt4 key购买 nike

我正在尝试在 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);
}
}

关于java - 在java中的main之外初始化MPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57750233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com