CANN/asc-devkit:SIMD-API核内同步Mutex锁

发布时间:2026/5/20 12:39:10

CANN/asc-devkit:SIMD-API核内同步Mutex锁 Lock【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品 / Atlas A3 推理系列产品xAtlas A2 训练系列产品 / Atlas A2 推理系列产品xAtlas 200I/500 A2 推理产品xAtlas 推理系列产品 AI CorexAtlas 推理系列产品 Vector CorexAtlas 训练系列产品x功能说明根据MutexID获取Mutex并阻塞当前流水指令队列直到对应的MutexID被Unlock。函数原型template pipe_t pipe static __aicore__ inline void Lock(MutexID id)参数说明表 1模板参数说明参数名描述pipe模板参数表示流水类别。支持的流水参考硬件流水类型。表 2参数说明参数名输入/输出描述id输入进行流水同步管理的MutexID。该id可通过用户自定义范围为0-27或者通过AllocMutexID/ReleaseMutexID进行申请释放。返回值说明无约束说明用户在使用Lock/Unlock时且自定义MutexID情况时禁止同时使用TQue、TQueBind、TBufPool中的相关接口。对于同一个MutexID必须按照Lock/Unlock配套使用且指定的pipe也需相同即当且只有完成一个流水的Lock/Unlock之后才能进行其余流水的操作。相同流水之间存在数据依赖的场景这种情况建议使用PipeBarrier.md)接口。调用示例完整算子样例参考Mutex样例。// 锁定 MTE2 流水线互斥锁确保当前线程独占 MTE2 资源进行数据搬运 AscendC::Mutex::LockPIPE_MTE2(mutexId); AscendC::DataCopy(xLocal, src0Global[TILE_LENGTH * progress], TILE_LENGTH); AscendC::DataCopy(yLocal, src1Global[TILE_LENGTH * progress], TILE_LENGTH); // 解锁 MTE2 流水线允许其他线程使用 MTE2 AscendC::Mutex::UnlockPIPE_MTE2(mutexId); // 锁定 Vector 流水线互斥锁确保当前线程独占向量计算资源 AscendC::Mutex::LockPIPE_V(mutexId); AscendC::Add(zLocal, xLocal, yLocal, TILE_LENGTH); // 解锁 Vector 流水线释放计算资源供其他线程使用 AscendC::Mutex::UnlockPIPE_V(mutexId);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻