跳到主要内容

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,完成后接收缓冲区:

$$\begin{equation} B_r[0 .. m-1] = B_s[0 .. m-1] \label{eq:cc-p2p-recv-identity} \end{equation}$$

单跳时间公式

直连两节点间 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 要点

参考资料