CANN/pyasc ib_wait函数文档 asc.language.basic.ib_wait【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyascasc.language.basic.ib_wait(gm_workspace: GlobalTensor, ub_workspace: LocalTensor, block_idx: int, event_id: int, is_aiv_only: bool True) → None当不同核之间操作同一块全局内存且可能存在读后写、写后读以及写后写等数据依赖问题时通过调用该函数来插入同步语句来避免上述数据依赖时可能出现的数据读写错误问题。 ib_wait与ib_set成对出现配合使用表示核之间的同步等待指令等待某一个核操作完成。对应的Ascend C函数原型软同步template bool isAIVOnly true __aicore__ inline void IBWait( const GlobalTensorint32_t gmWorkspace, const LocalTensorint32_t ubWorkspace, int32_t blockIdx, int32_t eventID)参数说明gmWorkspace: 外部存储核状态的公共缓存类型为GlobalTensor。ubWorkspace: 存储当前核状态的公共缓存。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。blockIdx: 表示等待核的idx号取值范围[0, 核数-1]。eventID: 用来控制当前核的set、wait事件。isAIVOnly:控制是否为AIVOnly模式默认为true。约束说明gmWorkspace申请的空间最少要求为核数 * 32Bytes * eventID_max blockIdx_max * 32Bytes 32Bytes。eventID_max和blockIdx_max分别指eventID、blockIdx的最大值 ubWorkspace申请的空间最少要求为32Bytes。使用该接口进行多核控制时算子调用时指定的逻辑blockNum必须保证不大于实际运行该算子的AI处理器核数否则框架进行多轮调度时会插入异常同步导致Kernel“卡死”现象。调用示例gm asc.GlobalTensor() gm.set_global_buffer(x) ub asc.LocalTensor(dtypeasc.int32, posasc.TPosition.VECIN, addr0, tile_size32) asc.ib_wait(gm, ub, block_idx0, event_id0)【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考