asc.language.basic.cross_core_wait_flag

asc.language.basic.cross_core_wait_flag(flag_id: int, mode_id: int, pipe: PipeID) None

面向分离架构的核间同步控制接口。该接口和cross_core_set_flag接口配合使用。具体使用方法请参考cross_core_set_flag。

对应的Ascend C函数原型

template <uint8_t modeId, pipe_t pipe>
__aicore__ inline void CrossCoreWaitFlag(uint16_t flagId)

参数说明

  • modeId: 核间同步的模式,取值如下: - 模式0:AI Core核间的同步控制。 - 模式1:AI Core内部,Vector核(AIV)之间的同步控制。 - 模式2:AI Core内部,Cube核(AIC)与Vector核(AIV)之间的同步控制。

  • pipe: 设置这条指令所在的流水类型。

  • flagId: 核间同步的标记。取值范围是0-10。

约束说明

  • 使用该同步接口时,需要按照如下规则设置Kernel类型: - 在纯Vector/Cube场景下,需设置Kernel类型为KERNEL_TYPE_MIX_AIV_1_0或KERNEL_TYPE_MIX_AIC_1_0。 - 对于Vector和Cube混合场景,需根据实际情况灵活配置Kernel类型。

  • CrossCoreWaitFlag必须与CrossCoreSetFlag接口配合使用,避免计算核一直处于阻塞阶段。

  • 如果执行CrossCoreWaitFlag时该flagId的计数器的值为0,则CrossCoreWaitFlag之后的所有指令都将被阻塞,直到该flagId的计数器的值不为0。同一个flagId的计数器最多设置15次。

调用示例

asc.cross_core_wait_flag(flag_id=0, mode_id=0, pipe=asc.PipeID.PIPE_V)