Parallel processing 我可以指定哪个主机在MPI程序中具有哪个级别吗?

Parallel processing 我可以指定哪个主机在MPI程序中具有哪个级别吗?,parallel-processing,mpi,Parallel Processing,Mpi,我使用MPI在异构计算系统上执行并行作业。我的网络中的节点并不完全相同 我想指定机器“A.univ.edu”的等级为0,机器“B.univ.edu”的等级为1 有没有办法指定如何在MPI中将列组分配给主机?看起来至少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.

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

我想指定机器“A.univ.edu”的等级为0,机器“B.univ.edu”的等级为1


有没有办法指定如何在MPI中将列组分配给主机?

看起来至少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

如果所有其他操作都失败,您可以始终使用
MPI\u Comm\u split
创建一个新的通信器,其中您的所有进程都具有所需的级别。在每个进程确定了它的预期等级(存储在,比如,
newRank
)之后,调用
MPI\u Comm\u split(MPI\u Comm\u WORLD,0,newRank,newComm)
将在
newComm
中以正确的顺序创建一个通信器。然后,您可以在所有通信呼叫中使用该通信器,而不是
MPI\u COMM\u WORLD

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

MPI\u COMM\u WORLD中的秩分配由
mpiexec
控制。MPI实现之间的细节略有不同,因此请参阅手册页。在两台主机的示例中,您只需在machinefile中按该顺序列出它们。您知道MPICH有类似的机制吗?