跳到主要内容

NVSwitch + NVLS

NVSwitch 如何实现多 GPU 全连接、NVLS 如何加速 AllReduce

核心要点

  • NVSwitch 是配合 NVLink 的高速交换芯片,解决多 GPU 全连接问题
  • 与以太网交换机相比,延迟低 10-20×(约 100 ns)
  • NVL72 用 18 颗 NVSwitch 4.0 实现 72 GPU 1 跳全互联
  • NVLS (NVLink SHARP) 把 AllReduce 步数从 $2(N-1)$ 降到 2
  • 限制:仅 AllReduce 原语;需同一 NVSwitch 域;NCCL 2.17+ 自动启用

代际怎么演进的?

4 代 NVSwitch,从 18 端口 / 900 GB/s 扩展到 72 端口 / 7.2 TB/s。Gen3 起内置网内计算,详见 @tbl-hw-nvswitch-gen

代际年份搭配 GPU端口数单端口带宽(双向)总交换带宽NVLS
NVSwitch 1.02018V100 SXM31850 GB/s × 2900 GB/s
NVSwitch 2.02020A100 SXM43650 GB/s × 21.6 TB/s
NVSwitch 3.02022H100 SXM56450 GB/s × 23.2 TB/s
NVSwitch 4.02024B200 SXM672100 GB/s × 27.2 TB/s

@tbl-hw-nvswitch-gen NVSwitch 代际演进

NVSwitch 1.0/2.0 单端口速率对应 NVLink 2.0/3.0。NVSwitch 3.0 端口数 64,每端口走 NVLink 4.0(50 GB/s 单向)。NVSwitch 4.0 扩到 72 端口配 NVLink 5.0,单端口速率翻倍以适配 NVL72 的 72 GPU 全连接。

NVSwitch 凭什么比以太网交换机快 10×?

砍掉协议栈 + 硬件信用流控 + 内置归约引擎。三者结合让交换延迟降到 100 ns 量级,对比见 @tbl-hw-nvswitch-vs-eth

特性NVSwitch以太网交换机
协议栈NVLink 原生协议,无 IP/MAC处理以太网帧 + IP 头 + TCP/UDP
交换延迟NVSwitch 3.0 约 100 ns通常 500 ns–2 µs(切入转发)
流量控制基于 flit 的硬件信用流控基于软件的拥塞控制(ECMP、PFC)
计算能力内置归约引擎(NVLS)纯转发,无网内计算
寻址GPU ID 映射到物理端口MAC/IP 地址查表

@tbl-hw-nvswitch-vs-eth NVSwitch vs 以太网交换机

架构:全双工非阻塞交叉开关 (Non-blocking Crossbar),每端口独立缓冲,基于硬件信用 (credit-based) 在 flit 粒度背压,避免头阻塞 (HoL blocking)。

NVL72 拓扑长什么样?

72 颗 B200 + 18 颗 NVSwitch 4.0,每对 GPU 通信只需 1 跳

  • 物理构成:72 GPU(36 个 GB200 Superchip × 2)+ 18 NVSwitch 4.0(9 个 Switch Tray × 2)
  • 连接方式:每颗 B200 通过 18 条 NVLink 5.0 分别连到 18 颗 NVSwitch(每 NVSwitch 1 条);每颗 NVSwitch 的 72 端口各连 1 颗 B200。总链路数 72 × 18 = 1296
  • 路径长度:任意 GPU 对通信 1 跳
  • 多通路:每对 GPU 可同时走多颗 NVSwitch 并行,有效带宽叠加
  • 单 GPU NVLink 带宽:18 × 100 GB/s(每方向)= 1800 GB/s 单向聚合,比 NVLink 4.0 翻倍
  • 全局聚合上限:72 × 1800 GB/s ÷ 2 = 64.8 TB/s 单向。带宽饱和场景下每 GPU 实际可用带宽受对外链路限制,不受 NVSwitch 内部带宽限制

NVLS 怎么把 AllReduce 步数砍到 2?

数据经过 NVSwitch 时由硬件归约引擎累加,结果直接 multicast 给所有 GPU。免除 GPU 之间多轮中继。

传统 Ring AllReduce 数据路径 — 每 GPU 既是源也是中继:

GPU₀ → GPU₁ → GPU₂ → ... → GPU_{N-1} → GPU₀  (ReduceScatter)
GPU₀ → GPU₁ → GPU₂ → ... → GPU_{N-1} → GPU₀ (AllGather)
每 GPU 需执行 2(N-1) 次发送/接收

NVLS 数据路径 — NVSwitch 内部硬件归约 + multicast:

GPU₀ ─┐
GPU₁ ─┤
GPU₂ ─┤→ NVSwitch (硬件归约引擎) → 广播结果给所有 GPU
... ─┤
GPU₇₁─┘
每 GPU 只需 1 次发送 + 1 次接收

NVSwitch 归约引擎以流水线方式对各端口数据执行累加(支持 FP16 / BF16 / FP32 / INT32),结果通过 multicast 同时发送给所有参与 GPU,免去 Broadcast 阶段的带宽浪费。

与 IB SHARP 的对比:IB SHARP 的聚合节点跑在交换机协处理器上,受协处理器算力限制;NVLS 归约引擎直接集成在 NVSwitch 数据路径中,吞吐与链路带宽匹配,不成为瓶颈。

NVLS 对 AllReduce 性能影响多大?

步数从 $2(N-1)$ 降到 2,带宽利用率从 $(N-1)/N$ 提升到 ~100%。延迟模型见下,对比见 @tbl-hw-nvls-vs-ring

Ring AllReduce ($N$ 个 GPU,消息 $M$):

$$\begin{equation} T_{\text{Ring}} \approx 2(N-1)\alpha + \frac{2(N-1)}{N} \cdot \frac{M}{\beta} \label{eq:hw-nvswitch-ring-allreduce} \end{equation}$$

NVLS AllReduce (同一 NVSwitch 域):

$$\begin{equation} T_{\text{NVLS}} \approx 2\alpha_{\text{sw}} + \frac{M}{\beta_{\text{NVLink}}} \label{eq:hw-nvls-time} \end{equation}$$

$\alpha_{\text{sw}}$ 为 NVSwitch 处理延迟(约 100-200 ns),步数固定 2,与 $N$ 无关。

指标Ring AllReduceNVLS AllReduce
每 GPU 有效发送量$\frac{2(N-1)}{N}M \approx 2M$$M$(仅发送一次)
带宽利用率$\frac{N-1}{N}$(接近但小于 1)接近 100%(受限于链路带宽)
延迟步数$2(N-1)$2

@tbl-hw-nvls-vs-ring NVLS vs Ring 带宽利用率

Ring AllReduce vs NVLS AllReduce 对比@fig-hw-nvswitch-nvls-compare

H100 DGX 实测 (8 GPU NVLink 4.0, AllReduce on 1 GB)

  • Ring AllReduce:约 394 GB/s,理论上限 $\frac{7}{8} \times 450 \approx 394$ GB/s,实测贴合
  • NVLS AllReduce:约 480 GB/s,超 Ring 理论上限 22%

B200 NVL72 (NVSwitch 4.0, NVLink 5.0) 绝对数字按 ×2 提升,NVLS 相对加速比保持。

NVLS 的使用限制是什么?

拓扑必须在同一 NVSwitch 域;仅支持 AllReduce;需 NCCL 2.17+

拓扑要求

  • 所有参与 GPU 必须在同一 NVSwitch 全连接域(GPU 到任意 NVSwitch 1 跳)
  • NVL8(单节点 8 GPU)和 NVL72(72 GPU 机箱)满足
  • 多节点跨 IB/以太网的 GPU 组无法使用 NVLS,回退到 Ring

原语支持

  • 仅 AllReduce(Send + Reduce + Multicast)
  • 不支持独立 AllGather / ReduceScatter(需要更复杂的多播树设计,截至 NVSwitch 3.0 未实现)

软件要求

  • NCCL ≥ 2.17(含 NVLS 自动检测)
  • NCCL 在消息 >256 KB 时自动启用 NVLS;小消息延迟由启动开销主导,NVLS 与 Ring 差距不显著

数据类型

  • 支持 FP32 / FP16 / BF16 / INT32 硬件归约
  • 不支持 FP8(归约精度问题);FP8 场景需 GPU 端类型转换后再触发 NVLS

Takeaway

知识点核心结论
交换架构全双工非阻塞 crossbar + flit 信用流控,无 IP/MAC 协议栈
延迟优势100 ns 量级,是以太网交换机 1/10–1/20
NVL72 拓扑18 颗 NVSwitch 4.0 让 72 GPU 1 跳全互联,单 GPU 1800 GB/s
NVLS 原理NVSwitch 内硬件归约 + multicast,AllReduce 步数 $2(N-1) \to 2$
NVLS 加速H100 实测 480 GB/s vs Ring 394 GB/s,超 Ring 理论上限 22%
NVLS 限制同一 NVSwitch 域;仅 AllReduce;需 NCCL ≥ 2.17

参考资料

NVSwitch 3.0 / H100 时代

NVSwitch 4.0 / B200 / GB200 NVL72: