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)