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.0 | 2018 | V100 SXM3 | 18 | 50 GB/s × 2 | 900 GB/s | 否 |
| NVSwitch 2.0 | 2020 | A100 SXM4 | 36 | 50 GB/s × 2 | 1.6 TB/s | 否 |
| NVSwitch 3.0 | 2022 | H100 SXM5 | 64 | 50 GB/s × 2 | 3.2 TB/s | 是 |
| NVSwitch 4.0 | 2024 | B200 SXM6 | 72 | 100 GB/s × 2 | 7.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 AllReduce | NVLS 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 带宽利用率

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 时代:
- NVIDIA H100 SXM Architecture White Paper (NVIDIA, 2022)
- NVIDIA NVSwitch 3.0 Technical Brief (NVIDIA, 2022)
- Hot Chips 2022: NVLink 4 and NVSwitch 3 (NVIDIA, 2022)
- NCCL 2.17 Release Notes: NVLS Support (NVIDIA)
NVSwitch 4.0 / B200 / GB200 NVL72:
- NVIDIA GB200 NVL72 Product Page (NVIDIA, 2024)
- NVIDIA Blackwell Architecture Technical Overview (NVIDIA, 2024)
- GTC 2024: NVIDIA Blackwell Platform (NVIDIA, 2024)