如何在openmpi 1.6.4+ rankfiles中指定物理CPU ID?

时间:2014-11-13 19:43:27

标签: mpi openmpi affinity hyperthreading

最新的(v1.8.3)OpenMPI文档指定排名文件现在必须使用hwloc报告的逻辑 cpu ID,而不是物理 ID ,请参阅Rankfiles文档herempirun部分中的最后一句:

  

从Open MPI v1.7开始,所有插槽/核心插槽位置都是   指定为逻辑索引(Open MPI v1.6系列使用物理   索引)。您可以使用HWLOC" lstopo"等工具。找到了   套接字和内核的逻辑索引。

我已经注意到这个网站上的一些问题(特别是this questionthis question的答案)表明可以通过在id前加上open而在openMPI rankfile中指定物理cpu ID一个p。例如:

rank 0=localhost slot=p0
rank 1=localhost slot=p8
rank 2=localhost slot=p1
rank 3=localhost slot=p9

要为排名0请求物理cpu标识0,为排名8请求物理cpu标识1等等。

我尝试在OpenMPI文档中搜索此语法无济于事。我也尝试让某人在OpenMPI 1.6.4中尝试以这种方式构建一个排名文件,他报告说这也不起作用。

此语法适用于哪些版本的OpenMPI?是否记录在任何地方?什么是形式语法?

1 个答案:

答案 0 :(得分:1)

感谢Hristo Iliev将我指向适当代码的方向。似乎函数hwloc_base_slot_list_parse出现在版本1.8的open-mpi代码中。

回溯代码我到达了orte_rmaps_rankfile_parse函数,该函数似乎可以追溯到版本1.3。查看此函数的历史记录,我们发现在解析插槽列表的部分中,版本1.5分支中显示以下代码段:

/* we no longer support physical mappings */
if ('P' == value[0] || 'p' == value[0]) {
    orte_show_help("help-rmaps_rank_file.txt", "not-supported", true, rankfile);
    rc = ORTE_ERR_SILENT;
    ORTE_ERROR_LOG(rc);
    goto unlock;
}

因此,我得出结论,我的问题的答案是p下面的OpenMPI版本支持1.5表示法

编辑:我还在Open MPI Users邮件列表中找到this message,这似乎支持我的调查结果。