MPI Reduce/AllReduce Algorithms

Rabenseifner (ICCS 2004) 系统优化 MPI_ReduceMPI_Allreduce——生产环境 profiling 显示二者占 MPI 时间 >40%。论文给出 五种算法 及按 进程数 p向量长度 n 的自适应选择,成为现代 MPI/NCCL 归约实现的经典参照(recursive halving & doubling 已进入 MPICH-2)。

Author: Rolf Rabenseifner (HLRS, Stuttgart) | Venue: ICCS 2004, LNCS 3036

代价模型

与 Thakur & Gropp 一致:

符号含义
α + nβ双向消息(latency + per-byte)
α_uni + nβ_uni单向(二叉树常用)
γ每字节归约运算成本;p 进程最优计算 (p−1)/p · nγ

五种算法概览

算法步数/规模最优区间要点
Binary tree⌊lg p⌋短向量每步全向量;后半进程 idle → 负载不均
Recursive doubling⌊lg p⌋极短向量距离倍增;双端冗余计算同一结果
Halving & doubling (RHD)2⌊lg p⌋长向量、2 的幂 preduce-scatter + allgather;~2nβ 带宽最优级
Binary blocks块内 RHD非 2 的幂、长向量、大 pp 分解为 2 的幂块和
Ring2(p−1)中等非 POT、小 p步进 reduce-scatter + 环 allgather

Recursive halving & doubling(现代默认基础)

Phase 1 — Reduce-scatter:
  递归向量折半 + 距离倍增 → 每进程持 1/p 归约片段

Phase 2 — Allgather:
  递归向量倍增 + 距离折半 → 全进程获完整结果

非 2 的幂: 先剥离 r = p − 2^⌊lg p⌋ 进程(偶/奇配对交换半向量),再对 p′ = 2^⌊lg p⌋ 进程执行 RHD。

相对 Thakur 的 rank-ordered reduce-scatter:本算法 不要求 scatter 顺序 → 可优先与近邻交换,利于分层网络。

Ring AllReduce

Linear and Ring Topology 逻辑环一致:

  • Reduce-scatter: p−1 步,步 i 向 rank+i 发送、从 rank−i 接收对应 chunk 并归约
  • Allgather: p−1 步,chunk 沿环右传(stride 1)

带宽友好、latency O(p) — 仅适合 小 p 或非 POT 中等规模。

自适应选择

(p, n) 在运行时切换算法(Cray T3E 900 实测 heatmap):

n典型选择
≤32 Brecursive doubling
≤1 KBbinary tree / vendor / doubling
长、小 pring
长、大 p、非 POTbinary blocks
长、POThalving & doubling

25% 生产任务 p 非 2 的幂 → binary blocks / ring 不可忽略。

实测加速(相对当年 vendor)

平台长向量收益
Cray T3E最高 ~100×(maxloc);sum 亦有数倍
IBM SP1.5–5×(8 KB–8 MB);hybrid MPI/SMP 约 1.5–3×

与 ML / 片上互连的关联

场景联系
Tensor Parallel AllReduce训练/推理 TP 梯度或 activation 同步 — 短向量→tree/doubling,长→RHD/ring
WSE Reduce Algorithmsreduce-scatter + allgather 分解;WSE 另加 Star/Chain/Auto-Gen
Collective-Capable NoC硬件 offload 归约,避免软件 collective 占互连
M2N CommunicationMoE disagg 用 M2N 而非对称 AllReduce
Distributed GEMM AlgorithmsSUMMA/Cannon 中 broadcast、ring shift 原语

谱系

Inverse broadcast / binary tree (短向量)
    → Recursive doubling (极短)
    → Rabenseifner RHD + binary blocks + ring (2004, MPICH-2)
    → Thakur & Gropp MPICH tuning (2003/2004)
    → NCCL/MPI 多算法 runtime 选择
    → [WSE Auto-Gen Reduce](/concepts/wse-reduce-algorithms.md) (模型驱动搜索, 2024)

相关页面

Citations

[1] Rabenseifner_Collective_Reduction_Operations_2004.pdf — Rabenseifner, ICCS 2004