WaitPreBlock
功能说明
通过读GM地址中的值,确认是否需要继续等待,当GM的值满足当前核的等待条件时,该核即可往下执行,进行下一步操作。使用接口前,请确保已经调用InitDetermineComputeWorkspace接口,初始化共享内存。
函数原型
| 1 | __aicore__ inline void WaitPreBlock(GlobalTensor<int32_t>& gmWorkspace, LocalTensor<int32_t>& ubWorkspace) | 
参数说明
| 参数名称 | 输入/输出 | 含义 | 
|---|---|---|
| gmWorkspace | 输入 | 临时空间,通过读取gmWorkspace,判断当前核是否可以继续往下执行,类型为GlobalTensor。 | 
| ubWorkspace | 输入 | 临时空间,用于操作gmWorkspace,类型为LocalTensor。 | 
返回值
无。
支持的型号
Atlas推理系列产品AI Core
Atlas A2训练系列产品/Atlas 800I A2推理产品
约束说明
- 需要保证每个核调用该接口的次数相同。
- gmWorkspace申请的空间最少要求为:blockNum * 32Bytes;ubWorkspace申请的空间最少要求为:blockNum * 32 + 32Bytes;其中blockNum为调用的核数,可调用GetBlockNum获取。
- 分离架构中,使用该接口进行多核同步时,仅对AIV核生效,WaitPreBlock和NotifyNextBlock之间仅支持插入矢量计算相关指令,对矩阵计算相关指令不生效。
- 使用该接口进行多核控制时,算子调用时指定的逻辑blockDim必须保证不大于实际运行该算子的AI处理器核数,否则框架进行多轮调度时会插入异常同步,导致Kernel“卡死”现象。
调用示例
调用样例请参考12.1.7-调用示例。
     父主题: 多核控制