You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mpi4py集群测试脚本执行结果异常,如何解决?

问题描述

使用mpi4py搭建MPI集群时,运行基础测试脚本得到异常结果,预期效果为C语言MPI脚本的执行结果。

测试代码

from mpi4py import MPI

world_comm = MPI.COMM_WORLD
world_size = world_comm.Get_size()
name = MPI.Get_processor_name()
my_rank = world_comm.Get_rank()

print('World Size: {0} | Name: {1} | Rank: {2}'.format(world_size,name,my_rank))

hostfile配置

no02   slots=3 
no01   slots=5
排查与解决步骤
  1. 检查MPI启动命令
    启动mpi4py脚本时必须正确指定hostfile,使用类似命令:

    mpirun --hostfile hostfile -n 8 python your_script.py
    

    注意-n指定的总进程数不能超过hostfile中所有slots总和(此处为3+5=8),若进程数小于总和,MPI会按节点顺序分配进程。

  2. 验证节点环境一致性

    • 确保所有节点能无密码SSH互访,执行ssh no01、ssh no02测试连通性。
    • 所有节点的MPI版本、mpi4py版本必须完全一致,执行以下命令验证:
      mpirun --hostfile hostfile which mpirun
      mpirun --hostfile hostfile python -c "import mpi4py; print(mpi4py.__version__)"
      
      若输出不一致,需在所有节点重装相同版本的MPI和mpi4py。
  3. 修复输出同步问题
    mpi4py的print可能因缓冲区未刷新导致显示错乱,修改代码强制刷新输出:

    from mpi4py import MPI
    
    world_comm = MPI.COMM_WORLD
    world_size = world_comm.Get_size()
    name = MPI.Get_processor_name()
    my_rank = world_comm.Get_rank()
    
    print('World Size: {0} | Name: {1} | Rank: {2}'.format(world_size,name,my_rank), flush=True)
    
  4. 确认hostfile格式正确性
    确保hostfile每行格式为主机名 slots=可用进程数,无多余空格或特殊字符,且主机名能被正确解析(执行ping no01、ping no02验证)。

  5. 测试集群基础功能
    先运行C语言MPI基础测试(比如mpirun --hostfile hostfile -n 8 hostname),确认集群本身工作正常后,再测试mpi4py脚本,排除集群基础环境问题。

内容的提问来源于stack exchange,提问作者Matheus William

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:31:02