我正在使用MPI在异构计算系统上执行并行作业。我网络中的节点并不完全相同。
我想指定机器'A.univ.edu'的等级为0,机器'B.univ.edu'的等级为1.
有没有办法指定如何在MPI中为主机分配排名?
答案 0 :(得分: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
答案 1 :(得分:2)
如果所有其他方法都失败了,您可以随时使用MPI_Comm_split
创建一个新的通信器,您的进程都具有所需的排名。在每个进程确定了其预期排名(存储在newRank
中)之后,对MPI_Comm_split(MPI_COMM_WORLD, 0, newRank, newComm)
的调用将在newComm
中创建具有正确排序的通信器。然后,您可以在所有通信呼叫中使用该通信器而不是MPI_COMM_WORLD
。
答案 2 :(得分:0)
您可以使用" -rank-by节点"开关。这将导致按指定主机的顺序映射进程。