【问题标题】:Can I specify which host will have which rank in an MPI program?我可以指定哪个主机在 MPI 程序中具有哪个等级吗?
【发布时间】:2023-04-02 23:55:01
【问题描述】:

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

我想指定机器“A.univ.edu”的排名为 0,机器“B.univ.edu”的排名为 1。

有没有办法指定 MPI 中如何为主机分配等级?

【问题讨论】:

  • MPI_COMM_WORLD 中的排名分配由mpiexec 控制。 MPI 实现之间的细节略有不同,因此请参阅手册页。在两个主机的示例中,您只需在机器文件中按该顺序列出它们。

标签: parallel-processing mpi


【解决方案1】:

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

【讨论】:

  • 您知道 MPICH 的类似机制吗?
【解决方案2】:

如果所有其他方法都失败了,您始终可以使用MPI_Comm_split 创建一个新的通信器,其中您的进程都具有所需的等级。在每个进程确定了它的预期等级(例如,存储在newRank)之后,对MPI_Comm_split(MPI_COMM_WORLD, 0, newRank, newComm) 的调用将在newComm 中创建一个具有正确顺序的通信器。然后,您可以在所有通信呼叫中使用该通信器而不是 MPI_COMM_WORLD

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 2021-07-12
      • 2011-06-21
      • 1970-01-01
      相关资源
      最近更新 更多