
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),仅供参考