公司动态
CANN/asc-devkit核内同步API
SetFlag/WaitFlag【免费下载链接】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。同一核内不同流水线之间的同步指令具有数据依赖的不同流水指令之间需要插入此同步。SetFlag当前序指令的所有读写操作都完成之后当前指令开始执行并将硬件中的对应标志位设置为1。WaitFlag当执行到该指令时如果发现对应标志位为0该队列的后续指令将一直被阻塞如果发现对应标志位为1则将对应标志位设置为0同时后续指令开始执行。[!NOTE]说明 此接口与SetFlag/WaitFlag(ISASI).md)接口也能实现相同的功能。二者的区别在于TQueSync类接口可以保证跨硬件版本兼容而SetFlag/WaitFlag(ISASI).md)中的接口标注为ISASI类别不能保证跨硬件版本兼容。函数原型__aicore__ inline void SetFlag(TEventID id) __aicore__ inline void WaitFlag(TEventID id)参数说明表1参数说明参数名输入/输出描述id输入事件ID由用户自己指定推荐通过AllocEventID或者FetchEventID来获取。定义如下using TEventID int8_t;不同产品对id的取值范围说明请参见id取值范围说明。id取值范围说明Ascend 950PR/Ascend 950DT取值范围是0-7。Atlas A3 训练系列产品/Atlas A3 推理系列产品取值范围是0-7。Atlas A2 训练系列产品/Atlas A2 推理系列产品取值范围是0-7。Atlas 200I/500 A2 推理产品取值范围是0-7。Atlas 推理系列产品AI Core取值范围是0-7。Atlas 训练系列产品取值范围是0-3。返回值说明无约束说明SetFlag/WaitFlag必须成对出现。调用示例如DataCopy需要等待SetValue执行完成后才能执行需要插入PIPE_S到PIPE_MTE3的同步。AscendC::GlobalTensorhalf dstGlobal; AscendC::LocalTensorhalf dstLocal; dstLocal.SetValue(0, 0); AscendC::TQueSyncPIPE_S, PIPE_MTE3 sync; sync.SetFlag(0); sync.WaitFlag(0); AscendC::DataCopy(dstGlobal, dstLocal, dataSize);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考