Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

nccl-multi-node

多机 NCCL 通信性能测试 (2×8 RTX PRO 5000 + ConnectX-7 HDR IB)

硬件环境

节点 GPU IB 互联
server1 (10.10.3.25) 8× RTX PRO 5000 Blackwell (48GB, CC 12.0) 2× ConnectX-7 HDR 200G 直连 server2
server2 (10.10.3.26) 8× RTX PRO 5000 Blackwell (48GB, CC 12.0) 2× ConnectX-7 HDR 200G 直连 server1
  • 无 NVLink: 全 PCIe P2P (PIX/PXB)
  • 软件: CUDA 13.0, NCCL 2.28.9, MLNX OFED 24.10, OpenMPI 4.1.7, 驱动 580.105.08

详细拓扑见 docs/topology.md

测试结果

all_reduce (16 GPU, 2 节点, 2026-08-07)

配置 IB 端口 busbw (8G峰值) Avg busbw #wrong GDR
单口 mlx5_0 1× HDR 200G 30.60 GB/s 26.78 GB/s 0 GDR 1 [RO]
单口 mlx5_1 1× HDR 200G 30.35 GB/s 26.72 GB/s 0 GDR 1 [RO]
双口 2× HDR 200G 21.04 GB/s 20.40 GB/s 0 GDR 1 [RO]

all_gather (16 GPU, 2 节点, 2026-08-07)

配置 IB 端口 busbw (8G峰值) Avg busbw #wrong
单口 mlx5_0 1× HDR 200G 20.46 GB/s 19.94 GB/s 0
单口 mlx5_1 1× HDR 200G 20.56 GB/s 19.99 GB/s 0
双口 2× HDR 200G 20.88 GB/s 20.14 GB/s 0

alltoall (16 GPU, 2 节点, 2026-08-07)

配置 IB 端口 busbw (8G峰值) Avg busbw #wrong
单口 mlx5_0 1× HDR 200G 4.89 GB/s 4.87 GB/s 0
单口 mlx5_1 1× HDR 200G 4.97 GB/s 4.92 GB/s 0
双口 2× HDR 200G 4.69 GB/s 4.67 GB/s 0

400G NDR 单口测试 (mlx5_0, 固件升级后)

配置 固件 busbw (8G峰值) Avg busbw 说明
mlx5_0 400G (升级前 28.43.3608) 28.43.3608 ~20.4 GB/s ~20.2 比 mlx5_2 200G 慢
mlx5_0 400G (升级后 28.49.1014) 28.49.1014 待测 待测 升级后需重测

⚠️ 400G 口实测反而比 200G 口慢 (20 vs 30 GB/s), 原因:

  • 400G 口 (PCI 16:00.0, board 838) 和 200G 口 (PCI 37:00.x, board 834) 虽然到 GPU 都是 NODE
  • 但 board 838 是不同型号 (MCX75310AAS-NEA, OSFP), 可能 PCIe 适配/GPUDirect 路径不同
  • 固件升级后需重测验证是否改善

最新拓扑总结 (2026-08-08)

每台 4 张 IB 卡:

  • mlx5_0: ConnectX-7 (MCX75310AAS-NEA), 400G NDR, IB 模式, 接线 ✅
  • mlx5_1: ConnectX-7 (MCX755106AS-HEA), 200G, IB 模式, 未接线 ❌
  • mlx5_2: ConnectX-7 (MCX755106AS-HEA), 200G HDR, IB 模式, 接线 ✅
  • mlx5_3: ConnectX-6 (MCX653105A-HDA), 200G HDR, IB 模式, 接线 ✅ (NUMA=1, 到GPU是SYS)

ConnectX-7 固件全部统一: 28.49.1014 (2026-06 GA)

综合分析

all_reduce: 单口最优 (30.6 GB/s), 双口降速 30% all_gather: 三种配置接近 (~20.5 GB/s), 双口略优但不显著 alltoall: 单口最优 (~4.9 GB/s), 双口降速 5%; alltoall 带宽远低于其他操作 (多对多通信开销大)

关键发现:

  • 两个单口性能一致 (mlx5_0 ≈ mlx5_1), 接近单口 HDR 200G 理论极限
  • 双口对 all_reduce/alltoall 反而更慢: 两张 ConnectX-7 共享同一 PCIe root (0000:36), 双口同时传输时 PCIe 带宽争用 + NCCL 调度开销增加
  • all_gather 三种配置差异最小 (20-21 GB/s), 因其通信模式更适合双口负载均衡
  • 建议: 生产环境用单口 mlx5_0 即可, 双口无收益反而降速
  • GDR 状态: [RO] (Read Only) — RTX PRO 5000 非数据中心卡, PCIe GDR 只支持 read
  • libgdrapi + nvidia-peermem + gdrdrv 均正常加载

目录结构

nccl-multi-node/
├── README.md                       # 本文件
├── docs/
│   ├── topology.md                 # 完整硬件拓扑 (GPU/IB/PCIe/NUMA)
│   └── setup-guide.md              # 环境配置记录 (IB/GDRCopy/opensm/SSH免密)
├── scripts/
│   ├── run_all_reduce_port1.sh     # 单口 mlx5_0 测试
│   ├── run_all_reduce_port2.sh     # 单口 mlx5_1 测试
│   └── run_all_reduce_dual.sh      # 双口测试
└── results/
    ├── single_port1/               # mlx5_0 结果
    ├── single_port2/               # mlx5_1 结果
    └── dual_port/                  # 双口结果

运行测试

# 在 server1 (10.10.3.25) 上执行
bash scripts/run_all_reduce_port1.sh   # 单口1
bash scripts/run_all_reduce_port2.sh   # 单口2
bash scripts/run_all_reduce_dual.sh    # 双口

关键配置说明

  • NCCL_IB_HCA: 指定使用的 IB 端口 (mlx5_0:1 / mlx5_1:1)
  • NCCL_SOCKET_IFNAME=ibs19f0: NCCL bootstrap 走第一个 IPoIB 接口
  • NCCL_P2P_LEVEL=SYS: 跨 NUMA P2P 走系统内存中转
  • NCCL_MIN_NCHANNELS=64: 强制最少 64 channel
  • NCCL_GDRCOPY_ENABLE=1: 启用 GDRCopy (GPU↔IB 直通)

详细配置过程见 docs/setup-guide.md

About

Multi-node NCCL communication benchmark (2x8 RTX PRO 5000 + ConnectX-7 HDR IB)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages