Step 1: 首次传递与累加
GPU0→GPU1 发送 P3,GPU1→GPU2 发送 P0,GPU2→GPU3 发送 P1,GPU3→GPU0 发送 P2;接收端得到一次累加结果 P+。
Step 2: 二次传递与累加
继续沿同一方向接力传输累加后的切片:GPU0→GPU1 发送 P2+,GPU1→GPU2 发送 P3+,GPU2→GPU3 发送 P0+,GPU3→GPU0 发送 P1+。
Step 3: 末次传递形成满血梯度
最后一次沿环传输:GPU0→GPU1 发送 P1++,GPU1→GPU2 发送 P2++,GPU2→GPU3 发送 P3++,GPU3→GPU0 发送 P0++;切片回到属主 GPU,形成完整梯度 (Σ)。
Scatter: 释放冗余梯度
GPU0 只保留 ΣP0,GPU1 只保留 ΣP1,GPU2 保留 ΣP2,GPU3 保留 ΣP3。其余残缺梯度直接释放!单卡显存峰值降为 1/4。