CANN/asc-devkit同步控制函数

📅 2026/7/22 23:53:45 👁️ 阅读次数 📝 编程学习
CANN/asc-devkit同步控制函数

asc_sync_block_wait

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

产品是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Ascend 950PR/Ascend 950DT

功能说明

和asc_sync_block_arrive配合使用(通过flag_id关联),用于等待所有同步对象到达flag_id对应的同步点。如果flag_id所对应的计数器数值为0则阻塞不执行;如果对应的计数器大于0,则计数器减一,同时后续指令开始执行。

函数原型

```cpp __aicore__ inline void asc_sync_block_wait(pipe_t pipe, uint8_t flag_id) __aicore__ inline void asc_sync_block_wait(pipe_t pipe, int64_t flag_id) ```

参数说明

参数名输入/输出描述
pipe输入需要执行同步指令的流水类型。
flag_id输入事件标号,取值范围[0,15]。

返回值说明

流水类型

PIPE_S

约束说明

  • flag_id的取值范围为0至15,每个flag_id的计数器范围为0至15。
  • 必须保证每个flag_id的四位计数器不溢出,否则将引发异常。
  • 必须保证相同的flag_id在同一时间仅被一条流水线使用。

调用示例

int64_t flag_id = 1; asc_sync_block_arrive(PIPE_S, flag_id); asc_sync_block_wait(PIPE_S, flag_id);

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考