🚀 当 InfiniBand 也不够快:GB200 MNNVL 实测带宽提升 10 倍

gb200-nvl72-nccl-test.jpeg

在上一篇 告别 TCP/IP 延迟:Kubernetes 中的 RDMA 高性能网络实战 中,我们介绍了如何在 Kubernetes 中启用 RDMA(InfiniBand)能力,实现了相比 TCP/IP 延迟降低 20-40 倍、带宽提升 40 倍以上的效果。然而在超大规模 AI 训练场景下,即便是 InfiniBand 的带宽也可能成为瓶颈——当 GPU 间需要频繁同步梯度时,跨节点通信效率直接决定了整体训练吞吐。那么,有没有比 InfiniBand 更高效的多节点互联方案?答案是 MNNVL(Multi-Node NVLink)

GB200 NVL72 是 NVIDIA 推出的超级系统,专为大规模 AI 训练和推理设计。完整一柜 GB200 NVL72 系统包含 72 个 GB200 GPU + 36 个 Grace CPU,通过第五代 NVLink 高速互连。本文测试的是其中的 2 个节点子集(每节点 4 个 GB200 + 2 个 Grace,共 8 个 GPU),主要关注不同互联方案在多节点场景下的带宽差异。

MNNVL(Multi-Node NVLink) 是 GB200 NVL72 的核心创新特性,它通过 NVLink 实现跨节点 GPU 直连,让多节点 GPU 集群的性能接近单节点。与传统的 InfiniBand 网络相比,MNNVL 具有以下优势(支持 MNNVL 的 NCCL 版本通常会优先选择该通道,也可通过 NCCL_MNNVL_ENABLE=1 显式开启或确认使用):

  • 超低延迟:GPU 之间直接通信,绕过网络协议栈,延迟极低
  • 超高带宽:实测带宽可达 811GB/s,远超传统网络方案
  • 无缝集成:NCCL 自动识别并优先使用 MNNVL,无需额外配置

在实际生产环境中,我们需要了解不同网络方案的性能差异,以便在混合集群、容错场景或特定拓扑下做出最优选择。本文通过 2 节点 8 GPU 的 NCCL micro-benchmark 实测数据 对比 MNNVL、InfiniBand 和 TCP 以太网的性能表现,为 AI 训练集群的网络选型提供参考(并非完整业务训练 benchmark)。


核心亮点:2 节点 8 GPU 配置下,MNNVL 实测带宽 811GB/s,InfiniBand 为 85GB/s性能提升 9.5 倍!实测数据证明 MNNVL 是 GB200 NVL72 多节点通信的最佳选择。

测试结果概览

连接方式带宽性能倍数说明
MNNVL811GB/s9.5x跨节点 GPU 直连,性能最优 ✅
InfiniBand (400G)85GB/s1x传统网络方案,性能中等 ⚠️
TCP 以太网2GB/s0.02x普通网络,性能最低 ❌

说明:上表中的带宽数值均来自 nccl-tests 输出的 Bus bandwidth(busbw) 指标,是 NCCL 对整体通信效率的“等效总线带宽”度量,并不等同于单条物理链路的单向线速。

关键发现

  • 🚀 MNNVL 性能是 IB 的 9.5 倍(811GB/s ÷ 85GB/s ≈ 9.5)
  • 🚀 MNNVL 性能是 TCP 的 405 倍(811GB/s ÷ 2GB/s ≈ 405)
  • 🚀 通信时间减少 89%(从 IB 的 9.5 倍时间降到 1 倍时间)

1. 🖥️ 环境说明

1.1 硬件配置

  • 系统:GB200 NVL72(一柜系统中的 2 节点子集)
  • 节点数量:2 个节点
  • 每个节点配置
    • GPU:4 个 GB200 GPU(本次测试共 8 个 GPU)
    • GPU 显存:每个 GPU 192GB(189471 MiB)
    • CPU:2 个 Grace CPU
    • 网络:1 张 400G InfiniBand 网卡(用于对比测试)
  • 节点间连接
    • MNNVL:通过 Multi-Node NVLink 实现跨节点 GPU 直连
    • InfiniBand:单 400G 网卡作为对比测试

1.2 软件环境

  • 操作系统:Linux
  • CUDA 版本:13.0
  • 驱动版本:580.95.05
  • 测试工具:nccl-tests

1.3 GPU 信息

GPU 基本信息:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
root@GB200-POD2-F06-Node05:~/lixd/nccl-demo# nvidia-smi
Wed Dec 10 10:24:44 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.95.05              Driver Version: 580.95.05      CUDA Version: 13.0     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GB200                   On  |   00000008:01:00.0 Off |                    0 |
| N/A   37C    P0            169W / 1200W |       0MiB / 189471MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   1  NVIDIA GB200                   On  |   00000009:01:00.0 Off |                    0 |
| N/A   37C    P0            157W / 1200W |       0MiB / 189471MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   2  NVIDIA GB200                   On  |   00000018:01:00.0 Off |                    0 |
| N/A   38C    P0            158W / 1200W |       0MiB / 189471MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   3  NVIDIA GB200                   On  |   00000019:01:00.0 Off |                    0 |
| N/A   37C    P0            166W / 1200W |       0MiB / 189471MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

GPU 拓扑:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
root@GB200-POD2-F06-Node05:~/lixd/nccl-demo# nvidia-smi topo -m
	GPU0	GPU1	GPU2	GPU3	NIC0	NIC1	NIC2	NIC3	NIC4	NIC5	NIC6	NIC7	CPU Affinity	NUMA Affinity	GPU NUMA ID
GPU0	 X 	NV18	NV18	NV18	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	0-71	0,2-17		N/A
GPU1	NV18	 X 	NV18	NV18	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	0-71	0,2-17		N/A
GPU2	NV18	NV18	 X 	NV18	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	72-143	1,18-33		N/A
GPU3	NV18	NV18	NV18	 X 	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	72-143	1,18-33		N/A
NIC0	SYS	SYS	SYS	SYS	 X 	SYS	SYS	SYS	SYS	SYS	SYS	SYS
NIC1	SYS	SYS	SYS	SYS	SYS	 X 	SYS	SYS	SYS	SYS	SYS	SYS
NIC2	SYS	SYS	SYS	SYS	SYS	SYS	 X 	PIX	SYS	SYS	SYS	SYS
NIC3	SYS	SYS	SYS	SYS	SYS	SYS	PIX	 X 	SYS	SYS	SYS	SYS
NIC4	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	 X 	SYS	SYS	SYS
NIC5	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	 X 	SYS	SYS
NIC6	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	 X 	PIX
NIC7	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	PIX	 X

Legend:

  X    = Self
  SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
  NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
  PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
  PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
  PIX  = Connection traversing at most a single PCIe bridge
  NV#  = Connection traversing a bonded set of # NVLinks

NIC Legend:

  NIC0: mlx5_0
  NIC1: mlx5_1
  NIC2: mlx5_2
  NIC3: mlx5_3
  NIC4: mlx5_4
  NIC5: mlx5_5
  NIC6: mlx5_6
  NIC7: mlx5_7

2. 🔧 安装 nccl-tests 环境

⚠️ 重要提示:需要在所有待测试节点安装环境,同时安装目录要保持一致。

nccl-tests 包含一系列测试项目,主要用于测试和验证 NCCL 的性能以及操作正确性。

These tests check both the performance and the correctness of NCCL operations.

2.1 OpenMPI-5.0.9

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 下载解压
wget https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.9.tar.gz
tar -zxvf openmpi-5.0.9.tar.gz

# 编译安装
pushd openmpi-5.0.9
./configure --prefix=/usr/local/openmpi
make -j$(nproc)
make install
popd

参数说明:

  • --prefix=/usr/local/openmpi:指定 MPI 安装位置为 /usr/local/openmpi

2.2 NCCL

1
2
3
4
5
6
# clone 源码
git clone https://github.com/NVIDIA/nccl.git
# 编译安装
pushd nccl
make -j$(nproc) src.build CUDA_HOME=/cm/shared/apps/cuda13.0/toolkit/13.0/
popd

参数说明:

  • CUDA_HOME:CUDA 安装位置

注意:需要记录下这里的 nccl 文件夹路径,make 之后会在 nccl 目录下生成 build 目录,后续编译 nccl-tests 的时候会用到该目录。

2.3 nccl-tests

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# clone 代码
git clone https://github.com/NVIDIA/nccl-tests.git

# 编译安装
pushd nccl-tests
make MPI=1 NAME_SUFFIX=_mpi \
  MPI_HOME=/usr/local/openmpi \
  CUDA_HOME=/cm/shared/apps/cuda13.0/toolkit/13.0 \
  NCCL_HOME=/root/lixd/inference/nccl-demo/nccl/build/
popd

参数说明:

  • MPI=1:开启 MPI

  • NAME_SUFFIX=_mpi:编译产物带上 _mpi 后缀,便于区分

  • CUDA_HOME:CUDA 安装位置

  • MPI_HOME:上一步编译 OpenMPI 的位置

  • NCCL_HOME:上一步 nccl build 的目录,就是 nccl 源码目录增加 /build

构建完成后,会在 build 目录下生成可执行文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
root@GB200-POD2-F06-Node05:~# ll -lhS /root/lixd/inference/nccl-demo/nccl-tests/build/
total 316M
-rwxr-xr-x 1 root root  35M Nov 19 07:32 all_reduce_perf_mpi*
-rwxr-xr-x 1 root root  35M Nov 19 07:33 alltoall_perf_mpi*
-rwxr-xr-x 1 root root  30M Nov 19 07:33 hypercube_perf_mpi*
-rwxr-xr-x 1 root root  30M Nov 19 07:33 sendrecv_perf_mpi*
-rwxr-xr-x 1 root root  30M Nov 19 07:33 gather_perf_mpi*
-rwxr-xr-x 1 root root  30M Nov 19 07:33 scatter_perf_mpi*
-rwxr-xr-x 1 root root  30M Nov 19 07:32 reduce_scatter_perf_mpi*
-rwxr-xr-x 1 root root  30M Nov 19 07:32 reduce_perf_mpi*
-rwxr-xr-x 1 root root  30M Nov 19 07:32 broadcast_perf_mpi*
-rwxr-xr-x 1 root root  30M Nov 19 07:32 all_gather_perf_mpi*
-rw-r--r-- 1 root root 6.1M Nov 19 07:32 all_reduce.o
-rw-r--r-- 1 root root 5.9M Nov 19 07:33 alltoall.o
-rw-r--r-- 1 root root 170K Nov 19 07:33 hypercube.o
-rw-r--r-- 1 root root 167K Nov 19 07:33 sendrecv.o
-rw-r--r-- 1 root root 161K Nov 19 07:33 gather.o
-rw-r--r-- 1 root root 158K Nov 19 07:33 scatter.o
-rw-r--r-- 1 root root 157K Nov 19 07:32 reduce_scatter.o
-rw-r--r-- 1 root root 157K Nov 19 07:32 reduce.o
-rw-r--r-- 1 root root 155K Nov 19 07:32 broadcast.o
-rw-r--r-- 1 root root 151K Nov 19 07:32 all_gather.o
-rw-r--r-- 1 root root  22K Nov 19 07:28 timer.o

3. 🚀 开始测试

3.1 配置环境变量

1
2
3
4
5
export CUDA_HOME=/cm/shared/apps/cuda13.0/toolkit/13.0
export MPI_HOME=/usr/local/openmpi
export NCCL_HOME=/root/lixd/inference/nccl-demo/nccl/build/
export PATH=$CUDA_HOME/bin:$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$NCCL_HOME/lib:$CUDA_HOME/lib64:$LD_LIBRARY_PATH

3.2 运行测试命令

注意:以下是一个示例命令,实际测试中根据场景调整参数(如 -g 参数)。

1
2
3
4
5
6
7
8
mpirun --allow-run-as-root \
   -x NCCL_DEBUG=INFO \
   -x PATH -x LD_LIBRARY_PATH \
   -x CUDA_HOME -x MPI_HOME -x NCCL_HOME \
   -np 2 \
   -H 10.0.6.41:1,10.0.6.42:1 \
   /root/lixd/inference/nccl-demo/nccl-tests/build/all_reduce_perf_mpi \
   -b 16G -e 16G -f 2 -g 4 -c 1 -i 100

ENV 相关参数

  • -x NCCL_DEBUG=INFO:把环境变量 NCCL_DEBUG=INFO 随进程一起下发,使 NCCL 打印初始化、网络选择、通道等调试信息。

  • -x PATH:将当前 shell 的 PATH 原样传递到远端进程,保证可执行文件能被找到。

  • -x LD_LIBRARY_PATH:同样传递动态库搜索路径,避免远端节点找不到 CUDA/OpenMPI/NCCL 的 .so 文件。

  • -x CUDA_HOME -x MPI_HOME -x NCCL_HOME:同上,传递 CUDA、MPI、NCCL home 目录

  • -np 2:进程数为 2

  • -H 10.0.6.41:1,10.0.6.42:1:指定节点列表,这里控制哪台机器跑几个进程。

测试相关参数

  • -b 16G:最小消息 16GB(示例命令中使用)

  • -e 16G:最大消息 16GB(示例命令中使用)

  • -f 2:每次测试数据量按照 2 倍递增

  • -g 4:每个 MPI 进程使用的 GPU 数量,当前是 4 GPU

    • 总 GPU 数 = 进程数 × 每个进程 GPU 数 = 2 × 4 = 8
  • -c 1:使用 1 个通信通道

  • -i 100:warm-up 后跑 100 次取平均

4. 📊 测试结果对比

4.1 MNNVL 测试结果

通过显式启用 NCCL_MNNVL_ENABLE=1NCCL_IMEX_ENABLE=1,指定 NCCL 使用 MNNVL 进行跨节点通信。

测试命令

1
2
3
4
5
6
7
mpirun --allow-run-as-root \
   -x PATH -x LD_LIBRARY_PATH \
   -x CUDA_HOME -x MPI_HOME -x NCCL_HOME \
   -x NCCL_MNNVL_ENABLE=1 -x NCCL_IMEX_ENABLE=1 \
   -H $node1:4,$node2:4 \
   /opt/nccl-tests/build/all_reduce_perf_mpi \
   -b 16G -e 16G -f 2 -g 1 -c 1 -i 100

测试结果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
root@nccl-test-2nsk2:/workspace# mpirun --allow-run-as-root \
   -x PATH -x LD_LIBRARY_PATH \
   -x CUDA_HOME -x MPI_HOME -x NCCL_HOME \
   -x NCCL_MNNVL_ENABLE=1 -x NCCL_IMEX_ENABLE=1 \
   -H $node1:4,$node2:4 \
   /opt/nccl-tests/build/all_reduce_perf_mpi \
   -b 16G -e 16G -f 2 -g 1 -c 1 -i 100
Warning: Permanently added '172.25.114.45' (ED25519) to the list of known hosts.
# nccl-tests version 2.17.6 nccl-headers=22809 nccl-library=22809
# Collective test starting: all_reduce_perf_mpi
# nThread 1 nGpus 1 minBytes 17179869184 maxBytes 17179869184 step: 2(factor) warmup iters: 1 iters: 20 agg iters: 1 validation: 1 graph: 0
#
# Using devices
#  Rank  0 Group  0 Pid    740 on nccl-test-2nsk2 device  0 [0008:01:00] NVIDIA GB200
#  Rank  1 Group  0 Pid    741 on nccl-test-2nsk2 device  1 [0009:01:00] NVIDIA GB200
#  Rank  2 Group  0 Pid    742 on nccl-test-2nsk2 device  2 [0018:01:00] NVIDIA GB200
#  Rank  3 Group  0 Pid    743 on nccl-test-2nsk2 device  3 [0019:01:00] NVIDIA GB200
#  Rank  4 Group  0 Pid   1167 on nccl-test-hw5qh device  0 [0008:01:00] NVIDIA GB200
#  Rank  5 Group  0 Pid   1168 on nccl-test-hw5qh device  1 [0009:01:00] NVIDIA GB200
#  Rank  6 Group  0 Pid   1170 on nccl-test-hw5qh device  2 [0018:01:00] NVIDIA GB200
#  Rank  7 Group  0 Pid   1169 on nccl-test-hw5qh device  3 [0019:01:00] NVIDIA GB200
#
#                                                              out-of-place                       in-place
#       size         count      type   redop    root     time   algbw   busbw  #wrong     time   algbw   busbw  #wrong
#        (B)    (elements)                               (us)  (GB/s)  (GB/s)             (us)  (GB/s)  (GB/s)
 17179869184    4294967296     float     sum      -1  37038.7  463.84  811.71       0  37101.0  463.06  810.35       0
# Out of bounds values : 0 OK
# Avg bus bandwidth    : 811.031
#
# Collective test concluded: all_reduce_perf_mpi

性能表现

  • 带宽:811GB/s
  • ✅ 跨节点 GPU 直连,性能最优
  • ✅ NCCL 会将两台机器的 4+4 GPU 放在同一跨节点 NVLink 通信域中,跨节点不走 IB/TCP

4.2 InfiniBand 测试结果

  • 通过指定 -x NCCL_MNNVL_ENABLE=0 以及 -x NCCL_IMEX_ENABLE=0 配置,关闭 MNNVL,强制走 IB。
  • -x NCCL_IB_HCA="mlx5_0" 指定 IB 卡

测试命令

1
2
3
4
5
6
7
8
root@nccl-sleep-2nsk2:/workspace# mpirun --allow-run-as-root \
   -x PATH -x LD_LIBRARY_PATH \
   -x CUDA_HOME -x MPI_HOME -x NCCL_HOME \
   -x NCCL_MNNVL_ENABLE=0 -x NCCL_IMEX_ENABLE=0 \
   -x NCCL_IB_HCA="mlx5_0" \
   -H $node1:4,$node2:4 \
   /opt/nccl-tests/build/all_reduce_perf_mpi \
   -b 16G -e 16G -f 2 -g 1 -c 1 -i 100

测试结果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
root@nccl-test-2nsk2:/workspace# mpirun --allow-run-as-root \
   -x PATH -x LD_LIBRARY_PATH \
   -x CUDA_HOME -x MPI_HOME -x NCCL_HOME \
   -x NCCL_MNNVL_ENABLE=0 -x NCCL_IMEX_ENABLE=0 \
   -x NCCL_IB_HCA="mlx5_0" \
   -H $node1:4,$node2:4 \
   /opt/nccl-tests/build/all_reduce_perf_mpi \
   -b 16G -e 16G -f 2 -g 1 -c 1 -i 100
Warning: Permanently added '172.25.114.34' (ED25519) to the list of known hosts.
# nccl-tests version 2.17.6 nccl-headers=22809 nccl-library=22809
# Collective test starting: all_reduce_perf_mpi
# nThread 1 nGpus 1 minBytes 17179869184 maxBytes 17179869184 step: 2(factor) warmup iters: 1 iters: 20 agg iters: 1 validation: 1 graph: 0
#
# Using devices
#  Rank  0 Group  0 Pid    375 on nccl-test-6k8rm device  0 [0008:01:00] NVIDIA GB200
#  Rank  1 Group  0 Pid    376 on nccl-test-6k8rm device  1 [0009:01:00] NVIDIA GB200
#  Rank  2 Group  0 Pid    377 on nccl-test-6k8rm device  2 [0018:01:00] NVIDIA GB200
#  Rank  3 Group  0 Pid    378 on nccl-test-6k8rm device  3 [0019:01:00] NVIDIA GB200
#  Rank  4 Group  0 Pid    459 on nccl-test-dbzk7 device  0 [0008:01:00] NVIDIA GB200
#  Rank  5 Group  0 Pid    460 on nccl-test-dbzk7 device  1 [0009:01:00] NVIDIA GB200
#  Rank  6 Group  0 Pid    461 on nccl-test-dbzk7 device  2 [0018:01:00] NVIDIA GB200
#  Rank  7 Group  0 Pid    462 on nccl-test-dbzk7 device  3 [0019:01:00] NVIDIA GB200
#
#                                                              out-of-place                       in-place
#       size         count      type   redop    root     time   algbw   busbw  #wrong     time   algbw   busbw  #wrong
#        (B)    (elements)                               (us)  (GB/s)  (GB/s)             (us)  (GB/s)  (GB/s)
 17179869184    4294967296     float     sum      -1   355729   48.29   84.52       0   353612   48.58   85.02       0
# Out of bounds values : 0 OK
# Avg bus bandwidth    : 84.7689
#
# Collective test concluded: all_reduce_perf_mpi

性能表现

  • ⚠️ 带宽:85GB/s(实测值 84.77GB/s,四舍五入)
  • ⚠️ 性能大幅降低,只有 MNNVL 的 1/9.5(811GB/s ÷ 85GB/s ≈ 9.5)

4.3 TCP 网络测试结果

增加以下参数:

  • -x NCCL_MNNVL_ENABLE=0 -x NCCL_IMEX_ENABLE=0:关闭 MNNVL

  • -x NCCL_IB_DISABLE=1:禁用 IB 网络

看看纯 TCP 网络下的性能。

1
2
3
4
5
6
7
8
mpirun --allow-run-as-root \
   -x PATH -x LD_LIBRARY_PATH \
   -x CUDA_HOME -x MPI_HOME -x NCCL_HOME \
   -x NCCL_MNNVL_ENABLE=0 -x NCCL_IMEX_ENABLE=0 \
   -x NCCL_IB_DISABLE=1 \
   -H $node1:4,$node2:4 \
   /opt/nccl-tests/build/all_reduce_perf_mpi \
   -b 1G -e 1G -f 2 -g 1 -c 1 -i 10

ps:因为纯 TCP 太慢,为了缩短测试时间,这里将消息大小从 16GB 降到 1GB,迭代次数从 100 次降到 10 次,因此只能粗略对比数量级差距,而不是与 MNNVL/IB 完全同条件对比。

测试结果

1
2
# 输出
# Avg bus bandwidth    : 2.00 GB/s

性能表现

  • 带宽:2GB/s(Bus bandwidth,缩小消息大小后的结果)
  • ❌ 性能极低,只有 MNNVL 的 约 1/405(811GB/s ÷ 2GB/s ≈ 405),更适合作为“数量级感知”而非严谨对比

5. 📝 小结

通过本次 2 节点 8 GPU 的 nccl-tests,对 GB200 NVL72 系统中的不同互联方案有了更直观的量化认识:

  • MNNVL 性能是 InfiniBand 的约 9.5 倍:811GB/s vs 85GB/s(Bus bandwidth 指标),在相同 all-reduce 条件下差距非常明显
  • GB200 NVL72 完整系统包含 72 个 GB200 GPU + 36 个 Grace CPU:硬件规格被设计为大规模 AI 训练/推理的基础设施(本文只是其中 2 节点 8 GPU 的子规模测试)
  • 第五代 NVLink + MNNVL 技术:通过跨节点 GPU 直连,让多节点的通信性能更接近单节点 NVSwitch 域

但是,这么好的性能也是有代价的——GB200 NVL72 售价高达数百万美元 😱

看完测试数据,我只想说: 🤑 贫穷限制了我的想象力,原来"带宽不够"也能用钱解决。


6. 📚 参考资料


0%