MINIBLOG

Blog Note Tags Links About
Home Search
Aug 25, 2026
miniyuan

SHArP


背景与概述

高性能计算中的集合通信瓶颈

定义:集合通信(Collective Communication)是并行计算中涉及一组进程共同参与的数据交换操作,如屏障同步(Barrier)、归约(Reduce)、全归约(Allreduce)等。

核心思想:随着 HPC 系统规模扩大和并行度提升,集合通信成为影响应用性能的关键瓶颈。传统实现依赖主机 CPU 管理算法,网络仅作为数据管道,导致数据多次穿越网络、CPU 开销大、延迟高。

背景与目的:

  • **Dennard 缩放定律(Dennard Scaling)**终结后,单核频率趋于饱和,系统性能提升依赖核心数量增加
  • 现代 HPC 系统采用众核架构(X86、Power、ARM、GPGPU、FPGA 等)
  • **协同设计(Co-Design)**架构理念兴起:网络设备应作为协处理器(Co-processor),在数据流经网络时直接处理,减少数据搬运
  • SHArP(Scalable Hierarchical Aggregation Protocol)旨在将集合归约操作卸载到网络硬件,实现”网内计算”(In-network Computing)

直观理解: 类比一下,传统方式像所有员工把文件送到总部(CPU)汇总,再发回;SHArP 则像在每个分公司(交换机)先进行初步汇总,只把汇总结果向上传递,大幅减少运输量。


SHArP v1:低延迟网内归约架构

聚合节点(Aggregation Node, AN)

定义:聚合节点是 SHArP 抽象中的基本逻辑单元,是聚合树(Aggregation Tree)中的一个节点,负责接收来自子节点的数据、执行归约操作,并将结果转发给父节点。

核心思想:AN 是一个逻辑构造,可以实例化为:

  • 服务器中的进程
  • 交换机设备中的进程
  • 交换机 ASIC 中的硬件逻辑

直观理解:AN 就像数学运算中的”合并点”,多个输入经过指定运算(求和、求最大/最小、位运算等)后产生一个输出。

聚合树(Aggregation Tree)

定义:聚合树定义了数据从端节点(End-node)进入、逐层向上归约、最终到达根节点(Root)的拓扑结构。结果分发阶段可以独立于聚合阶段进行。

核心思想:

  • SHArP 树是逻辑树,可覆盖在任意物理拓扑之上(胖树 Fat-tree、DragonFly+ 等)
  • 端节点(主机 HCA)作为树叶,AN 作为内部节点
  • 根节点完成最终归约后,将结果分发给指定目标
  • 每个 AN 可参与多棵树,但单次归约操作只能使用一棵树

结构示意:

输入层(主机端节点)→ 第一层 AN(叶交换机)→ 第二层 AN(根交换机)→ 根节点归约结果
         ↓
    结果分发(向下广播/组播)

值得注意的是:AN 之间的连接是逻辑的,不必遵循物理拓扑。端节点也不必连接到物理上最近的 AN。

聚合组(Aggregation Group)

定义:聚合组是参与特定集合操作的主机子集,对应于 MPI 通信子(Communicator)或 OpenSHMEM 的进程组。

核心思想:

  • 组创建时,AN 建立子树描述(记录子节点和父节点)
  • 支持组修剪(Group Trim):当子树宽度在某层变为 1 时,可直接终止于该层,无需到达树根,减少不必要的网络跳数
  • 一棵树可支持多个组,来自同一作业或不同作业

易错点:

  • 必须确保端到端的 SHArP 资源(如缓冲区)可用,避免多个归约操作竞争同一 AN 资源导致死锁

聚合操作(Aggregation Operation)

算法步骤:

  1. 发起请求

    • 输入:组成员的归约数据
    • 操作:每个成员向叶 AN 发送 SHArP 请求消息(包含聚合头部 + 归约载荷)
    • 输出:请求进入聚合树
  2. 逐层归约

    • 输入:来自子节点的数据
    • 操作:AN 收集所有子节点数据,执行归约运算(sum、min、max、bitwise OR/AND/XOR 等)
    • 输出:单一结果向量向上转发
    • 目的:在数据上行过程中逐步减少数据量
  3. 根节点完成

    • 输入:来自所有子树的归约结果
    • 操作:执行最终归约,产生全局结果
    • 输出:准备结果分发
  4. 结果分发

    • 输入:全局归约结果
    • 操作:根节点将结果发送给指定目标(MPI_Allreduce 发给全组、MPI_Reduce 发给根进程、或自定义目标)
    • 输出:操作完成通知

支持的运算:

  • 32/64 位有符号/无符号整数、浮点数
  • Sum、Min、Max、MinLoc、MaxLoc
  • Bitwise OR、AND、XOR
  • 支持 MPI 标准和 OpenSHMEM 规范所需的大部分操作

注:浮点加法满足交换律但不满足结合律。为保证结果可重复,SwitchIB-2 实现了确定性执行顺序:所有操作数到达后,按预定固定顺序执行归约,而非到达顺序。

SwitchIB-2 硬件实现

定义:SHArP 的首个硬件实现集成在 Mellanox SwitchIB-2 ASIC 中,AN 逻辑作为虚拟目标通道适配器(TCA)嵌入交换机。

核心思想:

  • 利用高基数(Radix-36)InfiniBand 交换机构建浅层归约树
  • 支持多达 64 棵树、大量组和数百个并发归约操作
  • 使用 InfiniBand 可靠连接(RC)传输保证数据可靠性
  • 结果分发使用不可靠数据报(UD)组播实现低延迟,必要时配合 RC 重传

结构示意:

[SwitchIB-2 交换机]
    ├── 36 个 EDR 端口
    └── 内部虚拟 TCA(SHArP Node)
            ├── 连接内部逻辑端口
            ├── 支持 RC 传输(上行归约)
            └── 支持 UD 传输(结果组播)

SHArP v2:Streaming-Aggregation 流式聚合

背景与动机

定义:Streaming-Aggregation 是 SHArP 在 HDR InfiniBand 时代引入的新能力,针对大消息归约(Long-vector Reduction)进行带宽优化。

核心思想:

  • v1 的低延迟聚合(Low-latency Aggregation, LLA)针对小消息(<256 字节)优化,但受限于协议开销,无法高效处理大消息
  • Streaming-Aggregation 通过流水线(Pipelining)实现接近线速(Wire-speed)的归约带宽
  • 数据以 MTU 粒度流入归约单元,边传输边计算

背景与目的:

  • 大消息归约(如 MB 级别)在 AI/ML(PyTorch)、分子动力学(DL-Poly)等应用中日益重要
  • 主机端算法(如 Rabenseifner 算法)需要多次网络遍历,带宽利用率低
  • 目标:实现与点对点传输相当的归约带宽

流式聚合树与协议

核心思想:

  • 每棵归约树标记为”低延迟型”或”流式聚合型”
  • 使用 InfiniBand RC 传输进行树间数据传输,确保网络端可靠性
  • 结果分发不再使用 UD 组播(大消息下带宽减半),而是采用新的可靠广播协议

树锁定机制(Tree Locking):

  • 为防止聚合缓冲区被无限期占用,引入锁定协议
  • 进程通过低延迟树发送锁定请求,资源沿树向上锁定
  • 可指定锁定次数(如仅锁定一次归约),或在整个通信子生命周期内锁定
  • 锁定成本约等于一次屏障同步

交换机级流水线归约

定义:在交换机内部,数据通过硬件流水线逐段归约,保持高吞吐。

核心思想:

  • 交换机端口成对配置,形成两个半环(Half-ring)
  • 数据以 MTU 粒度进入组合器(Combiner),两两归约后向上传递
  • 顶层 CFU(Collective Functional Unit)产生最终结果并转发

结构示意:

端口1 ──→ 组合器C1 ──→ 组合器C2 ──→ 组合器C3 ──→ 组合器C4 ──┐
端口2 ──→    ↑                                    │            │
端口3 ────────┘                                    │            ▼
端口4 ─────────────────────────────────────────────┘         CFU ──→ 输出到网络
端口5 ──→ 组合器C5 ──→ 组合器C6 ──→ 组合器C7 ──→ 组合器C8 ──→    ↑
端口6 ──→    ↑                                                    │
端口7 ────────┘                                                    │
端口8 ─────────────────────────────────────────────────────────────┘

直观理解:就像工厂流水线上的装配工位,每个工位(组合器)同时处理不同批次的数据片段,整体产出连续不断。

可靠结果分发

核心思想:对于大消息,不能使用 UD 组播(不可靠且需双份发送),而是使用可靠单播树:

  • 根节点通过 RC 发送结果到子节点
  • 每个 AN 收到数据后,提取 SHArP 组句柄,查表确定转发端口列表
  • 使用优化的可靠包生成器复制数据,构造新的 RC 消息发送给下一级
  • 继续直到数据到达所有叶节点

性能对比与分析

微基准测试对比

指标SHArP v1 (SwitchIB-2)SHArP v2 Streaming (Quantum)主机端算法备注
优化目标小消息延迟大消息带宽通用—
典型消息大小0–256 字节4KB–256MB+全范围—
128节点 8B Allreduce2.83 μs—6.01 μs (HPC-X) / 11.90 μs (MVAPICH-2)v1 提升 2.1–3.2 倍
128节点 4KB Allreduce14.48 μs (流水线)—46.93 μs流水线提升 3.24 倍
64节点 1MB Allreduce—接近线速延迟高 3.5 倍v2 带宽达 95% 网络带宽
64节点 256MB Allreduce—~96% Ping-Pong 带宽带宽低 4.8 倍—
树基数(Radix)36高基数(40+)软件树基数通常为 2浅层树降低跳数
并发操作支持数百个大规模并发受 CPU 限制—

算法切换点

消息大小范围推荐算法原因
0 – 4KB低延迟聚合(LLA)延迟主导,LLA 开销最小
4KB – 16KB视情况而定若需树锁定,切换点约 16KB
16KB+Streaming-Aggregation带宽主导,流水线效率最高

应用级性能影响

应用/框架测试配置性能提升说明
OpenFOAM128节点,icoFoam 求解器0.5% – 15%8字节 Allreduce 密集;负载越均衡,提升越明显
DL-Poly24节点,32进程/节点~4%大向量归约(~524KB)时间从 6.85s 降至 4.73s
PyTorch (MLPerf)4节点 8GPU,Transformer10% – 18%NCCL 集成 SHArP;归约时间占比从 28% 降至 20%

SHArP 架构优势总结

核心优势

  1. 卸载 CPU:归约运算在交换机完成,释放主机 CPU/GPU 计算周期
  2. 减少数据搬运:数据上行过程中体积递减,减少网络流量
  3. 主机无关进度(Host-independent Progress):归约进度不依赖主机软件调度,避免系统噪声(System Noise)影响
  4. 浅层高基数树:利用高端口密度交换机(36/40+ 端口),构建 2-3 层树即可支持 10,000+ 节点
  5. 多租户支持:多个作业共享网络资源,各组操作互不干扰(Partition Key 隔离)

与相关工作的对比

方案实现位置支持规模特点局限性
SHArP交换机 ASIC大规模(10K+ 节点)高基数树、多并发、大小消息双优化需要特定硬件支持
Blue Gene/Q网络 + 主机 CPU大规模深度集成系统定制化强,不通用
Cray AriesHCA(网卡)中等64字节归约,基数<=32端点归约,路径较长
CORE-DirectHCA端点级卸载通信依赖管理不卸载计算
NetAgg网络中间盒数据中心分区/聚合操作非 HPC 专用
主机端算法主机 CPU通用灵活、无需专用硬件延迟高、带宽低、CPU 开销大

常见疑问与解答

Q1: SHArP 的聚合树与物理拓扑是什么关系?

SHArP 树是逻辑树,可覆盖在任意物理拓扑之上。虽然通常尽量将逻辑树中相连的 AN 映射到物理上直接相连的交换机以减少延迟,但这不是必须的。这种解耦使 SHArP 能适配胖树、超立方体、DragonFly+ 等多种拓扑。

Q2: 为什么浮点归约需要确定性顺序?

浮点加法是非结合运算(Non-associative),即 (a+b)+c≠a+(b+c)(a+b)+c \neq a+(b+c)(a+b)+c=a+(b+c)。如果按数据到达顺序归约,每次运行结果可能不同。SwitchIB-2 收集所有操作数后按固定顺序计算,确保结果可重复(Reproducible)。

Q3: Streaming-Aggregation 为何需要”树锁定”?

大消息归约需要在 AN 中缓冲数据片段直到所有子节点数据到达才能组合。如果缓冲区被部分到达的操作无限期占用,会阻塞其他操作。树锁定确保资源仅在真正需要时被预留,类似屏障同步的锁定开销换取了资源安全性。

Q4: SHArP v1 和 v2 如何选择使用?

两者是互补关系而非替代。v1 的低延迟聚合(LLA)适合小消息(<4KB)和屏障同步;v2 的 Streaming-Aggregation 适合中大消息(>4KB–16KB 切换点)。MPI/NCCL 实现通常根据消息大小自动选择算法。

Q5: 网络硬件故障时 SHArP 如何处理?

SHArP 的错误处理策略是通知而非恢复。当检测到传输错误、端点错误或协议错误时,聚合管理器(AM)通知主机进程归约失败,并释放相关资源。应用程序可选择重试 SHArP 操作或回退到主机端算法。由于网络级不可恢复错误的发生频率远低于聚合操作持续时间,这种简化设计是合理的。

Q6: SHArP 对 AI/ML 训练为何越来越重要?

分布式深度学习(如 PyTorch、TensorFlow)依赖频繁的梯度全归约(Gradient Allreduce)。随着模型规模增大,梯度同步的带宽需求剧增。SHArP 将梯度归约卸载到网络,不仅降低延迟,还使 GPU 不必等待 CPU 完成归约计算,显著提升端到端训练吞吐。

目录
  • 背景与概述
  • 高性能计算中的集合通信瓶颈
  • SHArP v1:低延迟网内归约架构
  • 聚合节点(Aggregation Node, AN)
  • 聚合树(Aggregation Tree)
  • 聚合组(Aggregation Group)
  • 聚合操作(Aggregation Operation)
  • SwitchIB-2 硬件实现
  • SHArP v2:Streaming-Aggregation 流式聚合
  • 背景与动机
  • 流式聚合树与协议
  • 交换机级流水线归约
  • 可靠结果分发
  • 性能对比与分析
  • 微基准测试对比
  • 算法切换点
  • 应用级性能影响
  • SHArP 架构优势总结
  • 核心优势
  • 与相关工作的对比
  • 常见疑问与解答
目录
  • 背景与概述
  • 高性能计算中的集合通信瓶颈
  • SHArP v1:低延迟网内归约架构
  • 聚合节点(Aggregation Node, AN)
  • 聚合树(Aggregation Tree)
  • 聚合组(Aggregation Group)
  • 聚合操作(Aggregation Operation)
  • SwitchIB-2 硬件实现
  • SHArP v2:Streaming-Aggregation 流式聚合
  • 背景与动机
  • 流式聚合树与协议
  • 交换机级流水线归约
  • 可靠结果分发
  • 性能对比与分析
  • 微基准测试对比
  • 算法切换点
  • 应用级性能影响
  • SHArP 架构优势总结
  • 核心优势
  • 与相关工作的对比
  • 常见疑问与解答
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo