news 2026/5/9 22:20:15

CANN/asc-devkit:AlltoAllvWrite集合通信API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit:AlltoAllvWrite集合通信API

AlltoAllvWrite

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

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

x

Atlas A2 训练系列产品 / Atlas A2 推理系列产品

x

功能说明

集合通信AlltoAllvWrite的任务下发接口,返回该任务的标识handleId给用户。

AlltoAllvWrite的功能为:通信域内的卡互相发送和接收数据,并且定制每张卡给其它卡发送的数据量和从其它卡接收的数据量,以及定制发送和接收的数据在内存中的偏移。结合原型中的参数,描述接口功能,具体为:本卡发送地址偏移为sendOffsets[i]字节且大小为sendSizes[i]字节的数据给第i张卡,remoteWinOffset表示对端卡发送数据的地址偏移,localDataSize表示发送给本卡的数据大小。注意:这里的偏移和数据量均为字节数。

函数原型

template <bool commit = false> __aicore__ inline HcclHandle AlltoAllvWrite(GM_ADDR usrIn, GM_ADDR sendOffsets, GM_ADDR sendSizes, uint64_t remoteWinOffset, uint64_t localDataSize)

参数说明

表 1模板参数说明

参数名

输入/输出

描述

commit

输入

bool类型。参数取值如下:

  • true:在调用Prepare接口时,Commit同步通知服务端可以执行该通信任务。
  • false:在调用Prepare接口时,不通知服务端执行该通信任务。

表 2接口参数说明

参数名

输入/输出

描述

usrIn

输入

源数据buffer地址。

sendOffsets

输入

待发送的每个分片的数据大小,以字节为单位。

sendSizes

输入

待发送的每个分片的偏移,以字节为单位。

remoteWinOffset

输入

对端卡发送的数据偏移,以字节为单位。

localDataSize

输入

发送给本卡的数据大小,以字节为单位。

返回值说明

返回该任务的标识handleId,handleId大于等于0。调用失败时,返回 -1。

约束说明

  • 调用本接口前确保已调用过InitV2和SetCcTilingV2接口。
  • 若HCCL对象的模板参数config未指定下发通信任务的核,则该接口只能在AIC核或者AIV核两者之一上调用。若HCCL对象的模板参数config指定了下发通信任务的核,则该接口可以在AIC核和AIV核上同时调用,接口内部根据指定的核的类型,在对应的AIC核、AIV核二者之一下发该通信任务。
  • 一个通信域内,所有Prepare接口和InterHcclGroupSync接口的总调用次数不能超过63。
  • 对于Ascend 950PR/Ascend 950DT,通信服务端为CCU时,单次最大通信数据量不能超过256M。

调用示例

extern "C" __global__ __aicore__ void alltoallvwrite_custom(GM_ADDR xGM, GM_ADDR yGM, GM_ADDR workspaceGM, GM_ADDR tilingGM) { REGISTER_TILING_DEFAULT(AllToAllVWriteCustomTilingData); //AllToAllVWriteCustomTilingData为对应算子头文件定义的结构体 GET_TILING_DATA_WITH_STRUCT(AllToAllVWriteCustomTilingData, tilingData, tilingGM); auto &&cfg = tilingData.param; uint32_t M = cfg.M; uint32_t K = cfg.K; uint32_t dataType = cfg.dataType; uint32_t dataTypeSize = cfg.dataTypeSize; KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_MIX_AIC_1_2); Hccl<HcclServerType::HCCL_SERVER_TYPE_CCU> hccl; GM_ADDR context = GetHcclContext<HCCL_GROUP_ID_0>(); hccl.InitV2(context, &tilingData); hccl.SetCcTilingV2(offsetof(AllToAllVCustomV3TilingData, mc2CcTiling)); uint32_t rankDim = hccl.GetRankDim(); uint32_t rankId = hccl.GetRankId(); uint64_t perRankDataSize_ = M * K * dataTypeSize / rankDim; GM_ADDR sendSizeGM_ = workspaceGM; GM_ADDR sendOffsetGM_ = sendSizeGM_ + rankDim * sizeof(uint64_t) * 2; __gm__ uint64_t *sendSizes = reinterpret_cast<__gm__ uint64_t *>(sendSizeGM_); __gm__ uint64_t *sendOffsets = reinterpret_cast<__gm__ uint64_t *>(sendOffsetGM_); for (uint32_t i = 0U; i < rankDim; i++) { // 当前ccu通信都是双die,所以sendSize和sendOffset需要等分切成die0和die1的数据 sendSizes[i] = perRankDataSize_ / 2; sendSizes[i + rankDim] = perRankDataSize_ - perRankDataSize_ / 2; sendOffsets[i] = i * perRankDataSize_; sendOffsets[i + rankDim] = i * perRankDataSize_ + sendSizes[i]; } uint64_t remoteWinOffset = rankId * perRankDataSize_; uint64_t localDataSize = perRankDataSize_; if (TILING_KEY_IS(1000UL)) { if ASCEND_IS_AIV { AscendC::HcclHandle handleId = -1; handleId = hccl.AlltoAllvWrite<true>(xGM, sendOffsetGM_, sendSizeGM_, remoteWinOffset, localDataSize); hccl.Wait(handleId); AscendC::SyncAll<true>(); // 全AIV核同步,防止0核执行过快,提前调用hccl.Finalize()接口,导致其他核Wait卡死 hccl.Finalize(); } } }

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 22:19:32

魔兽争霸3终极兼容性解决方案:WarcraftHelper完整指南

魔兽争霸3终极兼容性解决方案&#xff1a;WarcraftHelper完整指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在Windows 11上的兼…

作者头像 李华
网站建设 2026/5/9 22:17:48

金融时序预测可解释AI实战:从SHAP到LIME的模型透明度构建

1. 项目概述&#xff1a;为什么金融预测需要“看得懂”的AI&#xff1f;在金融领域&#xff0c;时间序列预测——无论是股票价格、汇率波动、还是市场风险指标——从来都不是一个纯粹的数学游戏。从业者&#xff0c;无论是量化研究员、风险分析师还是投资经理&#xff0c;都面临…

作者头像 李华
网站建设 2026/5/9 22:11:31

CANN/ops-math 对角线张量算子

aclnnDiagFlat 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math &#x1f4c4; 查看源码 产品支持情况 产品是否支持 Ascend 950PR/Ascend 950DT √ Atlas A3 训…

作者头像 李华
网站建设 2026/5/9 22:07:15

《QGIS空间数据处理与高级制图》001:什么是空间数据预处理?

作者&#xff1a;翰墨之道&#xff0c;毕业于国际知名大学空间信息与计算机专业&#xff0c;获硕士学位&#xff0c;现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发&#xff0c;精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、…

作者头像 李华
网站建设 2026/5/9 22:06:21

别再死磕CRUD了!程序员转智能体开发,3个月就能落地商用项目

文章目录前言一、先戳破现实&#xff1a;2026年&#xff0c;只会CRUD的程序员&#xff0c;到底走到了哪一步&#xff1f;1.1 不是行业卷&#xff0c;是你抱着十年前的技术栈原地踏步1.2 别再自欺欺人了&#xff1a;AI写CRUD&#xff0c;真的比你强太多二、别被忽悠了&#xff0…

作者头像 李华
网站建设 2026/5/9 22:05:58

CANN/opbase AI CPU参数处理器接口

aicpu_args_handler 【免费下载链接】opbase 本项目是CANN算子库的基础框架库&#xff0c;为算子提供公共依赖文件和基础调度能力。 项目地址: https://gitcode.com/cann/opbase 本章接口为预留接口&#xff0c;后续有可能变更或废弃&#xff0c;不建议开发者使用&#…

作者头像 李华