MPI:将每个实例固定到每个节点上的某些核心
Posted
技术标签:
【中文标题】MPI:将每个实例固定到每个节点上的某些核心【英文标题】:MPI: Pin each instance to certain cores on each node 【发布时间】: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.
这是什么?我在排名文件中犯了错误吗?
【问题讨论】:
【参考方案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
选项来检查实际绑定。
【讨论】:
以上是关于MPI:将每个实例固定到每个节点上的某些核心的主要内容,如果未能解决你的问题,请参考以下文章