【问题标题】:MPI: Pin each instance to certain cores on each nodeMPI:将每个实例固定到每个节点上的某些核心
【发布时间】:2018-05-19 12:45:57
【问题描述】:

我想用 OpenMPI 2.11 执行我的程序的几个实例。每个实例都在我的集群上自己的节点 (-N 1) 上运行。这工作正常。我现在想将每个程序实例固定到其节点的前 2 个内核。为此,看起来我需要使用排名文件。这是我的排名文件:

rank 0=+n0 slot=0-1 
rank 1=+n1 slot=0-1

在我看来,这应该将每个程序实例限制在它运行的本地机器的核心 0 和 1 上。 我像这样执行 mpirun:

mpirun -np 2 -N 1 -rf /my/rank/file my_program

但是 mpirun 甚至没有执行我的程序就失败并出现此错误:

Conflicting directives for mapping policy are causing the policy
to be redefined:

  New policy:   RANK_FILE
  Prior policy:  UNKNOWN

Please check that only one policy is defined.

这是什么?我在排名文件中犯了错误吗?

【问题讨论】:

    标签: mpi cluster-computing openmpi


    【解决方案1】:

    不使用排名文件,只需使用主机文件:

    n0 slots=n max_slots=n
    n1 slots=n max_slots=n
    

    然后告诉 Open MPI 为每个节点映射一个进程,每个进程使用两个内核:

    mpiexec --hostfile hostfile --map-by ppr:1:node:PE=2 --bind-to core ...
    

    ppr:1:node:PE=2 读作:每个资源 1 个进程;资源类型为节点;每个进程 2 个处理元素。您可以通过添加--report-bindings 选项来检查实际绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-29
      • 2018-10-29
      • 2017-06-29
      • 2015-01-26
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2018-10-20
      相关资源
      最近更新 更多