CrossCoreWaitFlag
功能说明
针对分离架构,AI Core上的Cube核(AIC)与Vector核(AIV)之间的同步等待指令。
每一个flagId对应一个计数器,初始值为0。使用CrossCoreWaitFlag指令设置flagId时,该flagId的计数器将减1。
函数原型
__aicore__ inline void CrossCoreWaitFlag(uint16_t flagId)
参数说明
参数名 |
输入/输出 |
描述 |
---|---|---|
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); }
父主题: 同步控制