我正在使用 MPI 在异构计算系统上执行并行作业。我网络中的节点并不完全相同。
我想指定机器“A.univ.edu”的排名为 0,机器“B.univ.edu”的排名为 1。
有什么方法可以指定如何在 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.txt executable.exe
http://mirror.its.dal.ca/openmpi/doc/v1.5/man1/mpiexec.1.php#sect9
如果所有其他方法都失败了,您始终可以使用MPI_Comm_split
创建一个新的通信器,其中您的进程都具有所需的等级。在每个进程确定其预期等级(例如存储在 中newRank
)之后,调用MPI_Comm_split(MPI_COMM_WORLD, 0, newRank, newComm)
将创建一个newComm
具有正确顺序的通信器。然后,您可以使用该通信器,而不是MPI_COMM_WORLD
在所有通信呼叫中。
您可以使用“-rank-by node”开关。这将导致进程按照指定主机的顺序进行映射。