P2P
单跳延迟组成、多跳转发三种模型及流水线分块的代价分析
核心要点:
- P2P 是所有集合通信的原子构建块
- 单跳代价 $\alpha + m / \beta$, $\alpha$ 由软件 + DMA + 同步三部分构成
- 多跳代价分 SAF / CT / Wormhole,关键差异在带宽项是否随跳数放大
- 流水线分块把多跳带宽项压回单跳级,最优块数 $k^* = \sqrt{h m / (\alpha \beta)}$
- 实际带宽受全双工 / 内存带宽 / 路径异构三重钳制
单跳直连代价
核心问题:两节点直连时 Send / Recv 耗时多少,$\alpha$ 由什么组成?
语义
Send / Recv 是有序对偶:Send(src, dst, buf, size) 把 src 上的 size 字节发到 dst,完成后接收缓冲区:
单跳时间公式
直连两节点间 P2P 单跳代价:
$$\begin{equation} T_{\text{direct}}(m) = \alpha + \frac{m}{\beta} \label{eq:cc-p2p-single-hop} \end{equation}$$$\alpha$ 三部分分解
启动延迟非单一来源,分软件 / DMA / 同步三段:
$$\begin{equation} \alpha = \alpha_{\text{sw}} + \alpha_{\text{dma}} + \alpha_{\text{sync}} \label{eq:cc-p2p-alpha-decomp} \end{equation}$$- $\alpha_{\text{sw}}$:用户态调用 → 驱动 / 内核态切换
- $\alpha_{\text{dma}}$: DMA 描述符填写 / 引擎启动
- $\alpha_{\text{sync}}$:接收端栅栏同步,多节点协同时显著放大
SG2260 实测 $\alpha_{\text{sw + dma}} \approx 0.25 \mu s$, $\alpha_{\text{sync}} \approx 0.3 \mu s$,单跳 ~$0.55 \mu s$; AllReduce 步骤栅栏放大到 ~$1.2 \mu s$。
多跳转发:SAF / CT / Wormhole
核心问题:两节点无直连时数据经中间节点转发,带宽项是否随跳数放大?
Store-and-Forward:带宽项乘 $h$
SAF 要求每跳完整接收后才转发,延迟与带宽项都乘以跳数 $h$:
$$\begin{equation} T_{\text{SAF}}(m, h) = h \cdot \left( \alpha + \frac{m}{\beta} \right) \label{eq:cc-p2p-saf} \end{equation}$$大消息在多跳下代价高昂,是软件层多跳通信的主形态。
Cut-Through:带宽项不随跳数放大
CT 在收到首字节即转发,消息像流水穿过中间节点:
$$\begin{equation} T_{\text{CT}}(m, h) = h \cdot \alpha + \frac{m}{\beta} \label{eq:cc-p2p-ct} \end{equation}$$加速比:
$$\begin{equation} \frac{T_{\text{SAF}}}{T_{\text{CT}}} = \frac{h \alpha + h m / \beta}{h \alpha + m / \beta} \label{eq:cc-p2p-saf-ct-speedup} \end{equation}$$$m \gg \alpha \beta$ 时加速比趋近 $h$。
Wormhole:适合片上 NoC
消息切 flit, header flit 引路,data flit 跟随。$t_{\text{route}} \ll \alpha$:
$$\begin{equation} T_{\text{wormhole}}(m, h) = h \cdot t_{\text{route}} + \frac{m}{\beta} \label{eq:cc-p2p-wormhole} \end{equation}$$三模型对比
| 模型 | 延迟项 | 带宽项 | 典型场景 |
|---|---|---|---|
| Store-and-Forward | $h \alpha$ | $h m / \beta$ | 软件层节点转发 |
| Cut-Through | $h \alpha$ | $m / \beta$ | 交换机网络 |
| Wormhole | $h \cdot t_{\text{route}}$ | $m / \beta$ | 片上 NoC |
@tbl-cc-p2p-forward-models 三种多跳转发模型对比
异构多跳路径的等效带宽
实际多跳常跨链路类型 (C2C → B2B),各跳 $\alpha, \beta$ 不同。SAF 下等效带宽为各跳带宽的调和平均:
$$\begin{equation} \beta_{\text{eff}} = \frac{1}{\sum_i 1 / \beta_i} \label{eq:cc-p2p-harmonic-bw} \end{equation}$$例:C2C ($\beta_1 = 64$ GB/s) + B2B ($\beta_2 = 25$ GB/s) 两跳,$\beta_{\text{eff}} \approx 18$ GB/s,远低于任一单跳。
流水线分块:把多跳带宽项压回单跳
核心问题:SAF 下多跳带宽项乘 $h$,能否用分块流水化解?
最优分块数
将 $m$ 字节切 $k$ 块,经 $h$ 跳 SAF 流水线:
$$\begin{equation} T_{\text{pipe}}(m, h, k) = (h + k - 1) \cdot \left( \alpha + \frac{m / k}{\beta} \right) \label{eq:cc-p2p-pipe-time} \end{equation}$$对 $k$ 求导取零得最优块数:
$$\begin{equation} k^* = \sqrt{\frac{h m}{\alpha \beta}} \label{eq:cc-p2p-pipe-opt-k} \end{equation}$$代回得最优时间:
$$\begin{equation} T^* = h \alpha + \frac{m}{\beta} + 2 \sqrt{\frac{h m \alpha}{\beta}} \label{eq:cc-p2p-pipe-opt-time} \end{equation}$$$m \gg h \alpha \beta$ 时 $T^* \to m / \beta$, 多跳带宽项压回单跳水准。
不只用于 P2P
流水线分块是集合通信核心优化手段,不限于 P2P:
- Ring AllReduce:切 $N$ 块,$N - 1$ 步流水线完成 ReduceScatter
- Pipelined Broadcast:在树 / 链上流水传播
并发与带宽竞争
核心问题:同时收发或多链路并发时,实际带宽受什么钳制?
全双工:收发互不竞争
收发占独立通道,并发时取 max 而非加:
$$\begin{equation} T_{\text{duplex}} = \max\left( \frac{m_s}{\beta}, \frac{m_r}{\beta} \right) \label{eq:cc-p2p-duplex} \end{equation}$$这是 Ring 算法的根基:每步每节点同时向后继发 + 从前驱收。
内存带宽钳制聚合带宽
多链路聚合带宽受内存带宽 $\beta_{\text{mem}}$ 钳制:
$$\begin{equation} \beta_{\text{actual}} = \min(d \beta, \beta_{\text{mem}}) \label{eq:cc-p2p-mem-bw} \end{equation}$$SG2260 双 CDMA 链路聚合 128 GB/s, DDR 仅 68.2 GB/s, DDR 成为瓶颈。
LLM 推理中的 P2P 用例
核心问题:P2P 在 LLM 推理中有哪些具体用例、通信模式和规模特征?
流水线并行 (PP) 阶段间激活
PP 相邻 stage 间激活传递是典型 P2P,单次数据量:
$$\begin{equation} M_{\text{act}} = b \times s \times h \label{eq:cc-pp-activation} \end{equation}$$(batch_size × seq_len × hidden_size)
前向 stage $i \to i+1$,反向 stage $i+1 \to i$。
KV Cache 迁移
推理中 KV Cache 重分布的数据量:
$$\begin{equation} M_{\text{kv}} = 2 \cdot n_{\text{layers}} \cdot n_{\text{heads}} \cdot s \cdot d_{\text{head}} \cdot \text{dtype\_size} \label{eq:cc-p2p-kv-size} \end{equation}$$DeepSeek-V3 MLA 把 KV Cache 压缩 5–8×,仍在 MB 级别。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 单跳代价 | $\alpha + m / \beta$, $\alpha$ = sw + dma + sync 三段 |
| SAF vs CT vs Wormhole | 带宽项是否随跳数放大决定多跳代价形态 |
| 异构路径等效带宽 | 调和平均,慢链路主导 |
| 流水线分块最优 $k^*$ | $\sqrt{h m / (\alpha \beta)}$,把多跳带宽项压回单跳 |
| 全双工 | 收发独立通道,取 max 不取和 |
| 多链路天花板 | $\min(d \beta, \beta_{\text{mem}})$,内存带宽常成瓶颈 |
| LLM 用途 | PP 激活 + KV Cache 迁移,数据量 MB 级 |
@tbl-cc-p2p-takeaway P2P 要点
参考资料
- Hockney, "The communication challenge for MPP", Parallel Computing 1994 — $\alpha\beta$ 模型
- Dally & Towles, "Principles and Practices of Interconnection Networks", Morgan Kaufmann 2003 — SAF / CT / Wormhole 路由模型
- Culler et al., "LogP: Towards a Realistic Model", PPOPP 1993
- SCCL Documentation v1.0 (SOPHGO) — SG2260 CDMA 数据路径与同步机制