Ubuntu下如何创建使用host文件解决MPI运行slot不足报错问题
Ubuntu下通过host文件解决MPI slot不足问题
1 创建host配置文件
- 在你运行MPI程序的工作目录下,新建名为
hostfile的纯文本文件,无需管理员权限 - 在文件内写入如下内容,可根据自身需求调整数值:
localhost slots=8 max_slots=64
- 参数说明:
slots:MPI默认识别的本机可用slot数,这里设为8匹配你机器的逻辑处理器总数max_slots:允许超配的最大slot上限,需要跑多少进程就设为大于等于对应数值即可,示例的64支持最多同时跑64个MPI进程
2 调用host文件运行MPI程序
运行不超过逻辑核数的进程(比如n=6)
直接执行如下命令即可,无需额外加参数:mpiexec --hostfile ./hostfile -n 6 ./myprogram
运行超过逻辑核数的进程(比如n=16、n=32)
搭配--oversubscribe参数开启超配:mpiexec --hostfile ./hostfile --oversubscribe -n 16 ./myprogram
3 之前参数失效的原因
- Open MPI 4.0及以上版本中,默认限制单节点最大slot数等于物理核数,单独使用
--oversubscribe参数会被默认规则拦截,必须搭配自定义host文件修改max_slots才能生效 --use-hwthread-cpus参数仅能让MPI识别逻辑核作为可用slot,最多只能覆盖到你机器的8个逻辑核,超过8的场景必须使用超配+自定义host文件的方案
4 注意事项
超配运行超过逻辑核数的MPI进程时,进程会通过CPU分时调度执行,会出现一定的性能损耗,仅适合测试场景使用,生产环境建议匹配物理核心数部署。
内容的提问来源于stack exchange,提问作者Mleendox
相关产品推荐
相关产品推荐

