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 的系统上解决问题。 之后你需要configuremake install

【讨论】:

我已经尝试过--map-by node bind-to core,但它仍然给出了同样的错误。我会在安装您提到的库后提供反馈。 我如何绑定多个核心以获得一个等级?

以上是关于OpenMPI 进程亲和性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenMPI 编程运行 SocWatch?

OpenMPI:所有节点都作为节点 0 运行

OpenMPI源码剖析3:

编译并运行 OpenMPI 程序

OpenMPI 中的动态节点

是否可以在本地计算机和远程集群上运行 OpenMPI?