OpenMPI 进程亲和性
Posted
技术标签:
【中文标题】OpenMPI 进程亲和性【英文标题】:OpenMPI process affinity 【发布时间】:2018-05-08 11:41:06 【问题描述】:当我执行mpirun --map-by node --bind-to numa --report-bindings ./out 26
时,--bind-to
选项会导致以下错误:
在 Linux 上,缺少该功能可能意味着您处于 Linux 中不支持处理器和内存关联的平台 本身,或者 hwloc 是在没有 NUMA 和/或处理器关联的情况下构建的 支持。构建 hwloc 时(取决于您的 Open MPI 安装,可能嵌入在 Open MPI 本身中),重要的是 有可用的 libnuma 头文件和库文件。不一样的linux 发行版将这些文件打包成不同的名称;寻找 包含“numa”字样的包装。您可能还需要开发人员 包的版本(例如,名称中带有“dev”或“devel”) 获取相关头文件。
ompi_info | grep hwloc
显示:
MCA hwloc:hwloc1117(MCA v2.1.0,API v2.0.0,组件 v3.0.0)MCA
rtc: hwloc (MCA v2.1.0, API v1.0.0, 组件 v3.0.0)
所以我猜想进程亲和性是受支持的。我有 26 个双核节点,我只想每个节点使用 1 个 CPU。为什么我不能绑定进程?
【问题讨论】:
【参考方案1】:你确定 Open MPI 不能绑定进程吗?
请注意,您的命令行会尝试将 MPI 进程绑定到 NUMA 域(大多数情况下是套接字)。如果你想绑定到一个核心,那么
mpirun -bind-to core ...
为了检查进程绑定
mpirun -report-bindings ...
由于缺少库,您可能可以设置进程关联,但不能设置内存关联。
sudo yum install -y numactl-devel
应该在基于 RedHat 的系统上解决问题。
之后你需要configure
和make install
。
【讨论】:
我已经尝试过--map-by node bind-to core
,但它仍然给出了同样的错误。我会在安装您提到的库后提供反馈。
我如何绑定多个核心以获得一个等级?以上是关于OpenMPI 进程亲和性的主要内容,如果未能解决你的问题,请参考以下文章