MS-MPI与MPI4PY在Windows集群环境下无法正常运行求助
Windows MPI集群运行卡住问题排查方案
问题场景
局域网由1台Windows 10 Pro管理节点和3台Windows 11 Pro工作节点组成,所有节点均已安装:
- MSMPI Microsoft MPI Startup Program Version 10.1.12498.52
- MPI4PY v.3.1.5
- Python 3.11.5
测试代码mpitest.py在各节点本地运行正常:
from mpi4py import MPI comm = MPI.COMM_WORLD rank = comm.Get_rank() print("I am the process ",rank)
本地执行命令:
mpiexec python mpitest.py
但集群运行时出现异常:mpitest.py已放置在所有节点的C:\目录,仅管理节点C:\下有hosts.txt(内容为工作节点IP):
xxx.xxx.xxx.1 xxx.xxx.xxx.2 xxx.xxx.xxx.3
执行集群启动命令后,管理节点无报错、处于等待状态,未收到各节点输出:
mpiexec -machinefile hosts.txt python mpitest.py
注:节点间Ping通信正常,已关闭防火墙及防护软件。
排查步骤
1. 验证账户一致性与远程权限
MSMPI依赖Windows本地账户进行远程身份验证,需确保:
- 所有节点使用相同用户名、密码的本地账户(不可用Microsoft账户),且该账户拥有管理员权限。
- 用
psexec测试远程执行能力,比如在管理节点运行:
若无法执行,说明账户权限或远程执行服务存在问题。psexec \\xxx.xxx.xxx.1 python --version
2. 修正hosts.txt格式
- 若需要管理节点参与计算,需将管理节点的IP/主机名加入
hosts.txt;仅工作节点运行时,可在每个IP后指定进程数,比如xxx.xxx.xxx.1:1(每个节点跑1个进程)。 - 确保文件为纯文本格式(记事本保存为ANSI或UTF-8无BOM),无多余空格、换行。
3. 指定Python完整路径
集群节点的Python路径可能存在差异,执行命令时需指定完整路径,避免环境变量不一致导致的问题:
mpiexec -machinefile hosts.txt "C:\Python311\python.exe" C:\mpitest.py
4. 启用MSMPI调试日志
添加调试参数生成日志,查看远程连接细节:
mpiexec -machinefile hosts.txt -logfile mpi_debug.log python mpitest.py
查看mpi_debug.log,可定位连接失败、进程启动失败等具体原因。
5. 检查MSMPI服务状态
在所有工作节点的服务管理器中,确认Microsoft MPI Service服务已启动,且启动类型设为自动。若服务未运行,手动启动后重新测试。
6. 确认文件路径与权限一致性
- 验证所有节点的
mpitest.py确实在C:\根目录,且指定账户拥有读取、执行权限。 - 在工作节点手动执行
python C:\mpitest.py,确认本地运行无问题。
内容的提问来源于stack exchange,提问作者horus
相关产品推荐
相关产品推荐

