news 2026/5/25 13:17:04

cann/asc-devkit异步执行模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cann/asc-devkit异步执行模式

Async

【免费下载链接】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 推理产品x
Atlas 推理系列产品AI Corex
Atlas 推理系列产品Vector Corex
Atlas 训练系列产品x

功能说明

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

基于分离模式(AIC和AIV分离)开发融合算子时,算子逻辑中通常同时包含AIV和AIC的处理逻辑,此时需要使用Ascend C提供的宏ASCEND_IS_AIV/ASCEND_IS_AIC实现如下硬件条件分支来对AIV和AIC的代码进行隔离:

if ASCEND_IS_AIV { // AIV处理逻辑 } if ASCEND_IS_AIC { // AIC处理逻辑 }

Async通过模板函数的方式对这种隔离模式进行了封装,提供了一个统一的接口,用于在不同执行单元(AIC或AIV)下执行特定函数,从而避免在代码中使用硬件条件分支。

函数原型

template <EngineType engine, auto funPtr, class... Args> __aicore__ void Async(Args... args)

参数说明

表 1模板参数说明

参数名描述
engineEngineType枚举类型,可取值如下,对应不同的硬件执行单元:
• AIC
• AIV
funPtr函数指针,指定要执行的函数,函数签名和参数类型由class... Args决定。
class... Args可变参数模板,表示函数参数的类型列表,用于传递给funPtr。

表 2参数说明

参数名输入/输出描述
Args... args输入与class... Args对应的参数列表,表示传递给funPtr的实际参数。

返回值说明

约束说明

调用示例

__aicore__ inline void cubeProcess(KernelMmad &op, GM_ADDR A, GM_ADDR B, GM_ADDR c) { op.InitAIC(A, B, c); op.ProcessAIC(); } __aicore__ inline void vectorProcess(KernelMmad &op, GM_ADDR a, GM_ADDR b, GM_ADDR A, GM_ADDR B, GM_ADDR c) { op.InitAIV(a, b, A, B, c); op.ProcessAIV(); } __global__ __mix__(1,2) void mmad_custom(GM_ADDR a, GM_ADDR b, GM_ADDR A, GM_ADDR B, GM_ADDR c) { AscendC::InitSocState(); KernelMmad op; AscendC::Async<AscendC::EngineType::AIC, cubeProcess>(op, A, B, c); AscendC::Async<AscendC::EngineType::AIV, vectorProcess>(op, a, b, A, B, c); }

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

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

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

技术人如何建立“学习飞轮”?让每次学习都推动下一次

在软件行业&#xff0c;有一种普遍的焦虑叫做“测试工程师的35岁危机”。这种焦虑的根源&#xff0c;往往不是年龄本身&#xff0c;而是能力栈的停滞——你是在用十年的经验做重复的事&#xff0c;还是真正拥有了十年的成长&#xff1f;同样是功能测试的起点&#xff0c;有人三…

作者头像 李华
网站建设 2026/5/25 13:15:01

WinFsp错误代码完全指南:从安装到调试的实战解决方案

WinFsp错误代码完全指南&#xff1a;从安装到调试的实战解决方案 【免费下载链接】winfsp Windows File System Proxy - FUSE for Windows 项目地址: https://gitcode.com/gh_mirrors/wi/winfsp WinFsp&#xff08;Windows File System Proxy&#xff09;作为Windows平台…

作者头像 李华
网站建设 2026/5/25 13:11:08

ComfyUI-Impact-Pack:AI图像增强插件完整使用指南

ComfyUI-Impact-Pack&#xff1a;AI图像增强插件完整使用指南 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址: https://gitc…

作者头像 李华
网站建设 2026/5/25 13:10:39

《Java 100 天进阶之路》第21篇:Java Object类

第21篇&#xff1a;Java Object类 &#x1f4cc; 系列导航&#xff1a;《Java 100 天进阶之路》完整目录 | ⬅️ 上一篇&#xff1a;第20篇&#xff1a;Java接口的作用和意义 | ➡️ 下一篇&#xff1a;第22篇&#xff1a;Java字符串简介 一、核心知识点 Object 是所有类的父类…

作者头像 李华