如何在MPICH的Hydra进程管理器中实现自定义进程CPU亲和性绑定
MPICH Hydra非均匀核心绑定解决方案
方案1:使用Rankfile(兼容性最好,100%匹配预期)
Rankfile是Hydra原生支持的精确定义每个进程亲和性的方式,不受版本限制:
- 第一步:创建
rankfile.txt,写入以下内容:
rank 0=localhost binding=0,1,4,5 rank 1=localhost binding=2,6 rank 2=localhost binding=3,7
这里的核心编号对应你给出的掩码位顺序,最终生成的绑定掩码和你预期完全一致。
- 第二步:启动命令如下:
HYDRA_TOPO_DEBUG=1 mpiexec.hydra -rf rankfile.txt -n 3 MyApp
执行后即可看到符合要求的绑定输出。
方案2:多作业段分段绑定(适合MPICH 3.4及以上版本)
Hydra支持冒号分隔不同作业段,每组参数独立配置,你之前的Windows命令调整参数位置即可生效:
HYDRA_TOPO_DEBUG=1 mpiexec.hydra -n 1 --bind-to core:4 --map-by core:PE=4 MyApp : -n 2 --bind-to core:2 --map-by core:PE=2 MyApp
注意:如果核心分配顺序不符合预期,可以在全局参数位置添加--ordered-output确认进程顺序,或者调整--map-by的遍历规则。
补充说明
- Ubuntu 20.04默认源的MPICH版本为3.3.2,对分段绑定的支持存在缺陷,优先使用Rankfile方案。
- 所有参数均可通过
man mpiexec.hydra查看官方说明,搜索rankfile、cpu binding关键词即可找到对应配置项。
内容的提问来源于stack exchange,提问作者ahi
相关产品推荐
相关产品推荐

