当前位置: 首页 > article >正文

CANN-opbase-昇腾NPU算子开发的基础设施为什么这么重要

CANN-opbase-昇腾NPU算子开发的基础设施为什么这么重要所有 CANN AOL 算子仓库的底层都依赖 opbase。它不提供任何算子实现提供的是算子注册、编译、调度的基础设施。如果你要写自定义 Ascend C 算子opbase 是绕不过去的第一步。opbase 提供了什么组件功能算子开发者的感知算子注册框架定义算子的名称、输入输出、属性IMPL_OP(MyOp).Inputs(...)Tiling 框架管理分块参数的传递和存储TilingFunc回调编译工具链把 Ascend C 编译成 NPU 可执行文件op_build.sh运行时接口算子与 CANN 运行时的交互GetTensorAddr,GetTilingData通用数据结构Tensor 描述、Shape、FormatTensorDesc,GeShape这些组件都是 header-only 或预编译库算子代码#include就能用。算子注册流程每个算子必须在 opbase 的注册框架里声明CANN 运行时才能找到它// op_host/my_op/my_op.cpp#includeop_host.hnamespacege{IMPL_OP(MyOp).Inputs({x,y})// 输入 tensor 名称.Outputs({z})// 输出 tensor 名称.Attr(alpha,GeAttr::FLOAT)// 算子属性.Tiling(MyOpTiling);// Tiling 回调函数}注册信息告诉 CANN 运行时这个算子有几个输入/输出属性是什么类型Tiling 策略由哪个函数计算Tiling 框架Tiling 是昇腾NPU算子开发最核心的概念。opbase 的 Tiling 框架把分块参数的生成和传递标准化了// Tiling 函数根据输入 shape 计算分块参数ge::graphStatusMyOpTiling(constge::Operatorop,TilingContext*ctx){autox_shapectx-GetInputShape(0);// 获取输入 shapeint64_ttotal_elemsx_shape.GetShapeSize();// 计算分块参数int64_ttile_m128;int64_ttile_n128;int64_ttiles(total_elemstile_m*tile_n-1)/(tile_m*tile_n);// 写入 Tiling 数据ctx-SetTilingKey(1);// Tiling 策略编号ctx-SetTilingData(tile_m,tile_m);ctx-SetTilingData(tile_n,tile_n);ctx-SetTilingData(tiles,tiles);returnge::GRAPH_SUCCESS;}Tiling 函数跑在 CPU 上不在 NPU 上在算子执行前调用。计算出的分块参数通过 CANN 运行时传递给 NPU 上的 kernel。编译工具链opbase 提供了算子编译的标准流程# 编译单个算子cdop_kernel/my_op ascendc--chipAscend910B2--outputbuild my_op_kernel.cpp# 编译整个算子包bashbuild.sh编译产物是.so文件放在 CANN 的算子目录下。torch_npu 启动时扫描这些.so并注册。--chip参数指定目标芯片型号。不同型号的 Cube 单元大小不同910B2 的 Cube 是 16×16910B1 是 16×16 但频率不同编译器会针对具体型号优化指令调度。运行时接口NPU 上的 kernel 通过 opbase 的运行时接口获取输入数据和 Tiling 参数// op_kernel/my_op/my_op_kernel.cpp#includekernel_operator.hclassMyOpKernel{public:__aicore__inlinevoidInit(GM_ADDR x,GM_ADDR y,GM_ADDR z,TilingData*tiling){// 从 opbase 运行时获取 tensor 地址x_gm.SetGlobalBuffer((__gm__ half*)x);y_gm.SetGlobalBuffer((__gm__ half*)y);z_gm.SetGlobalBuffer((__gm__ half*)z);// 从 Tiling 数据获取分块参数tile_m_tiling-tile_m;tile_n_tiling-tile_n;}private:int64_ttile_m_,tile_n_;GlobalTensorhalfx_gm,y_gm,z_gm;};GM_ADDR是 opbase 定义的全局内存地址类型。TilingData是 opbase 的 Tiling 数据结构由 Tiling 函数填充、运行时传递。opbase 是 CANN 算子生态的地基。理解了注册框架、Tiling 框架、编译工具链和运行时接口这四个组件写自定义算子就不懵了。仓库在这里https://atomgit.com/cann/opbase

相关文章:

CANN-opbase-昇腾NPU算子开发的基础设施为什么这么重要

CANN-opbase-昇腾NPU算子开发的基础设施为什么这么重要 所有 CANN AOL 算子仓库的底层都依赖 opbase。它不提供任何算子实现,提供的是算子注册、编译、调度的基础设施。如果你要写自定义 Ascend C 算子,opbase 是绕不过去的第一步。 opbase 提供了什么组…...

插电式混合动力公交车工况预测与智能能量管理策略【附程序】

✨ 长期致力于插电式混合动力系统、行驶工况构建、工况预测、预测能量管理策略、智能能量管理策略研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)自组…...

终极指南:如何使用qmc-decoder快速解密QMC音频文件 [特殊字符]

终极指南:如何使用qmc-decoder快速解密QMC音频文件 🎵 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder qmc-decoder是一款专为QQ音乐用户设计的QMC音…...

如何让老款Mac重获新生:OpenCore Legacy Patcher完全指南

如何让老款Mac重获新生:OpenCore Legacy Patcher完全指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为苹果官方停止支持的老款Mac无法升…...

9. Python 文件与输入输出 深度解析

Python 文件与输入输出 深度解析 目录 Python I/O 概述文件对象与基本操作 2.1 打开文件:open 与模式2.2 读取数据2.3 写入数据2.4 使用 with 自动管理文件 文件指针与随机访问路径操作:os、os.path 与 pathlib 4.1 os 模块与 os.path 基础4.2 现代路径…...

大裁员前夜Meta员工疯狂「薅羊毛」;腾讯操作系统层级AI助手“马维斯”正式上工;GitHub确认遭入侵:3800个内部仓库被窃取 | 极客头条

「极客头条」—— 技术人员的新闻圈!CSDN 的读者朋友们好,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。(投稿或寻求报道:zhanghycsdn.net)整理 | 苏宓出品 | CSDN(ID&…...

STL转STEP格式转换实战指南:如何实现CAD模型的无缝迁移与工程化应用

STL转STEP格式转换实战指南:如何实现CAD模型的无缝迁移与工程化应用 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在数字化制造与工程设计领域,STL格式作为3D打印的标…...

8. Python 模块与包 深度解析

Python 模块与包 深度解析 目录 模块与包的概念模块基础 2.1 模块即 .py 文件2.2 import 语句与 from ... import2.3 模块搜索路径 sys.path 模块的编译与缓存包 4.1 常规包与 __init__.py4.2 命名空间包4.3 相对导入与绝对导入 __name__ 与 "__main__"模块与包的组…...

Lean开发环境终极解决方案:3步完成版本管理工具配置

Lean开发环境终极解决方案:3步完成版本管理工具配置 【免费下载链接】elan The Lean version manager 项目地址: https://gitcode.com/gh_mirrors/el/elan elan是专为Lean定理证明器设计的智能版本管理工具,能够自动处理Lean和lake二进制文件的安…...

3步掌握抖音批量下载:终极免费无水印下载器完整指南

3步掌握抖音批量下载:终极免费无水印下载器完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…...

BarrageGrab:企业级多平台直播弹幕一体化采集解决方案

BarrageGrab:企业级多平台直播弹幕一体化采集解决方案 【免费下载链接】BarrageGrab 抖音快手bilibili直播弹幕wss直连,非系统代理方式,无需多开浏览器窗口 项目地址: https://gitcode.com/gh_mirrors/ba/BarrageGrab 在直播电商、游戏…...

FreeMove:Windows系统C盘空间终极清理方案,无需重装释放数十GB

FreeMove:Windows系统C盘空间终极清理方案,无需重装释放数十GB 【免费下载链接】FreeMove Move directories without breaking shortcuts or installations 项目地址: https://gitcode.com/gh_mirrors/fr/FreeMove 还在为C盘空间不足而烦恼吗&…...

千问 LeetCode 2543. 判断一个点是否可以到达 Java实现

这道题的核心思路是从终点反向推导回起点,并利用最大公约数(GCD) 的性质来判定。核心思路从 (1, 1) 正向推导到 (targetX, targetY) 路径太多,不好下手。我们反过来想:从 (targetX, targetY) 能否通过逆操作回到 (1, 1…...

5.12linux自学

1,安装vMware2,部署Kali Linux虚拟机3,了解Linux的优点:多人多任务环境安全性高4,格式化的概念:每种操作系统所配置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要进行格式化,以成为操作系…...

Warcraft Helper:现代Windows环境下魔兽争霸3兼容性技术解决方案深度解析

Warcraft Helper:现代Windows环境下魔兽争霸3兼容性技术解决方案深度解析 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper Warcraft Helper…...

告别焦虑等待!Elsevier投稿状态自动追踪插件,让你的科研进度一目了然

告别焦虑等待!Elsevier投稿状态自动追踪插件,让你的科研进度一目了然 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 还在每天刷新Elsevier投稿页面,只为查看论文审稿状态吗&…...

注意力机制:多头注意力机制、分组查询注意力机制、多查询注意力机制理论+代码

文章目录导语1.注意力机制2.多头注意力机制3.多查询注意力机制4.分组查询注意力机制5.三者对比导语 注意力机制作为transformer体系中最核心的方法,是NLP、LLM等都绕不开的一部分,多头注意力机制是transformer模型提出的“基石”,分组查询注…...

ZenTimings:AMD Ryzen用户的硬件监控与性能优化利器

ZenTimings:AMD Ryzen用户的硬件监控与性能优化利器 【免费下载链接】ZenTimings 项目地址: https://gitcode.com/gh_mirrors/ze/ZenTimings 在AMD Ryzen平台日益普及的今天,如何精准掌握硬件运行状态成为许多用户关心的问题。ZenTimings作为一款…...

ThinkPad风扇控制终极指南:TPFanCtrl2让你的笔记本更安静更智能

ThinkPad风扇控制终极指南:TPFanCtrl2让你的笔记本更安静更智能 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 还在为ThinkPad笔记本风扇噪音而烦恼吗&…...

抖音无水印批量下载终极指南:douyin-downloader免费神器

抖音无水印批量下载终极指南:douyin-downloader免费神器 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback sup…...

深度解析Unity游戏实时翻译插件:XUnity.AutoTranslator的5大实战应用场景与架构设计

深度解析Unity游戏实时翻译插件:XUnity.AutoTranslator的5大实战应用场景与架构设计 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是一款革命性的Unity游戏实时翻译插…...

HoRain云--AI 底层架构

🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...

ContentBranch+CFBranch混合电影推荐模型|全网独家复现,深度学习实战篇 引入双分支融合架构,兼顾内容特征与协同信号、助力冷启动缓解、数据稀疏性优化、推荐精度有效涨点

目录 一、前言:混合推荐模型的核心价值与行业痛点 二、模型核心原理(全网独家拆解,通俗易懂) 2.1 整体架构逻辑 2.2 ContentBranch(内容分支)原理详解 2.3 CFBranch(协同过滤分支)原理详解 2.4 特征融合与预测层原理 2.5 模型优势总结 三、环境搭建(全平台适配…...

免费开源AMD Ryzen硬件调试神器:SMUDebugTool完整使用指南

免费开源AMD Ryzen硬件调试神器:SMUDebugTool完整使用指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...

穆斯堡尔谱—固态研究中不可或缺的工具

...

如何高效批量下载抖音无水印视频:开源工具完整实战指南

如何高效批量下载抖音无水印视频:开源工具完整实战指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…...

[智能体-2]:openAI API详解

下面从核心概念→认证→接口→参数→流式→函数调用→计费→国内兼容→最佳实践,把 OpenAI API 讲透。一、OpenAI API 是什么OpenAI API 一套标准化的 RESTful 大模型调用协议,基于 HTTP/JSON,提供:文本对话(GPT-4o/3…...

Voice-Pro 免费开源杀疯了:语音翻译、AI克隆、人声分离、YouTube下载全打包,狂省上千元

你是否也曾想过做视频,英文视频翻译成中文发到国内,或者把自己做的中文视频配上地道的英文,扬帆出海? 然而,现实往往会给你迎头痛击: 工具太碎片 :用 yt-dlp 下载了视频,要用 Demu…...

低压电工-架空线路,室内线路

前置基础补充 线路核心定义电能输送用的电线线路统称电气线路,电工考证只重点学电力线路(送电、供电),不学控制线路(设备内部控制线)。电压基础 低压:1000V 及以下(日常家用、工厂…...

BarrageGrab:零依赖微服务架构的跨平台直播弹幕一体化采集系统

BarrageGrab:零依赖微服务架构的跨平台直播弹幕一体化采集系统 【免费下载链接】BarrageGrab 抖音快手bilibili直播弹幕wss直连,非系统代理方式,无需多开浏览器窗口 项目地址: https://gitcode.com/gh_mirrors/ba/BarrageGrab 在直播电…...