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 级别。
参考资料
- 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 数据路径与同步机制