PipeBarrier(ISASI)【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品 / Atlas A3 推理系列产品√Atlas A2 训练系列产品 / Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品√Atlas 推理系列产品 AI Core√Atlas 推理系列产品 Vector CorexAtlas 训练系列产品√Kirin X90√Kirin 9030√功能说明阻塞相同流水具有数据依赖的相同流水之间需要插入此同步。函数原型template pipe_t pipe __aicore__ inline void PipeBarrier()参数说明表 1模板参数说明参数名描述pipe模板参数表示阻塞的流水类别。支持的流水参考硬件流水类型。如果不关注流水类别希望阻塞所有流水可以传入PIPE_ALL。返回值说明无约束说明Scalar流水之间的同步由硬件自动保证调用PipeBarrierPIPE_S()会引发硬件错误。调用示例如下示例Mul指令的输入dst0Local是Add指令的输出两个矢量运算指令产生依赖需要插入PipeBarrier保证两条指令的执行顺序。注仅作为示例参考开启自动同步Kernel直调算子工程和自定义算子开发工程已默认开启的情况下编译器自动插入PIPE_V同步无需开发者手动插入。图 1Mul指令和Add指令是串行关系必须等待Add指令执行完成后才能执行Mul指令。![](https://raw.gitcode.com/cann/asc-devkit/raw/68eb55191616e7a7b08961a5c82a706272353b5f/docs/api/figures/Mul指令和Add指令是串行关系-必须等待Add指令执行完成后-才能执行Mul指令.png Mul指令和Add指令是串行关系-必须等待Add指令执行完成后-才能执行Mul指令?utm_sourcegitcode_repo_files)AscendC::LocalTensorhalf src0Local; AscendC::LocalTensorhalf src1Local; AscendC::LocalTensorhalf src2Local; AscendC::LocalTensorhalf dst0Local; AscendC::LocalTensorhalf dst1Local; AscendC::Add(dst0Local, src0Local, src1Local, 512); AscendC::PipeBarrierPIPE_V(); AscendC::Mul(dst1Local, dst0Local, src2Local, 512);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考