mpirun本地运行正常但跨多主机执行时无报错挂起问题求助
MPIRUN跨机运行无报错挂起问题
本地运行mpirun完全正常,但跨多台机器运行时无明确报错直接挂起。
执行命令及输出
#mpirun -d -v --hostfile hosts -np 2 ./outputfile [node01:182941] procdir: /tmp/ompi.node01.1002/pid.182941/0/0 [node01:182941] jobdir: /tmp/ompi.node01.1002/pid.182941/0 [node01:182941] top: /tmp/ompi.node01.1002/pid.182941 [node01:182941] top: /tmp/ompi.node01.1002 [node01:182941] tmp: /tmp [node01:182941] sess_dir_cleanup: job session dir does not exist [node01:182941] sess_dir_cleanup: top session dir not empty - leaving [node01:182941] procdir: /tmp/ompi.node01.1002/pid.182941/0/0 [node01:182941] jobdir: /tmp/ompi.node01.1002/pid.182941/0 [node01:182941] top: /tmp/ompi.node01.1002/pid.182941 [node01:182941] top: /tmp/ompi.node01.1002 [node01:182941] tmp: /tmp
hosts文件内容
127.0.0.1 localhost 10.0.0.10 node02
已完成的检查
防火墙状态
#sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain InstanceServices (0 references) target prot opt source destination
#sudo ufw status Status: inactive
SSH免密登录
已确认节点间免密SSH配置正常,执行ssh node02可成功登录:
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-1021-oracle aarch64)
排查及解决建议
- 补全hosts映射:确保所有节点的hosts文件中都包含彼此的主机名与IP映射,比如node02的hosts里需要添加node01的IP映射,否则MPI节点间无法互相解析。
- 统一MPI版本:检查所有节点的OpenMPI版本是否完全一致,版本不匹配会导致通信异常。执行
mpirun --version对比各节点输出。 - 显式指定通信网卡:在mpirun命令中添加
--mca btl_tcp_if_include 10.0.0.0/24(根据实际子网调整),强制MPI使用集群内网网卡通信,避免误用到回环接口。 - 验证文件一致性:确认
./outputfile在所有节点的相同路径下存在,且权限一致,可通过ssh node02 ls -l ./outputfile验证。 - 开启深度调试:添加
--mca btl_base_verbose 100参数运行mpirun,获取底层通信日志,定位挂起的具体环节。 - 检查SELinux状态:执行
sestatus查看SELinux是否开启,若开启可临时执行setenforce 0关闭后测试,排除安全策略限制。
内容的提问来源于stack exchange,提问作者badr
相关产品推荐
相关产品推荐

