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