2

我正在使用 MPI 在异构计算系统上执行并行作业。我网络中的节点并不完全相同。

我想指定机器“A.univ.edu”的排名为 0,机器“B.univ.edu”的排名为 1。

有什么方法可以指定如何在 MPI 中将等级分配给主机?

4

3 回答 3

4

看起来至少 OpenMPI 允许您指定排名文件

上面的例子如下

rankfile.txt:
rank 0=A.univ.edu slot=0
rank 1=B.univ.edu slot=0

mpiexec -np 2 -H A.univ.edu,B.univ.edu -rf rankfile.txt executable.exe

http://mirror.its.dal.ca/openmpi/doc/v1.5/man1/mpiexec.1.php#sect9

于 2012-09-07T18:54:49.740 回答
2

如果所有其他方法都失败了,您始终可以使用MPI_Comm_split创建一个新的通信器,其中您的进程都具有所需的等级。在每个进程确定其预期等级(例如存储在 中newRank)之后,调用MPI_Comm_split(MPI_COMM_WORLD, 0, newRank, newComm)将创建一个newComm具有正确顺序的通信器。然后,您可以使用该通信器,而不是MPI_COMM_WORLD在所有通信呼叫中。

于 2012-09-08T12:57:54.913 回答
0

您可以使用“-rank-by node”开关。这将导致进程按照指定主机的顺序进行映射。

于 2018-05-08T23:27:30.087 回答