SHARP
SHARP(Scalable Hierarchical Aggregation and Reduction Protocol,可扩展分层次聚合和归约协议)是一种聚合通信(e.g. ML 梯度聚合、FL 模型聚合)网络卸载技术。
SHARPv1:在 Switch-IB2 EDR InfiniBand 上实现,最大支持 256Byte 聚合通信卸载。
SHARPv2:在 Quantum HDR InfiniBand 上实现,最大支持 2GByte 聚合通信卸载。
在各种 HPC 和 AI 场景中,常常存在多种聚合类通信协议,这些聚合类通信由于涉及全局网络,常常会对 Application 的并行效率产生巨大的影响。
业内研究了多种优化聚合类通信效率的软件方法,但依旧没有很好的解决必须要在全局网络中进行多次通信才能完成整体聚合操作,且很容易引入网络拥塞。经过多种方法优化后,聚合类通信的延迟仍然比点对点通信高一个数量级以上。

针对这种情况,NVIDIA Mellanox 从 EDR InfiniBand Switch 开始引入了 SHARP 技术,在交换机芯片中集成了计算引擎单元,可以支持 16bit、32bit 及 64bit 定点计算或浮点计算,可以支持求和、求最小值、求最大值、求与、求或及异或等计算,可以支持 Barrier、Reduce、All-Reduce 等操作。
SHARP 模型,支持在 Infiniband Switch 内部每个端口部署 RDMA 引擎,接收报文并还原数据,进行应用加速。最典型的应用就是 MPI 的聚合通信操作的卸载,对 ML 等算法加速有明显的优化。
在多交换机组成的机群环境下,Mellanox 定义了一整套 SHARP 卸载机制,由聚合管理器(Aggregation Manager)在物理拓扑中构造一个逻辑的 SHARP 树。由 SHARP 树中的多个交换机并行分布式处理聚合类通信操作。
当 Host 需要进行全局通信例(e.g. All reduce)时,所有的 Host 把通信数据提交到各自连接的 Switch。
第一级 Switch 收到数据后,会使用内置的计算引擎对数据进行计算和处理,然后把结果数据提交到 SHARP 树的上一级 Switch。
上一级 Switch 也使用自己的计算引擎对从若干个 Switch 收上来结果数据做聚合处理,并继续向 SHARP 树的上一级递交。
到达 SHARP 树的 Root Switch 后,Root Switch 做最后的计算并把结果回发给所有的 Hosts 节点。