端口模型
多端口硬件的实现成本与边际收益递减规律
核心要点:
- 1-port 仅理论模型,现代硬件至少 2-port
- 端口数增长 → DMA / 物理链路 / 交换网络三层成本
- 边际收益 $O(1 / k^2)$, $k = 1 \to 2$ 性价比最高,$k = 16$ 以上极低
- 端口数饱和后瓶颈转移到 HBM / 软件调度 / PCIe
- 网内计算 (NVLS) 比端口数增长是更根本的突破路径
理论下界依赖端口模型,见 4.2 理论下界。本文从硬件实现角度分析端口数 $k$ 的实际配置、成本与收益边界。
主流加速器的端口配置
核心问题:现实硬件 $k$ 是多少,1-port 模型在生产中存在吗?
| 硬件 | $k$ | 互联 | 单端口单向 BW | 总双向 | 实现 |
|---|---|---|---|---|---|
| SG2260 | 2 | CDMA C2C | 64 GB/s | 256 GB/s | CDMA + VSDMA 双 DMA |
| NVIDIA A100 | 6 | NVLink 3.0 | 25 GB/s | 600 GB/s | 12 链路 (6 双向对),每条独立引擎 |
| NVIDIA H100 | 9 | NVLink 4.0 | 50 GB/s | 900 GB/s | 18 链路 + NVSwitch |
| NVIDIA B200 (NVL72) | 18 | NVLink 5.0 | 50 GB/s | 1800 GB/s | 18 链路 + 9 NVSwitch, 72 GPU 全连接 |
| Google TPU v4 | 6 | ICI | 42 GB/s | 504 GB/s | 3D Torus,每维 2 条双向 |
| AMD MI300X | 7 | XGMI 3.0 | 64 GB/s | 896 GB/s | 7 条 XGMI |
| InfiniBand NDR | ~all-port | RDMA | 50 GB/s | 视拓扑 | 多 QP 并发硬件调度 |
@tbl-cc-port-hw-config 主流 AI 加速器端口配置
关键观察:1-port 模型在实际硬件中不存在。理论中用 1-port 给最保守下界,不描述真实硬件。
端口数增长的硬件成本
核心问题:端口数 $k$ 加倍,成本来自哪里?
DMA 引擎
每个独立端口需完整 DMA 子系统:
- 发 / 收 FIFO (32–128 KB / 端口)
- 地址转换 (VA → PA)
- 流控逻辑 (信用 / 反压)
- 中断 / 轮询状态机
SG2260 从 1 → 2 端口 (CDMA → CDMA + VSDMA),互联子系统面积增 5–10%。DMA 引擎在现代芯片占比小,相对低。
物理链路 (规模急剧上升)
链路数 $\propto k$,单链路成本随规模急剧上升:
| 规模 | 链路类型 | 单链路成本 | 主要构成 |
|---|---|---|---|
| 2–4 芯 (板内) | PCB 走线 / C2C | ~$1 / lane | PCB 层数 / 信号完整性 |
| 8 芯 (单机) | NVLink bridge / 短铜缆 | ~$55 / lane | 连接器 / DAC 铜缆 |
| 16–32 芯 (跨板) | 有源铜缆 AEC | ~$70–105 / lane | 有源电缆 / 交换芯片 |
| 64+ 芯 (跨机) | 光模块 AOC | ~$247 / lane | 光收发器 / 光纤 / 交换机 |
@tbl-cc-port-link-cost 物理链路成本随规模
NVL72 互联成本结构:每 GPU 18 链路 (50 GB/s 每条) + 9 NVSwitch (~$500–1000 / 颗), 仅交换芯片 $5000–9000,加铜缆连接器,互联占整机 BOM 15–25%。
交换网络
$k$ 超过直连邻居数即需交换网络:
| 方案 | 支持 $k$ | 额外硬件 | 成本 |
|---|---|---|---|
| 直连 (Ring / Mesh) | $d$ (拓扑度) | 无 | 零 |
| NVSwitch (单级) | 全连 8 GPU | 1–2 NVSwitch | $1000–2000 |
| NVSwitch (两级) | 全连 72 GPU | 9 NVSwitch | $5000–9000 |
| InfiniBand 交换 | all-port | 多级 Fat-tree | $10k–100k / 节点 |
@tbl-cc-port-switch-cost 交换网络成本
收益递减分析
核心问题:端口数加倍带来多少时间缩短?性价比何时崩溃?
理论边际收益
Ring AllReduce 带宽项在 $k$-port 下:
$$\begin{equation} T_{\beta}^{k\text{-port}} = \frac{2 (N - 1)}{N} \cdot \frac{M}{k \beta} \label{eq:port-kport-ring-time} \end{equation}$$边际收益:
$$\begin{equation} \Delta T = T_{\beta}^{k} - T_{\beta}^{k+1} = \frac{2 (N - 1) M}{N \beta} \cdot \frac{1}{k (k+1)} \label{eq:port-kport-marginal-gain} \end{equation}$$边际收益 $O(1 / k^2)$ 递减:
| $k \to k+1$ | 时间减少 | 边际硬件成本 | 性价比 |
|---|---|---|---|
| 1 → 2 | 50% | 低 (+1 DMA 引擎) | 极高 |
| 2 → 4 | 25% | 中 (链路翻倍) | 高 |
| 4 → 8 | 12.5% | 高 (需交换芯片) | 中 |
| 8 → 16 | 6.25% | 很高 (多级交换) | 低 |
| 16 → all-port | < 5% | 极高 (全连接) | 仅大规模训练可接受 |
@tbl-cc-port-roi 端口数边际收益与成本
瓶颈转移
$k$ 足够大时通信瓶颈从端口转到其他子系统。
HBM 带宽
H100: NVLink 总 900 GB/s, HBM3 3350 GB/s, NVLink 占 HBM 27% 尚有余量。但多 DMA 同时读 HBM 时与计算单元争抢,实际可用下降。NVLink 利用率 > ~60% 时 HBM 争抢成瓶颈。
软件调度
端口越多,调度复杂度越高:
- 2-port:两方向独立,调度简单 (SCCL 左 / 右分工)
- 8-port:需规划哪个 chunk 走哪条链路,避免冲突
- all-port:需全局调度 (NCCL channel / ring 分配),软件开销本身成为延迟一部分
PCIe / Host
CPU ↔ 加速器 PCIe Gen5 x16 仅 64 GB/s,远低于加速器间互联。跨 Host 时 PCIe 真正瓶颈,加速器端口数再加无意义。
超越端口数:网内计算
核心问题:端口数收益触顶后,还有什么路径?
NVIDIA 选择把计算下沉到交换网络:
| 方案 | 每 GPU 传输量 (AllReduce, $M$ B) | 需端口数 |
|---|---|---|
| Ring (1-port) | $\frac{2 (N-1)}{N} M \approx 2 M$ | 1 |
| Ring (2-port) | 同 (时间减半,总量不变) | 2 |
| NVLS (网内规约) | $M$ (发 $M$ + 收 $M$,交换机内规约) | 1 (到 NVSwitch) |
@tbl-cc-port-vs-nvls 端口数 vs 网内计算
NVLS 思路:与其让每 GPU 搬 $2 M$ 数据 (搬得更快),不如让 NVSwitch 内部直接做规约,每 GPU 只发 $M$ (原数据) + 收 $M$ (规约结果)。从根本上把传输量减半,突破软件 AllReduce 带宽下界。
详见 4.10 NVLS。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 1-port 真实性 | 仅理论模型,现代硬件至少 2-port |
| 端口成本三层 | DMA + 物理链路 + 交换网络 |
| 链路成本随规模 | 板内 ~$1, 短铜 ~$55,光模块 ~$247 |
| NVL72 互联占比 | 整机 BOM 15–25% |
| 边际收益 | $O(1 / k^2)$, $k = 1 \to 2$ 性价比最高 |
| 端口饱和后瓶颈 | HBM 争抢 / 软件调度 / PCIe |
| 网内计算 | 比端口数增长更根本的突破路径 |
@tbl-cc-port-takeaway 端口模型要点