使用Intel MPI运行osu_bw遇PMIx报错,Open MPI可正常执行求助
Intel MPI运行osu_bw报错的排查方案
报错原因分析
从日志看,核心问题是Intel MPI检测到了PMI1/2环境,但无法连接到PMIx服务器,导致启动的两个进程变成独立单例,无法组成MPI通信域。因此osu_bw检测到每个进程都是单独运行,触发"需要恰好两个进程"的错误。对比Open MPI的成功命令,主要差异点有两个:
- Open MPI显式指定了主机列表
--host node1,node2,而Intel MPI命令未指定 - 当前环境可能残留了与PMI相关的环境变量(比如Slurm或Open MPI的环境),干扰了Intel MPI的启动流程
解决步骤
1. 清理冲突环境变量
先清除可能存在的PMI/Slurm相关环境变量,避免干扰Intel MPI:
unset PMI_RANK PMI_SIZE SLURM_JOB_ID SLURM_NPROCS
之后重新运行Intel MPI命令:
mpirun -np 2 ./osu_bw
2. 显式指定主机列表
和Open MPI一样,明确指定运行进程的主机,确保进程能正确建立通信:
mpirun -np 2 --host node1,node2 ./osu_bw
如果有多个节点,也可以用主机文件:
mpirun -np 2 -hostfile hostfile.txt ./osu_bw
(hostfile.txt每行一个主机名)
3. 强制禁用PMIx/PMI适配
强制Intel MPI使用自身的启动机制,跳过PMI检测:
mpirun -np 2 -pmix=off ./osu_bw # 或者指定使用PMI2(如果环境支持) mpirun -np 2 -mpi=pmi2 ./osu_bw
4. 确认Intel MPI环境加载正确
确保当前环境只加载了Intel MPI的配置,未混入Open MPI的环境:
# 先卸载Open MPI的环境(如果之前加载过) module unload openmpi # 加载Intel MPI的环境脚本 source /data/software/install/oneapi/mpi/latest/env/vars.sh # 验证mpirun路径正确 which mpirun
内容的提问来源于stack exchange,提问作者yxy
相关产品推荐
相关产品推荐

