CANN/asc-devkit核间同步IBSetAPI

发布时间:2026/10/26 23:25:53
CANN/asc-devkit核间同步IBSetAPI IBSet【免费下载链接】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 训练系列产品支持功能说明头文件路径为basic_api/kernel_operator_block_sync_intf.h。当不同核之间操作同一块全局内存且可能存在读后写、写后读以及写后写等数据依赖问题时通过调用该函数来插入同步语句来避免上述数据依赖时可能出现的数据读写错误问题。调用IBSet设置某一个核的标志位与IBWait成对使用表示核之间的同步等待指令被等待核中调用IBSet通过将值1写入全局内存中某块地址来通知等待核而等待核中调用IBWait持续读取全局内存中相应地址块的值直到其值变为1从而实现核间同步。函数原型template bool isAIVOnly true __aicore__ inline void IBSet(const GlobalTensorint32_t gmWorkspace, const LocalTensorint32_t ubWorkspace, int32_t blockIdx, int32_t eventID)参数说明表1模板参数说明参数名描述isAIVOnly控制是否为AIVOnly模式默认为true。表2接口参数说明参数名输入/输出描述gmWorkspace输入外部存储核状态的公共缓存类型为GlobalTensor。GlobalTensor数据结构的定义请参考GlobalTensor。ubWorkspace输入存储当前核状态的公共缓存。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。blockIdx输入表示等待核的idx号取值范围[0,核数-1]。eventID输入用来控制当前核的set、wait事件。返回值说明无约束说明gmWorkspace申请的空间最少要求为核数32ByteseventID_maxblockIdx_max*32Bytes32ByteseventID_max和blockIdx_max分别指eventID、blockIdx的最大值。需要注意的是如果是AIVOnly模式核数GetBlockNum()如果是MIX模式核数GetBlockNum()*2。ubWorkspace申请的空间最少要求为32Bytes。使用该接口进行多核控制时算子调用时指定的逻辑AI Core核数numBlocks必须保证不大于实际运行该算子的AI处理器核数否则框架进行多轮调度时会插入异常同步导致Kernel“卡死”现象。IBSet和IBWait配对使用时除了ubWorkspace其余所有参数都必须相同否则程序会在IBWait处卡死。分离模式下使用该接口进行两个核间的同步时仅对AIV核生效。IBSet接口的gmWorkspace缓存的值需要初始化为0。调用示例本示例实现功能为使用2个核进行数据处理每个核均是处理256个half类型数据。核0实现xy的操作并将结果放入z的前半部分核1将核0的计算结果放入x之后与y相加结果存入z的后半部分因此多个核之间需要进行数据同步。// sync_gm为外部存储核状态的公共缓存类型为GlobalTensorsync_buf为存储当前核状态的公共缓存类型为LocalTensor。 int32_t blockIdx AscendC::GetBlockIdx(); // 获取当前核。 if (blockIdx 1) { // 在核1设置IBWait将阻塞指令执行直到核0操作完成。 AscendC::IBWait(sync_gm, sync_buf, 0, 0); } ... if (blockIdx 0) { // 在核0设置IBSet当核0的操作完成后再执行核1的指令。 AscendC::IBSet(sync_gm, sync_buf, 0, 0); }完整样例请参考IBSet与IBWait核间同步样例。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询