asc.language.basic.notify_next_block
【免费下载链接】pyasc本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc
asc.language.basic.notify_next_block(gm_workspace: GlobalTensor, ub_workspace: LocalTensor) → None
多核同步接口,通过写入 Global Memory 中的标志位,通知下一个 AI Core 当前核的操作已完成。
此接口通常与 wait_pre_block 配对使用。当前核调用此函数后,等待此核的下一个核将能够通过 wait_pre_block 检测到状态变化,从而继续执行。
对应的Ascend C函数原型
__aicore__ inline void NotifyNextBlock(GlobalTensor<int32_t>& gmWorkspace, LocalTensor<int32_t>& ubWorkspace)参数说明
- gm_workspace (asc.GlobalTensor): Global Memory 上的临时工作空间。 : - 用于核间通信的共享内存区域。通过向此空间写入一个特定的标志位,来通知下一个核。
- 类型必须为 GlobalTensor<int32_t>。
- ub_workspace (asc.LocalTensor): UB 上的临时工作空间。 : - 用于在 AI Core 内部操作 gm_workspace 的暂存区。
- 类型必须为 LocalTensor<int32_t>。
返回值
无。
约束说明
- 需要保证每个核调用该接口的次数相同。
- gm_workspace申请的空间最少要求为:blockNum * 32Bytes;ub_workspace申请的空间最少要求为:blockNum * 32 + 32Bytes;其中blockNum为调用的核数,可调用get_block_num获取。
- 分离模式下,使用该接口进行多核同步时,仅对AIV核生效,wait_pre_block和notify_next_block之间仅支持插入矢量计算相关指令,对矩阵计算相关指令不生效。
- 使用该接口进行多核控制时,算子调用时指定的逻辑blockNum必须保证不大于实际运行该算子的AI处理器核数,否则框架进行多轮调度时会插入异常同步,导致Kernel“卡死”现象。
调用示例
asc.notify_next_block(gm_workspace, ub_workspace)【免费下载链接】pyasc本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考