news 2026/7/16 21:48:12

CANN/asc-devkit WaitPreTaskEnd任务间同步接口文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit WaitPreTaskEnd任务间同步接口文档

WaitPreTaskEnd

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

[!NOTE]说明 本接口为试验接口,在后续版本中可能会调整或改进,不保证后续兼容性。请开发者在使用过程中关注后续版本更新。

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持,该接口生效
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持,该接口生效
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持,仅保证编译兼容,实际功能不生效。
  • Atlas 200I/500 A2 推理产品:支持,仅保证编译兼容,实际功能不生效。
  • Atlas 推理系列产品AI Core:支持,仅保证编译兼容,实际功能不生效。
  • Atlas 推理系列产品Vector Core:支持,仅保证编译兼容,实际功能不生效。
  • Atlas 训练系列产品:支持,仅保证编译兼容,实际功能不生效。
  • Kirin X90:支持,仅保证编译兼容,实际功能不生效。
  • Kirin 9030:支持,仅保证编译兼容,实际功能不生效。

功能说明

头文件路径为:"basic_api/kernel_operator_common_intf.h"

算子层面支持SuperKernel特性Early-Start能力的接口,调用后在TorchAir层面:1.GE图模式下进行默认启用; 2.npugraph_ex后端通过early_start选项进行控制启用。

在SuperKernel的子Kernel中调用,调用前的指令可以和前序其他的子Kernel实现并行,提升整体性能。如图1所示,SuperKernel按序调用子Kernel,为保证子Kernel之间数据互不干扰,会在子Kernel间插入算子间同步进行保序,子KernelN+1调用该接口之前的指令会和前序子KernelN实现并行。

SuperKernel是一种算子的二进制融合技术,与源码融合不同,它聚焦于内核函数 (Kernel)的二进制的调度方案,展开深度优化,于已编译的二进制代码基础上融合创建一个超级Kernel函数(SuperKernel),以调用子函数的方式调用多个其他内核函数,也就是子Kernel。相对于单算子下发,SuperKernel技术可以减少任务调度等待时间和调度开销,同时利用Task间隙资源进一步优化算子头开销。

开发者需要自行保证调用此接口前的指令不会与前序算子互相干扰而导致精度问题,推荐在整个算子第一条搬运指令前调用此接口。

图1通过WaitPreTaskEnd实现并行示意图
![](https://raw.gitcode.com/cann/asc-devkit/raw/fca368efb52629b09a323752901d0e77214b266d/docs/zh/api/figures/wait_pre_task_end_parallel_diagram.png "通过WaitPreTaskEnd实现并行示意图"?utm_source=gitcode_repo_files)

函数原型

template<bool FORCE = false> __aicore__ inline void WaitPreTaskEnd()

参数说明

表1模板参数说明

参数名描述
FORCE离线编译时是否强制启用Early-Start能力,不影响在线编译。
false:离线编译时不强制启用Early-Start能力;
true:离线编译时启用Early-Start能力,适用于无在线编译流程的算子(如<<<>>>开发的算子)。

返回值说明

约束说明

  • 该接口适用于TorchAir图模式开发场景,且需在启用SuperKernel特性后方可生效。具体内容请参考《Ascend Extension for PyTorch》中“Pytorch图模式使用(TorchAir) > max-autotune模式功能 > 图内标定SuperKernel范围”章节。
  • 在算子运行过程中,需要保证此接口在每个核上都被调用,且每个核上仅被调用一次。
  • 若子Kernel某个TilingKey分支调用了此接口,则开发者需要保证当前算子可能会运行的所有TilingKey均调用了此接口,否则会出现因同步指令数量不匹配而卡住的现象。

调用示例

AscendC::LocalMemAllocator<AscendC::Hardware::UB> ubAllocator; AscendC::LocalTensor<T> src0Local = ubAllocator.Alloc<T, TOTAL_LENGTH>(); AscendC::LocalTensor<T> src1Local = ubAllocator.Alloc<T, TOTAL_LENGTH>(); AscendC::LocalTensor<T> dstLocal = ubAllocator.Alloc<T, TOTAL_LENGTH>(); // 在第一条搬运指令前调用,使之前的指令可与前序子kernel并行执行。 AscendC::WaitPreTaskEnd(); AscendC::DataCopy(src0Local, src0Global, TOTAL_LENGTH); AscendC::DataCopy(src1Local, src1Global, TOTAL_LENGTH); AscendC::SetFlag<AscendC::HardEvent::MTE2_V>(EVENT_ID0); AscendC::WaitFlag<AscendC::HardEvent::MTE2_V>(EVENT_ID0); AscendC::Add(dstLocal, src0Local, src1Local, TOTAL_LENGTH);

完整样例请参考TaskSync样例。

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 21:47:08

VRChat模型OSC面部捕捉集成指南:从原理到实践

1. 项目概述&#xff1a;为什么你的VRChat模型需要OSC面捕&#xff1f;如果你在VRChat里见过那些表情生动、眉毛会挑、嘴角会撇的玩家&#xff0c;心里肯定痒痒的&#xff0c;琢磨着“这到底是怎么做到的&#xff1f;”。答案&#xff0c;很大程度上就藏在OSC&#xff08;Open …

作者头像 李华
网站建设 2026/7/16 21:46:22

邻位连接技术(PLA)原位验证蛋白互作及亚细胞形态分析技术方案

摘要蛋白 - 蛋白相互作用是细胞信号转导、物质代谢与细胞器功能调控的核心分子基础。邻位连接技术&#xff08;Proximity Ligation Assay, PLA&#xff09;作为一种超高灵敏度的原位互作检测技术&#xff0c;突破了传统共定位实验 “仅能证明空间重合、无法直接验证互作” 的局…

作者头像 李华
网站建设 2026/7/16 21:44:08

告别B站观看限制:你的私人视频库搭建指南

告别B站观看限制&#xff1a;你的私人视频库搭建指南 【免费下载链接】BiliTools 本项目已停止维护。 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 你是否曾遇到过这样的困扰&#xff1f;喜欢的B站UP主更新了精彩视频&#xff0c;但网络不稳定无法流…

作者头像 李华
网站建设 2026/7/16 21:44:04

音乐采样库的智能检索:用向量搜索替代关键词匹配找音色

音乐采样库的智能检索&#xff1a;用向量搜索替代关键词匹配找音色 一、"找一个温暖但有颗粒感的 Pad 音色"——关键词搜索&#xff1a;返回 374 个结果&#xff0c;全是标签里带"warm"或"pad"的&#xff0c;听都听不过来 传统音乐采样库&#x…

作者头像 李华
网站建设 2026/7/16 21:41:54

第四十二课——Android Monkey压力测试:从原理到避坑

文章目录 引言 一、Monkey测试:是什么与为什么 1.1 Monkey测试的本质 1.2 Monkey与iOS Monkey的区别 二、Monkey命令全参数精解 2.1 基础命令结构 2.2 关键参数详解 2.2.1 包名控制:-p 2.2.2 异常处理参数 2.2.3 随机种子:-s 2.2.4 事件延迟:--throttle 2.2.5 日志详细度:…

作者头像 李华
网站建设 2026/7/16 21:39:56

WMZDropDownMenu链式语法详解:如何优雅配置所有参数

WMZDropDownMenu链式语法详解&#xff1a;如何优雅配置所有参数 【免费下载链接】WMZDropDownMenu &#x1f339;一个能几乎实现所有App各种类型筛选菜单的控件,可悬浮,目前已实现闲鱼/美团/Boss直聘/京东/饿了么/淘宝/拼多多/赶集网/美图外卖等等的筛选菜单,可以自由调用代理实…

作者头像 李华