跳到主要内容

拓扑对集合通信性能的影响

不同网络拓扑(Ring/Torus/Fat-Tree/Hypercube)和链路方向性(单向/双向/半双工)系统性地影响各集合通信原语的性能。本文从拓扑维度横向对比这些影响,核心结论:拓扑的 Bisection Bandwidth 是 AllReduce/AllToAll 的全局带宽下界;分层异构拓扑中采用"高带宽层内多做、低带宽层少传"的分层策略可获得 5x 以上加速。

拓扑关键指标

指标对集合通信的意义
节点度 $d$决定节点的聚合带宽上限 $d\beta$
直径 $D$Broadcast/Reduce 的延迟下界 $D \cdot \alpha$
Bisection Bandwidth $B_{\text{bis}}$AllReduce/AllToAll 的全局带宽下界
对称性影响负载均衡,非对称拓扑中某些节点成为瓶颈

常见拓扑指标对比

拓扑$d$直径 $D$$B_{\text{bis}}$对称性成本
Linear1-2$N-1$$\beta$最低
Ring2$\lfloor N/2\rfloor$$2\beta$
Binary Tree1-3$2\log_2 N$$\beta$
Fat-Tree ($k$-ary)$k$$2\log_k N$$\sim N\beta/2$层级
Hypercube$\log_2 N$$\log_2 N$$N\beta/2$中高
2D Torus4$\sqrt{N}$$2\sqrt{N}\beta$
3D Torus6$\frac{3}{2}N^{1/3}$$2N^{2/3}\beta$
Fully-Connected$N-1$1$N^2\beta/4$极高

各拓扑上的 AllReduce 性能

AllReduce 是对拓扑最敏感的原语。

Ring($N$ 节点)

直接使用 Ring AllReduce(ReduceScatter + AllGather 各 $N-1$ 步,每步 $M/N$):

$$\begin{equation} T_{\text{Ring}} = 2(N-1)\alpha + \frac{2(N-1)}{N} \cdot \frac{M}{\beta} \label{eq:topo-ring-ar} \end{equation}$$
  • 优势:带宽利用率接近 100%,实现简单,所有节点对称
  • 劣势:延迟 $O(N)$$N$ 较大时延迟爆炸
  • 适用规模:$N \le 8 \sim 16$

Hypercube($N = 2^k$ 节点)

使用 Halving-Doubling 算法(每阶段 $\log_2 N$ 步,每步与 Hypercube 上的直接邻居通信):

$$\begin{equation} T_{\text{Hypercube}} = 2\log_2 N \cdot \alpha + \frac{2(N-1)}{N} \cdot \frac{M}{\beta} \label{eq:topo-hypercube-ar} \end{equation}$$

延迟降至 $O(\log N)$,带宽项与 Ring 相同(同为最优)。但节点度 $O(\log N)$ 增长使布线复杂。

2D Torus($r \times c$$N = rc$

分层策略:先行内 Ring AllReduce($r$ 个节点),再列内 Ring AllReduce($c$ 个节点)。以正方形 $r = c = \sqrt{N}$ 为例,每一维的 Ring AllReduce 代价为 $2(\sqrt{N}-1)\alpha + \frac{2(\sqrt{N}-1)}{\sqrt{N}} \cdot \frac{M}{\beta}$,两维串行:

$$\begin{equation} T_{\text{2D-Torus}} \approx 4(\sqrt{N}-1)\alpha + 4\frac{(\sqrt{N}-1)}{\sqrt{N}} \cdot \frac{M}{\beta} \label{eq:topo-2dtorus-ar} \end{equation}$$

与 Ring $\eqref{eq:topo-ring-ar}$ 对比,延迟从 $2(N-1)\alpha$ 降至 $4(\sqrt{N}-1)\alpha$,减少约 $\sqrt{N}/2$ 倍。$N=16$ 时:Ring 30 步 vs 2D-Torus 12 步。

Fat-Tree

$k$-ary Fat-Tree 的直径为 $2\log_k N$(从叶到根再到叶),使用树形 AllReduce 可在 $2\log_k N$ 步内完成。Full Bisection Bandwidth 保证带宽项也达到最优:

$$\begin{equation} T_{\text{Fat-Tree}} = 2\log_k N \cdot \alpha + \frac{2(N-1)}{N} \cdot \frac{M}{\beta} \label{eq:topo-fattree-ar} \end{equation}$$

延迟和带宽都接近最优,但网络成本高(交换机数量为 $O(N \log N / k)$)。

性能对比($N=16$$M=1$ MB,$\alpha=1\mu s$$\beta=64$ GB/s)

拓扑算法延迟项($\mu s$带宽项($\mu s$总时间($\mu s$
RingRing AllReduce3029.359.3
HypercubeHalving-Doubling829.337.3
2D Torus (4x4)分层 Ring12~47~59
Fully-ConnectedDirect4~1~5

链路方向性的影响

单向链路(Unidirectional)

数据只能沿一个方向传输。Ring AllReduce 无法利用双向链路的优化版本,延迟项无法减半。

双向链路(Full-Duplex)

大多数现代互联(NVLink、PCIe、InfiniBand)均为全双工。双向 Ring AllReduce 将 $N$ 个 chunk 分两半分别传播,步数减半:

$$\begin{equation} T_{\text{bidir-Ring}} \approx (N-1)\alpha + \frac{(N-1)}{N} \cdot \frac{M}{\beta} \label{eq:topo-bidir-ring-ar} \end{equation}$$

各原语对链路方向性的敏感度

原语算法单向链路步数双向链路步数加速比
Broadcast链式$N-1$$\lceil(N-1)/2\rceil$$\approx 2\times$
Broadcast二叉树$\log_2 N$$\log_2 N$$1\times$
AllGatherRing$N-1$$\lceil(N-1)/2\rceil$$\approx 2\times$
AllReduceRing$2(N-1)$$\approx N-1$$\approx 2\times$
AllReduceHalving-Doubling$2\log_2 N$$2\log_2 N$$1\times$
AllToAllPairwise$N-1$$N-1$$1\times$

关键规律

  • Ring 类算法从双向链路获益最大(步数减半)
  • Tree/Hypercube 类算法对链路方向性不敏感
  • AllToAll Pairwise 每步已经双向交换数据,天然利用全双工

半双工的影响

半双工链路必须串行化收和发,Ring AllReduce 的每步时间翻倍:

$$\begin{equation} T_{\text{half-duplex-Ring}} = 2(N-1) \cdot 2 \cdot \left(\alpha + \frac{M/N}{\beta}\right) \label{eq:topo-halfduplex-ring} \end{equation}$$

实际带宽利用率降至全双工的一半。现代高性能互联极少使用半双工。

多层级异构拓扑

现实系统的层级结构

层级拓扑类型带宽延迟
L2: Chip 内(多 Die)D2D Ring/Mesh100~900 GB/s0.1~0.5 $\mu s$
L3: Board 内(多 Chip)NVLink Ring/FC64~900 GB/s0.5~2 $\mu s$
L4: Rack 内(多 Board)PCIe/NVLink/IB25~400 GB/s2~5 $\mu s$
L5: Rack 间InfiniBand/Ethernet12.5~100 GB/s5~50 $\mu s$

带宽跨度 L2 到 L5 可达 10100 倍,延迟跨度 10500 倍。

分层集合通信策略

核心原则:在高带宽层级内完成尽可能多的工作,最小化跨低带宽层级的通信量

分层 AllReduce(2 层):设 $G$ 组,每组 $L$ 节点($N = GL$),组内带宽 $\beta_{\text{intra}} \gg$ 组间带宽 $\beta_{\text{inter}}$

  1. Intra-group ReduceScatter:组内数据量 $M$ → 每节点 $M/L$ 的部分结果
  2. Inter-group AllReduce:跨组数据量 $M/L$(关键:将跨组通信量减少 $L$ 倍)
  3. Intra-group AllGather:每组内恢复完整结果
$$\begin{equation} T_{\text{hierarchical}} = 2(L-1)\alpha_{\text{intra}} + \frac{2(L-1)M}{L\beta_{\text{intra}}} + 2(G-1)\alpha_{\text{inter}} + \frac{2(G-1)M}{GL\beta_{\text{inter}}} \label{eq:topo-hierarchical-ar} \end{equation}$$

数值对比

$G=4$$L=8$$N=32$$M=100$ MB,$\beta_{\text{intra}}=450$ GB/s,$\beta_{\text{inter}}=25$ GB/s:

  • 直接 Ring$\beta_{\text{inter}}$ 是瓶颈):$T_{\text{flat}} \approx 310 + 7750 = 8060 \mu s$
  • 分层策略$T_{\text{hierarchical}} = 403 + 780 + 403 = 1586 \mu s$
  • 加速比 $\approx 5.1\times$

分层策略将跨组数据量从 $M$ 缩减到 $M/L = 12.5$ MB,跨组带宽时间从 7750 $\mu s$ 降至 750 $\mu s$

SCCL 的拓扑策略

SCCL(SOPHGO)针对不同芯片数量使用不同拓扑:

芯片数拓扑算法
2直连直接交换
4RingRing AllReduce
8RingRing AllReduce
162D Torus分层 Ring

16 芯的 2D Torus 由两个 8 芯 Ring 纵向互联构成,是分层策略的典型实例。

拓扑-算法匹配指南

拓扑最佳 AllReduce最佳 AllToAll最佳 Broadcast
RingRing AllReduceRing AllToAll双向链式
HypercubeHalving-DoublingBruckBinomial Tree
2D Torus分层 Ring分维 AllToAll分维 Broadcast
Fat-TreeTree AllReducePairwiseBinomial Tree
Fully-ConnectedDirectPairwiseBinomial Tree

参考资料