CANN/asc-devkit:核间同步NotifyNextBlock 📅 2026/7/16 15:31:07 NotifyNextBlock【免费下载链接】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_determine_compute_sync_intf.h。WaitPreBlock和NotifyNextBlock是核间同步控制接口。NotifyNextBlock通过写全局内存来通知其他核当前核已执行完成其他核可以继续往下执行WaitPreBlock通过读取全局内存判断当前核是否可以继续往下执行。WaitPreBlock和NotifyNextBlock必须与InitDetermineComputeWorkspace接口配合使用这三个接口组合使用能够确保多个AIV核严格按照blockIdx的升序执行适用于要求确定性计算的场景确定性计算的具体含义请参考确定性计算。函数原型__aicore__ inline void NotifyNextBlock(GlobalTensorint32_t gmWorkspace, LocalTensorint32_t ubWorkspace)参数说明表1接口参数说明参数名称输入/输出含义gmWorkspace输入临时空间通过写gmWorkspace通知其他核当前核已执行完成其他核可以继续往下执行类型为GlobalTensor。ubWorkspace输入临时空间用于操作gmWorkspace类型为LocalTensor。返回值说明无约束说明要实现确定性计算需要保证每个核调用NotifyNextBlock/WaitPreBlock接口的次数相同。如果调用了NotifyNextBlock没有与之配对的WaitPreBlock会导致非确定性计算、输出结果可能不符合预期如果调用了WaitPreBlock没有与之配对的NotifyNextBlock会导致程序卡死。使用接口前请确保已经调用InitDetermineComputeWorkspace接口初始化共享内存。gmWorkspace申请的空间最少要求为GetBlockNum()*32BytesubWorkspace申请的空间最少要求为GetBlockNum()*3232Bytes。使用该接口进行多核同步时仅对AIV核生效WaitPreBlock和NotifyNextBlock之间仅支持插入矢量计算相关指令对矩阵计算相关指令不生效。使用该接口进行多核控制时算子调用时指定的逻辑AI Core核数numBlocks必须保证不大于实际运行该算子的AI处理器核数否则框架进行多轮调度时会插入异常同步导致Kernel“卡死”现象。调用示例完整样例请参考调用示例。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考