下载
中文
注册

CrossCoreWaitFlag

功能说明

针对分离架构,AI Core上的Cube核(AIC)与Vector核(AIV)之间的同步等待指令。

每一个flagId对应一个计数器,初始值为0。使用CrossCoreWaitFlag指令设置flagId时,该flagId的计数器将减1。

函数原型

__aicore__ inline void CrossCoreWaitFlag(uint16_t flagId)

参数说明

表1 参数说明

参数名

输入/输出

描述

flagId

输入

核间同步的标记,取值范围是“0-15”。

返回值

支持的型号

Atlas A2训练系列产品/Atlas 800I A2推理产品

约束说明

  • CrossCoreWaitFlag必须与CrossCoreSetFlag接口配合使用,避免计算核一直处于阻塞阶段。
  • 如果执行CrossCoreWaitFlag时该flagId的计数器的值为0,则CrossCoreWaitFlag之后的所有指令都将被阻塞,直到该flagId的计数器的值不为0。同一个flagId的计数器最多设置16次。

调用示例

// 阻塞AIC核,直到AIV核设置计数器大于0
if (g_coreType == AIC) {
    CrossCoreWaitFlag(0x3);
} else {
    // 采用模式2
    CrossCoreSetFlag<0x2, PIPE_FIX>(0x3);
}