跳到主要内容

一对多

Broadcast 与 Scatter 的语义差异、算法与下界分析

核心要点

  • Broadcast 各节点收相同 $M$ 字节,Scatter 各节点收不同 $M / N$ 字节分片
  • 两者延迟下界都是 $\lceil \log_2 N \rceil \cdot \alpha$
  • Broadcast 的带宽下界 $M / (d \beta)$ 由 root 出口带宽决定,root 是瓶颈
  • 二叉树达到延迟最优,分块二叉树流水线同时趋近带宽下界
  • Binomial Tree Scatter 同时达延迟与带宽下界,是理论最优

Broadcast

语义

root 把 $M$ 字节消息 $A$ 复制到所有 $N$ 节点:

$$\begin{equation} \forall i \in [0, N): \quad B_i = A_{\text{root}} \label{eq:cc-bcast-semantic} \end{equation}$$

理论下界

核心问题:Broadcast 最少需要几步 / 多少带宽?

延迟下界:信息需扩散到 $N$ 节点,倍增传播给出 $\lceil \log_2 N \rceil$ 步:

$$\begin{equation} T_{\alpha}^{\min} = \lceil \log_2 N \rceil \cdot \alpha \label{eq:cc-bcast-delay-lb} \end{equation}$$

带宽下界:root 是唯一数据源,必须直接或间接送出 $M$ 字节。即使树形并发分发,root 出口至少要把 $M$ 字节推上 $d$ 条链路:

$$\begin{equation} T_{\beta}^{\min} = \frac{M}{d \beta} \label{eq:cc-bcast-bw-lb} \end{equation}$$

综合下界

$$\begin{equation} T_{\text{Bcast}}^{\min} = \max\left( \lceil \log_2 N \rceil \cdot \alpha, \quad \frac{M}{d \beta} \right) \label{eq:cc-bcast-combined-lb} \end{equation}$$

带宽下界通用推导框架见 4.2 理论下界

算法 1:链式传播 (不推荐)

root 依次沿链发$N-1$ 步,每步发完整 $M$ 字节:

$$\begin{equation} T_{\text{chain}} = (N-1) \alpha + \frac{(N-1) M}{\beta} \label{eq:cc-bcast-chain} \end{equation}$$

延迟项 $O(N)$ 与带宽项 $(N-1)M/\beta$ 都远超下界,实际不用。

算法 2:二叉树 (Binomial Tree)

每步所有已有数据的节点同时向一个新邻居发送,持有方倍增

8 节点示例:

步骤发送者 → 接收者已有数据节点数
10 → 42
20 → 2, 4 → 64
30 → 1, 2 → 3, 4 → 5, 6 → 78

@tbl-cc-bcast-binomial-trace 8 节点 Binomial Tree Broadcast 步骤

$\lceil \log_2 N \rceil$ 步,每步完整 $M$:

$$\begin{equation} T_{\text{binomial}} = \lceil \log_2 N \rceil \cdot \left( \alpha + \frac{M}{\beta} \right) \label{eq:cc-bcast-binomial} \end{equation}$$

延迟最优 ($= \lceil \log_2 N \rceil \alpha$,达 $\eqref{eq:cc-bcast-delay-lb}$),带宽项 $\lceil \log_2 N \rceil \cdot M / \beta$ 未达下界,适合小消息

算法 3:分块链式流水线

消息切 $k$ 块沿 $N-1$ 跳链流水。第 1 块要 $N-1$ 步到链尾,之后每步到一新块,总步数 $N + k - 2$:

$$\begin{equation} T_{\text{pipe-chain}} = (N + k - 2) \cdot \left( \alpha + \frac{M}{k \beta} \right) \label{eq:cc-bcast-pipe-chain} \end{equation}$$

最优 $k^* = \sqrt{(N-1) M / (\alpha \beta)}$$M \gg (N-1) \alpha \beta$$T^* \to M / \beta$, 趋近带宽下界。适合大消息

算法 4:分块二叉树流水线 (通用最优)

树高从链的 $N-1$ 缩到 $\lceil \log_2 N \rceil$:

$$\begin{equation} T_{\text{pipe-tree}} = (\lceil \log_2 N \rceil + k - 1) \cdot \left( \alpha + \frac{M}{k \beta} \right) \label{eq:cc-bcast-pipe-tree} \end{equation}$$

最优 $k^*$同时趋近延迟与带宽下界,是通用场景的最优实现。

算法对比与切换

算法延迟项带宽项延迟最优带宽最优适用
链式$(N-1) \alpha$$(N-1) M / \beta$不推荐
二叉树$\lceil \log_2 N \rceil \alpha$$\lceil \log_2 N \rceil M / \beta$小消息
分块链式$\approx (N-1) \alpha$$\to M / \beta$大消息
分块二叉树$\approx \lceil \log_2 N \rceil \alpha$$\to M / \beta$通用

@tbl-cc-bcast-algo-cmp Broadcast 算法对比

算法切换临界点:$M^* \approx 2 N \alpha \beta$, MPICH 实测约 12 KB。

SCCL 4 芯 Ring 实现

4 芯 2-port Ring 上 root 同时向两侧广播:第 1 步向 rank 1 与 rank 3 各发一份 $A$,第 2 步 rank 1 转发给 rank 2。共 2 步,与延迟下界 $\lceil \log_2 4 \rceil = 2$ 一致。

Scatter

语义

root 把 $[A_0, \ldots, A_{N-1}]$ 切片分发,节点 $i$$A_i$ (大小 $M / N$):

$$\begin{equation} \forall i \in [0, N): \quad B_i = A_i, \quad |A_i| = M / N \label{eq:cc-scatter-semantic} \end{equation}$$

与 Broadcast 的区别:Broadcast 每节点收完整 $M$,网络总流量至少 $(N-1) M$; Scatter 每节点收 $M / N$ 不同分片,网络总流量约 $M$, 无数据放大

理论下界

核心问题:Scatter 的延迟和带宽下界?

延迟下界:与 Broadcast 同,信息扩散需 $\lceil \log_2 N \rceil$ 步。

带宽下界:root 总共发出 $(N-1) M / N$ 字节:

$$\begin{equation} T_{\beta}^{\min} = \frac{(N-1) M}{N \cdot d \beta} \label{eq:cc-scatter-bw-lb} \end{equation}$$

算法 1:逐个发送 (Naive)

root 依次发对应 chunk

$$\begin{equation} T_{\text{naive}} = (N-1) \alpha + \frac{(N-1) M}{N \beta} \label{eq:cc-scatter-naive} \end{equation}$$

带宽项达下界,延迟项 $O(N)$

算法 2: Binomial Tree Scatter (同时最优)

每步数据量减半。8 节点 root = 0 示例:

步骤操作单次传输量
10 → 4:发 $[A_4 .. A_7]$$M / 2$
20 → 2:发 $[A_2, A_3]$; 4 → 6:发 $[A_6, A_7]$$M / 4$
30 → 1, 2 → 3, 4 → 5, 6 → 7:各发一片$M / 8$

@tbl-cc-scatter-binomial-trace 8 节点 Binomial Tree Scatter 步骤

$\lceil \log_2 N \rceil$ 步,第 $j$ 步传 $M / 2^j$:

$$\begin{equation} \sum_{j=1}^{\log_2 N} \frac{M}{2^j \beta} = \frac{M}{\beta} \left( 1 - \frac{1}{N} \right) = \frac{(N-1) M}{N \beta} \label{eq:cc-scatter-binomial-bw} \end{equation}$$ $$\begin{equation} T_{\text{binomial-scatter}} = \lceil \log_2 N \rceil \cdot \alpha + \frac{(N-1) M}{N \beta} \label{eq:cc-scatter-binomial} \end{equation}$$

延迟项与带宽项同时达下界,是 Scatter 的理论最优算法

Scatter ↔ Gather 对偶

Scatter 数据流反转即得 Gather,代价公式相同:

$$\begin{equation} T_{\text{Gather}} = T_{\text{Scatter}} = \lceil \log_2 N \rceil \alpha + \frac{(N-1) M}{N \beta} \label{eq:cc-scatter-gather-duality} \end{equation}$$

Broadcast = Scatter + AllGather

大消息场景,可改写 Broadcast 为 Scatter + AllGather:先分发,再环状收集。Scatter 与 AllGather 都可用带宽最优 Ring 实现,实测大 $M$ 下优于直接 Broadcast。

Takeaway

知识点核心结论
Broadcast vs Scatter同 root,前者复制 $M$,后者切 $M / N$ 分片
延迟下界同为 $\lceil \log_2 N \rceil \cdot \alpha$
Broadcast 带宽下界$M / (d \beta)$, root 是瓶颈
Scatter 带宽下界$(N-1) M / (N d \beta)$
Broadcast 算法选型$M$ 二叉树,大 $M$ 分块二叉树流水线
Binomial Tree Scatter延迟 + 带宽同时最优
Gather 对偶Scatter 反向,公式同
大消息 Broadcast 改写Scatter + AllGather,带宽最优

@tbl-cc-onetomany-takeaway 一对多通信要点

参考资料