目录
2. out-of-place vs in-place 模式对比
这是一个基于 18 台服务器(test1
到test18
等)、共 72 块 NVIDIA GB200 GPU 的集群通信性能测试,主要用于验证多节点 GPU 间的集合通信(all-reduce
)效率。以下是详细分析:
一、测试基本配置
- 测试类型:
all-reduce
(分布式训练中最常用的集合通信操作,用于多 GPU 间数据求和并广播结果)。 - 参与规模:
- 18 台服务器(主机名
test1
-test18
等),每台服务器含 4 块 NVIDIA GB200 GPU,总计 72 块 GPU(对应Rank 0
-Rank 71
)。
- 18 台服务器(主机名
- 测试参数:
- 数据大小:
33554432B
(32MB)到17179869184B
(16GB),按 2 倍递增(step: 2(factor)
)。 - 数据类型:
float
(32 位浮点数)。 - 操作:
sum
(求和归约)。 - 迭代次数:预热 5 次(
warmup iters: 5
),实际测试 20 次(iters: 20
),确保结果稳定。 - 模式:同时测试
out-of-place
(数据在新内存区域操作)和in-place
(数据在原内存区域操作)两种模式。
- 数据大小:
二、硬件与集群一致性
- GPU 型号:所有节点均使用
NVIDIA GB200
(高端数据中心级 GPU,支持高带宽 NVLink 和 PCIe 5.0,适合大规模集群通信)。 - 硬件配置一致性:每台服务器的 GPU 总线地址(如
0008:01:00
、0009:01:00
等)完全一致,说明 18 台服务器的硬件配置标准化,无个体差异,避免了因硬件不一致导致的性能波动。
三、核心性能指标分析
测试结果的核心指标是带宽(algbw
算法带宽、busbw
总线带宽),反映 GPU 间数据传输效率,单位为GB/s
(越高越好)。
#
# 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)
33554432 8388608 float sum -1 226.8 147.98 291.84 0 221.6 151.40 298.59 0
67108864 16777216 float sum -1 337.8 198.69 391.86 0 340.3 197.20 388.93 0
134217728 33554432 float sum -1 559.5 239.89 473.11 0 564.3 237.85 469.10 0
268435456 67108864 float sum -1 928.7 289.04 570.05 0 925.2 290.14 572.21 0
536870912 134217728 float sum -1 1732.6 309.87 611.13 0 1715.3 312.98 617.27 0
1073741824 268435456 float sum -1 2945.2 364.57 719.01 0 2931.3 366.30 722.42 0
2147483648 536870912 float sum -1 5315.8 403.98 796.74 0 5277.8 406.89 802.47 0
4294967296 1073741824 float sum -1 10115 424.60 837.41 0 10128 424.05 836.32 0
8589934592 2147483648 float sum -1 19353 443.86 875.39 0 19417 442.38 872.47 0
17179869184 4294967296 float sum -1 37369 459.74 906.71 0 37415 459.17 905.59 0
# Out of bounds values : 0 OK
# Avg bus bandwidth : 647.931
数据大小(B) | 数据量(MB) | out-of-place 算法带宽(GB/s) | out-of-place 总线带宽(GB/s) | in-place 算法带宽(GB/s) | in-place 总线带宽(GB/s) |
---|---|---|---|---|---|
33554432 | 32 | 147.98 | 291.84 | 151.40 | 298.59 |
67108864 | 64 | 198.69 | 391.86 | 197.20 | 388.93 |
134217728 | 128 | 239.89 | 473.11 | 237.85 | 469.10 |
268435456 | 256 | 289.04 | 570.05 | 290.14 | 572.21 |
536870912 | 512 | 309.87 | 611.13 | 312.98 | 617.27 |
1073741824 | 1024 | 364.57 | 719.01 | 366.30 | 722.42 |
2147483648 | 2048 | 403.98 | 796.74 | 406.89 | 802.47 |
4294967296 | 4096 | 424.60 | 837.41 | 424.05 | 836.32 |
8589934592 | 8192 | 443.86 | 875.39 | 442.38 | 872.47 |
17179869184 | 16384 | 459.74 | 906.71 | 459.17 | 905.59 |
1. 带宽趋势分析
- 随数据量增长,带宽逐步提升:从 32MB 时的~148GB/s 提升到 16GB 时的~460GB/s,总线带宽从~292GB/s 提升到~907GB/s。
- 原因:NCCL 对小数据和大数据采用不同通信算法(如小数据用 “直接发送”,大数据用 “环形算法”),大数据量下环形算法的并行性更高,能充分利用集群网络带宽。
- 16GB 时达到峰值:此时算法带宽稳定在 459GB/s 左右,说明在大规模数据传输中,集群通信效率达到最优。
2. out-of-place vs in-place 模式对比
- 两种模式的带宽差异极小(如 16GB 时仅差 0.57GB/s),说明 NCCL 在两种内存操作模式下的优化一致性很好,无明显性能损耗。
- 实际使用中可根据内存需求选择模式(in-place 更省内存,out-of-place 更安全),无需担心性能差异。
3. 正确性验证
- 所有测试的
#wrong
(错误数)均为 0,且Out of bounds values: 0 OK
,说明 72 块 GPU 间的all-reduce
操作结果完全正确,无数据传输错误或计算偏差,集群通信的可靠性得到验证。
四、整体性能评估
- 平均总线带宽:
647.931 GB/s
,对于 72 块 GPU 的大规模集群来说,这一指标处于较高水平,说明:- 集群网络配置(可能为 NVLink 交换机或 RDMA 高速网络)能支撑高带宽通信;
- NCCL 库针对 GB200 和多节点集群做了充分优化,有效发挥了硬件潜力。
- GB200 优势体现:GB200 作为新一代数据中心 GPU,其高带宽内存(HBM)和 PCIe 5.0/NVLink 接口为大规模集群通信提供了硬件基础,测试结果验证了其在分布式场景下的性能优势。
总结
本次 NCCL 测试显示,由 18 台服务器、72 块 NVIDIA GB200 组成的集群在all-reduce
操作中表现优异:
- 性能:随数据量增长,带宽逐步提升至 460GB/s,平均总线带宽达 648GB/s,满足大规模分布式训练(如大语言模型、推荐系统)的高通信需求;
- 稳定性:两种内存模式性能一致,无数据错误,集群通信可靠;
- 硬件适配:GB200 与 NCCL 的兼容性良好,硬件潜力得到充分发挥。
该集群适合部署需要高带宽跨节点通信的分布式 AI 训练或高性能计算任务。