跳转至

01 NCCL 集合通信与底层拓扑算法

1. NCCL 通信算法:Ring vs Tree

  • Ring 环形算法
  • 数据切分为 \(N\) 份分片,在逻辑环上循环传递 \(2(N-1)\) 步。
  • 总传输数据量\(2 \times \frac{N-1}{N} \times \text{DataSize}\),带宽利用率高,极其适合大数据块通信(Large Buffer > 4MB)
  • Tree 树形算法 (Double Binary Tree)
  • 构建双二叉树结构,通信跳数仅为 \(2 \times \log_2(N)\)
  • 极其适合小数据块低延迟通信(Small Buffer < 512KB)
graph LR
    subgraph RingTopology["Ring AllReduce 拓扑 (8-GPU 环)"]
        G0["GPU 0"] --> G1["GPU 1"] --> G2["GPU 2"] --> G3["GPU 3"]
        G3 --> G4["GPU 4"] --> G5["GPU 5"] --> G6["GPU 6"] --> G7["GPU 7"]
        G7 --> G0
    end