我可以指定哪个主机在MPI程序中具有哪个等级?

时间:2012-09-07 14:07:53

标签: parallel-processing mpi

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

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

有没有办法指定如何在MPI中为主机分配排名?

3 个答案:

答案 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节点"开关。这将导致按指定主机的顺序映射进程。