
asc_sync_intra_arrive产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√功能说明block内同步指令与asc_sync_intra_wait配合使用是block内不同Core的流水线同步指令用于向每个Core的同步寄存器发送同步信号。每个sync_id对应Vector Core与Cube Core中的一个初始值为0的计数器。asc_sync_intra_arrive指令后其他Core对应的计数器增加1执行asc_sync_intra_wait时如果对应的计数器数值为0则阻塞不执行如果对应的计数器大于0则计数器减一同时后续指令开始执行。函数原型cpp __aicore__ inline void asc_sync_intra_arrive(pipe_t pipe, uint8_t sync_id) __aicore__ inline void asc_sync_intra_arrive(pipe_t pipe, uint64_t sync_id) 参数说明参数名输入/输出描述pipe输入该指令的执行流水线。sync_id输入事件标号。返回值说明无流水类型PIPE_S约束说明需要保证每一个ID的计数器不会溢出否则会出现异常。需要保证相同的ID只会被一个流水线控制。每个ID对应一个计数器特定CORE的同步ID计数器可通过其他CORE发起的asc_sync_intra_arrive递增也可通过本身发起的asc_sync_intra_wait递减。三个CORE的ID映射规则如下ID为0~15的VECC0RE0的asc_sync_intra_arrive指令会被映射到CUBECORE的0~15的ID。ID为0~15的VECC0RE1的asc_sync_intra_arrive指令会被映射到CUBECORE的16~31的ID。ID为0~15的CUBECORE的asc_sync_intra_arrive指令会被映射到VECC0RE0的0~15的ID。ID为16~31的CUBECORE的asc_sync_intra_arrive指令会被映射到VECC0RE0的0~15的ID。调用示例//设置同步指令事件标号为1 int64_t sync_id 1; asc_sync_intra_arrive(PIPE_S, sync_id); asc_sync_intra_wait(PIPE_S, sync_id);创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考