146  
查询码: 00000719
双机 NCCL:TCP 通、RDMA 卡住处理说明
2026年08月11日 发布 ,于 2026年08月11日 编辑

一、问题现象

双机做 NCCL / all_reduce_perf 测试时:

  • TCP 路径可以通过
  • RDMA(RoCE / IB)路径会卡住,或中途报错退出

1.1 TCP 正常时的典型配置

export NCCL_IB_DISABLE = 1
# 或
export NCCL_NET = Socket

all_reduce_perf 能正常打出带宽表。

1.2 RDMA 异常时的典型现象

export NCCL_IB_DISABLE = 0
export NCCL_NET = IB
export NCCL_IB_HCA = mlx5_2 # 按现场 HCA 名

常见表现:

  1. 打印完 Rank / GPU 信息后,停在结果表头,长时间无数据;或
  2. NCCL 日志停在 Init START / GPU Direct RDMA Enabled 附近;或
  3. 直接报错并 abort。

1.3 典型报错(有 DEBUG 时)

NCCL INFO GPU Direct RDMA Enabled for GPU ... / HCA ...
NCCL INFO Channel ... via NET/IB/0/GDRDMA
NCCL WARN Call to ibv_reg_mr_iova2 failed with error Invalid argument
...
Signal code: (-6) # 进程 abort

1.4 容易误导的“看起来正常”

以下能力正常,仍不能说明 GDR 可用

ibv_devices
ib_write_bw -d mlx5_2 -F < 对端I P > # Host 内存 RoCE 带宽可通

说明:verbs 用户态、RoCE 链路可能已通;NCCL 走 GPU Direct RDMA 仍可能失败


二、问题分析

2.1 路径对比

路径 是否依赖 GPU↔网卡 peer mem 现场结果
NCCL + TCP/Socket
通过
ib_write_bw(Host 内存)
可通过
NCCL + RDMA + GDR(注册 GPU 显存为 IB MR)
卡住 / ibv_reg_mr_iova2 失败

2.2 报错含义

ibv_reg_mr_iova2 ... Invalid argument 表示:NCCL 在做 GPU Direct RDMA 时,把 GPU 显存注册到 mlx5 RDMA 失败。

该能力依赖 Iluvatar 侧 peer memory 内核模块,其中包括:

  • itr_peer_mem_drv

2.3 最终原因(err)

宿主机未按规范安装驱动,导致 Iluvatar 驱动/CoreX 安装编译时没有把 itr_peer_mem_drv 编译出来。

因此:

  • TCP NCCL:不走 GDR → 正常
  • RDMA NCCL 一旦启用 GDR → 卡住或 ibv_reg_mr_iova2 失败

PS:只在 Ubuntu 容器里补 rdma-core / ibverbs-utils,解决的是用户态 verbs不能替代宿主机内核里的 itr_peer_mem_drv


三、解决办法

3.1 根治(必须)

按 Iluvatar 官方驱动安装文档,在宿主机重新安装/补装驱动,保证安装过程能够:

  1. 具备内核头文件等编译依赖;
  2. 成功编译并安装 itr_peer_mem_drv
  3. 开机或安装后模块可加载。

安装完成后检查(命令以现场模块名为准):

lsmod | grep -iE ' itr_peer|peer_mem '
modinfo itr_peer_mem_drv
# 或
modinfo itr_peer_mem

modinfo 找不到模块,说明仍未编进系统,需对照安装日志排查为何跳过 peer_mem 编译(缺依赖、内核不匹配、安装参数跳过等)。

3.2 修复后回归步骤

  1. 宿主机确认 itr_peer_mem_drv 已加载。
  2. 容器已挂载 /dev/infiniband,RDMA 用户态正常(ibv_devices)。
  3. 双机 ib_write_bw 通过。
  4. NCCL:
    • TCP:NCCL_IB_DISABLE=1 通过;
    • RDMA:打开 IB 后,日志中 GDR 相关步骤不再报 ibv_reg_mr_iova2 Invalid argumentall_reduce_perf 能出表。

四、小结

项目 说明
现象
双机 NCCL:TCP 通,RDMA 卡/崩
直接报错
ibv_reg_mr_iova2 / GDR 路径
根因
驱动未装好, itr_peer_mem_drv 未编译
处理
重装/补齐 Iluvatar 驱动并确认 peer_mem 模块;未修复前可 NCCL_NET_GDR_LEVEL=0 临时绕过
笔记



  目录
    天数智芯知识库系统 -V 5.2.7 -wcp