Open MPI进程确定性绑定NUMA节点核心及超订绑定技术问询
问题1:24进程一核一进程绑定方案
你遇到的There are not enough slots available in the system错误,是因为Open MPI默认的进程槽位(slot)配置未正确识别24个可用核心,以下两种方案可解决:
方案1:手动指定本地槽位数
直接告知Open MPI本地有24个可用槽位,同时绑定到单个核心:
mpirun -n 24 --host localhost:24 --bind-to core --report-bindings ./app
--host localhost:24:强制指定本地主机的可用槽位数为24,匹配核心总数--bind-to core:将每个进程严格绑定到独立核心--report-bindings:输出绑定结果,验证每个rank对应唯一核心
方案2:按核心映射并绑定
通过--map-by core让Open MPI自动按核心分配进程,再绑定到对应核心:
mpirun -n 24 --map-by core --bind-to core --report-bindings ./app
该命令会自动将每个进程映射到单独核心,无需手动指定槽位数,确保绑定关系严格对应。
问题2:超订27进程的确定性绑定方案
要实现额外3个进程每次都绑定到相同核心,需用rankfile精确指定每个进程的绑定目标:
步骤1:创建rankfile
先通过lscpu查看核心编号(比如选定核心0、1、2作为固定复用核心),创建名为my_rankfile的文件,内容示例:
rank 0=localhost slot=0 rank 1=localhost slot=1 rank 2=localhost slot=2 ... rank 23=localhost slot=23 rank 24=localhost slot=0 rank 25=localhost slot=1 rank 26=localhost slot=2
- 前24条(rank0~23)对应24个核心各分配一个进程
- 后3条(rank24~26)指定额外进程绑定到固定核心(可根据需求替换为目标核心编号)
步骤2:运行进程
使用rankfile启动进程,同时允许超订:
mpirun -n 27 --rankfile ./my_rankfile --report-bindings --oversubscribe ./app
--rankfile:加载自定义绑定配置文件--oversubscribe:允许单核心绑定多个进程(超订场景必须)--report-bindings:验证绑定结果,确认额外进程每次都绑定到指定核心
内容的提问来源于stack exchange,提问作者Yicheng Li
相关产品推荐
相关产品推荐

