CANN asc-devkit核间同步等待API

CANN asc-devkit核间同步等待API IBWait【免费下载链接】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 推理产品xAtlas 推理系列产品 AI Core√Atlas 推理系列产品 Vector CorexAtlas 训练系列产品√功能说明当不同核之间操作同一块全局内存且可能存在读后写、写后读以及写后写等数据依赖问题时通过调用该函数来插入同步语句来避免上述数据依赖时可能出现的数据读写错误问题。IBWait与IBSet成对出现配合使用表示核之间的同步等待指令等待某一个核操作完成。函数原型template bool isAIVOnly true __aicore__ inline void IBWait(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]不包含自身blockIdx。eventID输入用来控制当前核的set、wait事件。返回值说明无约束说明gmWorkspace申请的空间最少要求为核数 * 32Bytes * eventID_max blockIdx_max * 32Bytes 32Bytes。eventID_max和blockIdx_max分别指eventID、blockIdx的最大值 ubWorkspace申请的空间最少要求为32Bytes。使用该接口进行多核控制时算子调用时指定的逻辑numBlocks必须保证不大于实际运行该算子的AI处理器核数否则框架进行多轮调度时会插入异常同步导致Kernel“卡死”现象。调用示例调用样例请参考调用示例。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考