当前位置: 首页 > news >正文

Ascend C HCCL跨域同步接口

InterHcclGroupSync

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

  • Ascend 950PR/Ascend 950DT:不支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持

功能说明

用于等待一个跨通信域的通信任务完成。调用该接口后,本通信域后续下发的通信任务,均等待指定的srcGroupID通信域中的srcHandleID通信任务执行完成,才开始执行。

函数原型

__aicore__ inline void InterHcclGroupSync(int8_t srcGroupID, HcclHandle srcHandleID)

参数说明

参数名输入/输出描述
srcGroupID输入通信域编号,即后续通信任务所等待的通信任务所在的通信域编号。
srcHandleID输入通信任务,即后续通信任务所等待的通信任务的标识HcclHandle。

返回值说明

约束说明

  • 调用本接口前确保已调用过InitV2和SetCcTilingV2接口。
  • 本接口在AIC核或者AIV核上调用必须与对应的Prepare接口的调用核保持一致。
  • 一个通信域内,所有Prepare接口和InterHcclGroupSync接口的总调用次数不能超过63。

调用示例

本示例构造一个通信融合算子,该算子有1个输入xGM,2个输出alltoallGM和allgatherGM,另有tilingGM传入tiling数据。算子内有2个通信域,首先通信域0对输入进行AlltoAll通信,将结果输出至alltoallGM。当结果数据输出到alltoallGM完成后,通信域1将该结果alltoallGM作为AllGather通信的输入,并将通信结果输出至allgatherGM。

extern "C" __global__ __aicore__ void alltoall_allgather_custom(GM_ADDR xGM, GM_ADDR alltoallGM, GM_ADDR allgatherGM, GM_ADDR tilingGM) { REGISTER_TILING_DEFAULT( AlltoAllAllGatherCustomTilingData); // AlltoAllAllGatherCustomTilingData为对应算子头文件定义的结构体 GET_TILING_DATA_WITH_STRUCT(AlltoAllAllGatherCustomTilingData, tilingData, tilingGM); GM_ADDR contextGM0 = AscendC::GetHcclContext<0>(); GM_ADDR contextGM1 = AscendC::GetHcclContext<1>(); Hccl hccl0; Hccl hccl1; HcclDataType dtype = HcclDataType::HCCL_DATA_TYPE_FP16; const uint64_t dataCount = 10U; const uint64_t strideCount = 0U; if (AscendC::g_coreType == AIV) { // 仅使用AIV核进行通信 hccl0.InitV2(contextGM0, &tilingData); hccl1.InitV2(contextGM1, &tilingData); hccl0.SetCcTilingV2(offsetof(AlltoAllAllGatherCustomTilingData, alltoallTiling)); hccl1.SetCcTilingV2(offsetof(AlltoAllAllGatherCustomTilingData, allgatherTiling)); // 通信域0下发1个AlltoAll任务 auto group0_handle = hccl0.AlltoAll(xGM, alltoallGM, dataCount, dtype, strideCount); // 通信域1下发跨域依赖任务,保证通信域1后续的AllGather任务在通信域0的AlltoAll执行结束后,才开始执行 hccl1.InterHcclGroupSync(0, group0_handle); // 通信域1下发1个AllGather任务 auto group1_handle = hccl1.AllGather(alltoallGM, allgatherGM, dataCount, dtype, strideCount); hccl0.Commit(group0_handle); hccl1.Commit(group1_handle); hccl0.Wait(group0_handle); hccl1.Wait(group1_handle); AscendC::SyncAll<true>(); // 全AIV核同步,防止0核执行过快,提前调用hccl.Finalize()接口,导致其他核Wait卡死 hccl0.Finalize(); hccl1.Finalize(); } }

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1208099/

相关文章:

  • 股票交易记录系统构建:从数据采集到风险控制的Python实现
  • 济南黄金回收哪家靠谱不踩坑?实测避坑攻略 - 好物测评局
  • 2026 李沧装修口碑榜单|设计型口碑装企,筑佰家装饰凭先验收后支付与10年质保圈粉李沧业主 - 商业先知
  • 网络安全副业指南:漏洞挖掘 / 技术博客 / 竞赛奖金实战
  • 开源项目 Computer-Science-Study 使用指南,一站式获取优质学习资源
  • AI大模型学习路径全解析:从快速上手的应用开发到深入研究的算法工程
  • MiniCPM5-1B-Claude-Opus-Fable5-Thinking应用场景:从代码审查到文档生成的10个用例
  • 洛雪音乐音源完全指南:如何高效获取全网无损音乐资源
  • 4大技术挑战破解:Python环视系统从零到实时拼接的完整实现
  • 2026杭州上城区奢侈品回收红榜|本地人精选7家无套路实体店排名出炉 - 逸程奢侈品回收中心
  • 无锡本地实体逸程奢侈品回收,巴黎世家包包可上门回收 - 全城热点
  • Mac本地部署AI:Ollama与AppFoil离线大模型实战指南
  • SadTalker深度实战指南:从技术原理到高效部署的音频驱动面部动画方案
  • Servest Agent API详解:HTTP Keep-Alive连接的高级管理
  • Montserrat字体完全指南:免费获取与跨平台部署终极方案
  • 告别硬件堆叠!视频孪生+跨镜连续追踪,解锁智慧楼宇穿透式管理新路径
  • 2026石家庄旧金奢品回收攻略:正规无损鉴定,本地连锁头部体面兑现闲置黄金 - 企业家观察员
  • 开源模型 vs 商业 API 的三年 TCO 对比:硬件、人力和时间
  • 2026年7月最新深圳卡地亚官方售后客户服务热线与维修网点地址汇总 - 卡地亚服务中心
  • Apache SkyWalking 全面拥抱 AI:可观测性的智能进化
  • PaperQA2:科学文献RAG工具从入门到生产部署实践指南
  • 自制AI手机:低成本改造旧手机实现自动化操作
  • AI应用开发框架怎么选,关键看这四层能力
  • 一个漏洞奖励2w,这是真实的嘛!
  • 终极指南:使用gh_mirrors/xpath/xpath处理XML命名空间,避免常见陷阱的10个技巧
  • 2026年7月最新——临汾靠谱防水公司推荐:实测对比后的客观结论 - 吉林同城获客
  • Java 锁机制深度解析(系列一):总览与核心概念
  • 2026年怀化市装修公司榜单:璟连装饰高性价比整装与一城三县服务行业观察 - 商业先知
  • Docker安装PostgreSQL
  • 合肥共达职业技术学院单招复读报名怎么报?可以报名吗?升学率如何?官方最新发文 - 教育为先