跳到主要内容

P2P 点对点通信

P2P(Point-to-Point)通信是所有集合通信的原子构建块。每一次集合操作最终都可以分解为一系列 Send/Recv 操作。理解 P2P 的代价模型和优化空间,是分析上层集合通信算法的基础。

基本原理

语义定义

Send(src, dst, buf, size):节点 src 将缓冲区 buf 中的 size 字节数据发送到节点 dst

Recv(src, dst, buf, size):节点 dst 从节点 src 接收 size 字节数据到缓冲区 buf

操作完成后,接收缓冲区满足:

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

单跳直连代价

当两个节点通过一条直接链路相连时:

$$\begin{equation} T_{\text{direct}}(m) = \alpha + \frac{m}{\beta} \label{eq:p2p-single-hop-latency} \end{equation}$$

启动延迟 $\alpha$ 由三部分组成:

$$\begin{equation} \alpha = \alpha_{\text{sw}} + \alpha_{\text{dma}} + \alpha_{\text{sync}} \label{eq:p2p-startup-latency-decomposition} \end{equation}$$

以 SG2260 为例:$\alpha_{\text{startup}} = 0.25 \mu s$$\alpha_{\text{sync}} = 0.3 \mu s$,合计约 $0.55 \mu s$;在 AllReduce 步骤中,多节点栅栏同步将延迟放大到 $1.2 \mu s$

多跳路由通信

当两个节点没有直接链路时,数据必须经过中间节点转发。

三种转发模型

Store-and-Forward(存储转发)

每个中间节点接收完整消息后再转发到下一跳。经过 $h$ 跳(各跳参数相同):

$$\begin{equation} T_{\text{SAF}}(m, h) = h \cdot \left(\alpha + \frac{m}{\beta}\right) = h\alpha + \frac{hm}{\beta} \label{eq:p2p-store-and-forward} \end{equation}$$

延迟项和带宽项都乘以 $h$,大消息在多跳场景下代价高昂。

Cut-Through(直通转发)

中间节点收到消息的第一个字节后就开始转发:

$$\begin{equation} T_{\text{CT}}(m, h) = h \cdot \alpha + \frac{m}{\beta} \label{eq:p2p-cut-through} \end{equation}$$

关键区别:带宽项不随跳数增长,消息像流水一样穿过中间节点。

$$\begin{equation} \frac{T_{\text{SAF}}}{T_{\text{CT}}} = \frac{h\alpha + hm/\beta}{h\alpha + m/\beta} \label{eq:p2p-saf-ct-speedup-ratio} \end{equation}$$

$m \gg \alpha\beta$ 时(大消息),加速比趋近 $h$

Wormhole Routing(虫洞路由)

消息切分为固定大小的 flit,header flit 包含路由信息,后续 data flit 跟随穿过网络:

$$\begin{equation} T_{\text{wormhole}}(m, h) = h \cdot t_{\text{route}} + \frac{m}{\beta} \label{eq:p2p-wormhole-routing} \end{equation}$$

延迟项几乎与跳数无关($t_{\text{route}} \ll \alpha$),适合片上 NoC。

对比总结

模型延迟项带宽项适用场景
Store-and-Forward$h\alpha$$hm/\beta$软件层通信
Cut-Through$h\alpha$$m/\beta$交换机网络
Wormhole$h \cdot t_{\text{route}}$$m/\beta$片上 NoC

异构多跳路径

实际系统中不同跳的参数差异显著。以 C2C → B2B 两跳路径为例:

  • 跳 1(C2C):$\alpha_1 = 0.25 \mu s$$\beta_1 = 64$ GB/s
  • 跳 2(B2B):$\alpha_2 = 2 \mu s$$\beta_2 = 25$ GB/s

等效带宽为调和平均,远低于任一单跳:

$$\begin{equation} \beta_{\text{eff}} = \frac{1}{\sum_i 1/\beta_i} = \frac{1}{1/64 + 1/25} \approx 18.0 \text{ GB/s} \label{eq:p2p-effective-bandwidth-harmonic} \end{equation}$$

流水线分块传输

将大消息切分为多个小块,通过流水线方式传输,是优化多跳 P2P 的关键技术。

最优分块数推导

$m$ 字节消息切分为 $k$ 块(每块 $m/k$),经 $h$ 跳 Store-and-Forward:

$$\begin{equation} T_{\text{pipeline-SAF}}(m, h, k) = (h + k - 1) \cdot \left(\alpha + \frac{m/k}{\beta}\right) \label{eq:p2p-pipeline-saf-latency} \end{equation}$$

$k$ 求导令 $dT/dk = 0$

$$\begin{equation} k^* = \sqrt{\frac{hm}{\alpha\beta}} \label{eq:p2p-optimal-chunk-count} \end{equation}$$

代入得最优时间:

$$\begin{equation} T^* = h\alpha + \frac{m}{\beta} + 2\sqrt{\frac{hm\alpha}{\beta}} \label{eq:p2p-optimal-pipeline-latency} \end{equation}$$

$m \gg h\alpha\beta$ 时,$T^* \approx m/\beta$,流水线使多跳通信的带宽项趋近于单跳。

流水线分块不仅用于 P2P 多跳场景,更是集合通信的核心优化手段:

  • Ring AllReduce:将消息切成 $N$ 块,$N-1$ 步流水线完成 ReduceScatter
  • Pipelined Broadcast:在树/链上流水传播

并发通信与带宽竞争

全双工利用

全双工链路上,发送和接收使用独立通道,互不竞争。同时发送 $m_s$ 和接收 $m_r$

$$\begin{equation} T = \max\left(\frac{m_s}{\beta}, \frac{m_r}{\beta}\right) \label{eq:p2p-full-duplex-latency} \end{equation}$$

不是 $(m_s + m_r)/\beta$。这对 Ring 算法尤为重要:每步中每个节点同时向后继发送、从前驱接收。

内存带宽瓶颈

拥有 $d$ 条独立链路的节点聚合带宽受限于内存带宽 $\beta_{\text{mem}}$

$$\begin{equation} \beta_{\text{actual}} = \min(d\beta, \beta_{\text{mem}}) \label{eq:p2p-memory-bandwidth-bottleneck} \end{equation}$$

以 SG2260 为例:CDMA 带宽 64 GB/s,DDR 带宽 68.2 GB/s。如果有 2 条 CDMA 链路同时活跃,聚合 CDMA 带宽 128 GB/s 超过 DDR 带宽,DDR 成为瓶颈。

P2P 在 LLM 推理中的应用

流水线并行(PP)

PP 中相邻 stage 之间的激活值传递是典型 P2P:

  • 数据量:$M_{\text{act}} = b \times s \times h$(batch_size $\times$ seq_len $\times$ hidden_size)
  • 方向:前向 stage $i$ → stage $i+1$,反向 stage $i+1$ → stage $i$

KV Cache 迁移

推理中的 KV Cache 重分布:

$$\begin{equation} M_{\text{kv}} = 2 \times n_{\text{layers}} \times n_{\text{heads}} \times s \times d_{\text{head}} \times \text{dtype\_size} \label{eq:p2p-kv-cache-size} \end{equation}$$

DeepSeek-V3 MLA 将 KV Cache 压缩 5-8x,但仍在 MB 级别。

参考资料