OpenMPI 4.1.1初始化Mellanox ConnectX-6 IB设备报错求助
问题描述
在RHEL 8系统中使用OpenMPI 4.1.1搭配Mellanox ConnectX-6(设备标识5e:00.0 [15b3:101b])InfiniBand控制器时,执行mpirun会弹出警告:
WARNING: There was an error initializing an OpenFabrics device.
警告指向本地设备mlx5_0。试过以下操作但问题未解决:
- 在
mca-btl-openib-device-params.ini文件中添加Mellanox厂商ID0x02c9 - 强制指定使用ucx作为PML组件
- 使用参数
--mca btl '^openib'可抑制警告,但担心此操作会禁用InfiniBand功能
可行解决办法
1. 用UCX替代BTL OpenIB(不会禁用IB功能)
OpenMPI 4.x版本中,UCX是官方推荐的高速网络传输框架,完全支持InfiniBand。--mca btl '^openib'只是禁用了老旧的BTL OpenIB组件,不会影响UCX调用InfiniBand。如果不想每次执行命令都加参数,可以修改配置文件永久生效:
- 编辑用户目录下的
~/.openmpi/mca-params.conf(无此文件则新建),添加:btl = ^openib pml = ucx - 若要全局生效,编辑
/etc/openmpi/mca-params.conf(需root权限)
2. 检查驱动与UCX的兼容性
- 确保Mellanox OFED驱动版本与OpenMPI 4.1.1兼容,推荐使用OFED 5.0及以上版本
- 执行
ucx_info -d,检查输出中是否包含mlx5相关设备,且状态显示为supported
3. 修正BTL OpenIB的设备参数(若需保留BTL组件)
之前填写的厂商ID错误!ConnectX-6的厂商ID为0x15b3(Mellanox官方ID),而非0x02c9。修改mca-btl-openib-device-params.ini:
- 找到对应
mlx5_0的条目,更新为:vendor_id = 0x15b3 device_id = 0x101b - 修改后重启相关进程,若为源码编译安装的OpenMPI,建议重新编译一次
4. 验证InfiniBand功能是否正常
无论采用哪种配置,都可以通过以下方式确认IB功能正常:
- 执行
mpirun -np 2 hostname,检查跨节点通信是否正常 - 使用
ib_write_bw测试IB带宽,确认性能符合预期
内容的提问来源于stack exchange,提问作者RobbieTheK
相关产品推荐
相关产品推荐

