SHMEM:CANN多设备高性能通信库正式开源

📅 发布时间:2026/7/10 14:47:27 👁️ 浏览次数:
SHMEM:CANN多设备高性能通信库正式开源
SHMEMCANN多设备高性能通信库正式开源概述SHMEM 是CANN推出的面向模型开发者和算子开发者的高性能多设备通信库提供跨卡内存访问、通信-计算融合等核心能力降低分布式场景下设备间数据同步与通信融合算子的开发门槛。背景大模型时代通信已成为算力的第二战场随着大模型规模的持续扩张单卡算力早已无法满足训练与推理的需求。多卡分布式成为主流配置但随之而来的通信瓶颈问题愈发凸显——数据在多张 NPU 之间频繁搬运、同步、聚合而每一次跨卡通信的延迟都直接侵蚀着计算效率的上限。在这一背景下计算-通信融合逐渐从优化选项变成必选项。以 Matmul-AllReduce 融合、AllGather-Matmul 流水线为代表的融合算子正在成为顶尖推理框架和训练框架提升效率的核心手段。然而构建此类融合算子通常需要深入理解底层硬件通信机制当前CANN缺乏一套系统化、对开发者友好的多设备通信编程接口。SHMEM 正是为解决这一问题而诞生的。核心设计Host-Device 双侧协同架构SHMEM 采用Host 侧与 Device 侧协同的架构设计Host 侧负责进程初始化、对称内存堆管理、通信域Team创建、以及多进程 Bootstrap 协调确保多卡环境下资源的一致性配置。Device 侧在 AscendC Kernel 内部直接调用 RMARemote Memory Access、AMO原子内存操作、集合通信 等高性能接口实现 Kernel 内部的跨卡数据搬运与同步。这种分层设计将控制面与数据面彻底分离使 Kernel 开发者能够专注于算法逻辑而无需关心底层连接建立与资源管理的复杂细节。关键能力一览对称内存模型所有 Rank 的共享内存地址空间严格对称分布任意 Rank 可通过偏移直接访问其他 Rank 的内存彻底消除跨卡地址转换的心智负担// 分配对称内存所有 Rank 同步调用地址空间自动对齐void*ptraclshmem_malloc(size);// 在 Kernel 中直接 Put 数据到远端 Rankaclshmem_put(dest_ptr,src_ptr,nelems,pe);灵活的通信域Team管理支持将全局通信域TEAM_WORLD按需拆分为子域精确控制集合通信的参与范围天然适配张量并行、流水线并行等大模型分布式策略// 按步长切分通信域适配 Tensor Parallel 场景aclshmem_team_ttp_team;aclshmem_team_split_strided(ACLSHMEM_TEAM_WORLD,start,stride,size,tp_team);Device 侧原子操作AMO提供 Fetch-and-Add、Compare-and-Swap 等原子操作支持 Kernel 内部的无锁计数与细粒度同步是构建高性能通信融合算子的基础原语。集合通信直接下沉至 KernelAllReduce、AllGather、Broadcast 等集合通信操作可直接在 AscendC Kernel 内部调用与矩阵计算流水无缝衔接消除传统计算完成 → Host 下发通信 → 等待完成模式带来的调度开销。典型场景计算-通信融合算子SHMEM 最具代表性的应用场景是计算与通信的深度融合。以大模型推理中常见的Matmul-AllReduce和AllGather-Matmul为例传统方式下计算与通信串行执行AllReduce 的通信延迟完全暴露在关键路径上。而借助 SHMEM开发者可以在单个 Kernel 内同时驱动矩阵计算与通信流水计算单元持续执行 Matmul 分块通信引擎在计算执行期间完成远端数据搬运双流水并行通信延迟被计算时间完全掩盖在 Atlas 800I/800T A2/A3 系列硬件上融合算子能够有效降低通信开销优化计算流水线效率。直播时间2026年2月28日16:00 - 17:00B站/微信视频号搜索【昇腾CANN】观看直播参与直播互动可获CANN周边小礼品。