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

拆解昇腾 CANN 五层架构:一个 MatMul 请求的完整旅程

适合人群想从全局视角理解 CANN 架构的开发者核心仓库https://atomgit.com/cann阅读时长6 分钟目录一、为什么需要五层架构二、第1层昇腾计算语言层 AscendCL三、第2层昇腾计算服务层四、第3层昇腾计算编译层五、第4层昇腾计算执行层六、第5层昇腾计算基础层七、实战追踪一个请求的完整路径八、下一步资源一、为什么需要五层架构拿到昇腾 NPU 的第一反应往往是我写的 PyTorch 代码是怎么跑到这块芯片上的答案藏在 CANN 的五层架构里。先打个比方你点外卖。用户框架→ 下单系统AscendCL→ 厨房调度编译层→ 出餐窗口执行层→ 灶台硬件。每一层各司其职上层不用管下层怎么做下层也不用管上层点什么。这种分层的好处是解耦——框架升级不影响硬件调度算子优化不影响上层接口。你的 PyTorch 代码今天能跑在 Ascend 910 上明天换了新一代 NPU代码也不用改。如果只有三层会怎样框架直接跟硬件打交道每次换芯片就要重写一遍适配代码。昇腾 CANN 用五层架构把这个过程标准化了。二、第1层昇腾计算语言层 AscendCLAscendCL 是 CANN 对外暴露的统一编程接口相当于你跟昇腾 NPU 对话的翻译官。不管你用的是 PyTorch、MindSpore 还是 TensorFlow最终都会经过这一层。它提供的能力包括模型加载与执行加载.om离线模型执行推理内存管理在 NPU 上分配/释放显存流Stream管理控制计算任务的并发执行事件Event同步多流之间的同步机制# AscendCL 的核心 API 使用示例Python绑定 import acl # 1. 初始化 AscendCL acl.init() # 初始化ACL运行环境 # 2. 指定计算设备 device_id 0 acl.rt.set_device(device_id) # 设置当前使用的NPU设备 # 3. 创建计算上下文和流 context acl.rt.create_context(device_id) stream acl.rt.create_stream() # 创建执行流 # 4. 加载离线模型 (.om文件) model_path resnet50.om model_id acl.mdl.load_from_file(model_path) # 5. 准备输入数据并执行推理 input_dataset acl.mdl.create_dataset() output_dataset acl.mdl.create_dataset() ret acl.mdl.execute(model_id, input_dataset, output_dataset) # 6. 释放资源 acl.mdl.unload(model_id) acl.rt.destroy_stream(stream) acl.rt.destroy_context(context) acl.rt.reset_device(device_id) acl.finalize()大多数开发者不会直接调用 AscendCL API——框架适配层torch.npu等已经帮你封装好了。但理解 AscendCL 的存在能帮你搞清楚代码到底是怎么到 NPU 上的。三、第2层昇腾计算服务层这一层是 CANN 的武器库包含两大核心组件AOL 算子库AOLAscend Operator Library提供了大量预优化好的算子实现覆盖 AI 计算的各个场景算子库仓库定位ops-nnhttps://atomgit.com/cann/ops-nnNN 网络基础算子Conv/BN/Poolingops-transformerhttps://atomgit.com/cann/ops-transformerTransformer 进阶算子FlashAttention/MoEops-advhttps://atomgit.com/cann/ops-adv图像处理/科学计算算子ascend-transformer-boosthttps://atomgit.com/cann/ascend-transformer-boostTransformer 全流程加速库AOE 调优引擎AOEAscend Optimization Engine负责根据你的模型结构和硬件配置自动寻找最优的算子参数组合。比如Conv2d 的 tile 大小用什么值最快MatMul 用哪种切分策略最省显存多卡通信用什么拓扑最省带宽# AOE 自动调优示例 # Step 1: 导出 ONNX 模型 python export_model.py --model resnet50 --output resnet50.onnx # Step 2: 使用 AOE 调优遗传算法 强化学习 atc --modelresnet50.onnx \ --framework5 \ --outputresnet50_optimized \ --soc_versionAscend910 \ --auto_tune_modeGA,RL # Step 3: 使用调优后的模型推理 # 调优后的 .om 文件已包含最优配置直接部署即可 # 调优结果缓存在 ~/.ascend/aoe/ 目录同结构模型可复用AOE 的调优过程可能需要几小时但只需跑一次后续同结构的模型都能复用调优结果。四、第3层昇腾计算编译层这是 CANN 架构里最硬核的一层包含两个核心组件Graph EngineGEGE 负责接收框架发来的计算图执行以下优化算子融合把相邻的小算子合成一个大算子。比如 Conv BN ReLU → FusedConvBNReLU减少 kernel 启动开销和显存读写常量折叠编译期就能算出来的值直接算好不等到运行时死代码消除删掉不会被执行到的算子内存规划复用中间 tensor 的显存降低峰值ATC 编译器ATCAscend Tensor Compiler把优化后的计算图编译成昇腾 NPU 可执行的.om文件# ATC 编译命令详解 atc --modelllama.onnx \ # 输入ONNX模型 --framework5 \ # 框架类型5ONNX --outputllama_ascend \ # 输出.om文件名 --soc_versionAscend910 \ # 目标芯片 --input_shapeinput:1,2048 \ # 输入shape静态shape --insert_op_confaipp.cfg \ # AIPP预处理配置可选 --op_precision_modeallow_fp32_to_fp16 # 精度策略编译出的.om文件是一个自包含的离线模型包含了算子指令、内存布局、调度顺序等所有信息可以直接部署到昇腾 NPU 上运行。五、第4层昇腾计算执行层编译好的.om文件到了这一层才真正开始跑。执行层包含RuntimeRuntime 是昇腾 NPU 的运行时环境负责任务调度把编译好的指令下发到 NPU流管理多流并发执行最大化硬件利用率显存管理运行时的显存分配与回收同步机制Event/Stream 级别的同步HCCLHCCLHuawei Collective Communication Library是昇腾的多卡通信库对标 NVIDIA 的 NCCL。支持AllReduce / AllGather / Broadcast 等集合通信原语多机多卡分布式训练自动拓扑感知选择最优通信路径六、第5层昇腾计算基础层最底层直接跟硬件打交道驱动Driver管理 NPU 设备的内核模块固件Firmware运行在 NPU 芯片上的微代码硬件管理时钟频率、温度监控、功耗控制这层对开发者基本透明你唯一需要关心的是npu-smi工具——查看 NPU 状态、显存占用、温度等。# npu-smi 常用命令 npu-smi list # 查看所有NPU设备 npu-smi info -t board # 查看指定卡的详细信息 npu-smi info -t usages # 查看显存和计算单元利用率 # 典型输出 # NPU | Chip | Device | HBM-Used | AICore-Util # 0 | 910 | 0000:01 | 12345/32768 | 85% # 1 | 910 | 0000:02 | 8192/32768 | 42%七、实战追踪一个请求的完整路径把前面六节串起来看一个完整的请求路径PyTorch: model(x) → torch.npu 转发 ↓ AscendCL: acl.mdl.execute() → 下发到编译层 ↓ Graph Engine: 算子融合 内存规划 → 生成优化图 ↓ ATC: 编译成 .om → 包含 NPU 指令 ↓ Runtime: stream 调度 → 多流并发执行 ↓ NPU: 达芬奇架构执行矩阵运算 → 结果写回 HBM整个链路中编译层的优化是性能差异最大的环节。同样一个 ResNet50没优化可能只跑到 500fps经过 ATC 编译 GE 算子融合后可以跑到 2000fps 以上。这就是为什么理解 CANN 架构很重要——不是让你手动优化每一层而是帮你定位性能瓶颈在哪一层然后对症下药。八、去哪找资源资源链接说明CANN 官方仓库https://atomgit.com/cann全部仓库索引Graph Enginehttps://atomgit.com/cann/ge图执行引擎ATC 编译器https://atomgit.com/cann/atc模型编译工具入门教程https://atomgit.com/cann/cann-learning-hub从浅到深示例代码https://atomgit.com/cann/cann-samples官方 Sample建议先从cann-learning-hub的 “架构入门” 教程开始把五层架构跑一遍。然后按需深入做算子开发看 ops-* 仓库做模型部署看 ATC 文档做分布式训练看 HCCL。遇到问题atomgit 上的 issues 区和昇腾社区论坛都很活跃。如果这篇文章帮你理清了 CANN 的架构脉络点个赞留个言下期拆解 ATC 编译器的优化策略

相关文章:

拆解昇腾 CANN 五层架构:一个 MatMul 请求的完整旅程

适合人群:想从全局视角理解 CANN 架构的开发者 核心仓库:https://atomgit.com/cann 阅读时长:6 分钟 目录 一、为什么需要五层架构?二、第1层:昇腾计算语言层 AscendCL三、第2层:昇腾计算服务层四、第3层&…...

如何快速找回被遗忘的压缩包密码?ArchivePasswordTestTool终极指南

如何快速找回被遗忘的压缩包密码?ArchivePasswordTestTool终极指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经面…...

python代码编译成库

一、项目结构如下:your_project/ ├── match/ │ ├── __init__.py # 空文件,声明为包 │ └── matcher.py # 包含 compete_image 类 ├── stitch/ │ ├── __init__.py # 空文件,声明为包 │ └── total…...

【Midjourney双色调风格终极指南】:20年视觉算法专家亲授3步精准复刻电影级Duotone效果

更多请点击: https://kaifayun.com 第一章:双色调美学的视觉起源与Midjourney适配性解析 双色调(Duotone)并非现代数字设计的发明,其视觉基因可追溯至19世纪的凹版印刷工艺——通过两块独立印版叠加单色油墨&#xf…...

紧急更新!Midjourney v6.6对洛可可风格支持突降37%?立即启用这5个兼容性补丁prompt,保住你的商业项目交付期

更多请点击: https://intelliparadigm.com 第一章:Midjourney v6.6洛可可风格兼容性危机全景速览 Midjourney v6.6 发布后,大量用户在生成洛可可(Rococo)风格图像时遭遇显著退化:繁复卷曲的藤蔓纹样被简化…...

告别繁琐操作:Super IO插件实现Blender批量导入导出智能化解决方案

告别繁琐操作:Super IO插件实现Blender批量导入导出智能化解决方案 【免费下载链接】super_io blender addon for copy paste import / export 项目地址: https://gitcode.com/gh_mirrors/su/super_io 在3D建模工作流中,最耗时的往往不是创意设计…...

D3KeyHelper自动化操作技术手册:暗黑破坏神3智能执行解决方案

D3KeyHelper自动化操作技术手册:暗黑破坏神3智能执行解决方案 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 在暗黑破坏神3的高强度游戏…...

终极指南:如何使用IDM激活脚本实现永久免费下载体验

终极指南:如何使用IDM激活脚本实现永久免费下载体验 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager(IDM&…...

FontCenter:AutoCAD字体管理终极解决方案,彻底告别字体缺失困扰

FontCenter:AutoCAD字体管理终极解决方案,彻底告别字体缺失困扰 【免费下载链接】FontCenter AutoCAD自动管理字体插件 项目地址: https://gitcode.com/gh_mirrors/fo/FontCenter 你是否曾经在打开AutoCAD图纸时遇到过字体缺失的尴尬?…...

Navicat Mac终极重置指南:3种简单方法快速恢复试用期

Navicat Mac终极重置指南:3种简单方法快速恢复试用期 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 你是否正在使…...

闲鱼客户端三重动态签名机制解析:x-sign、x-mini-wua与x-umt

1. 这不是“爬虫教程”,而是一次对闲鱼客户端通信机制的解剖式复盘你有没有遇到过这样的情况:用 Python 写了个闲鱼商品监控脚本,本地跑得好好的,一上服务器就频繁 403;或者用 Postman 模拟请求,Headers 里…...

突破禾本科转化壁垒:农杆菌介导谷子基因编辑的关键参数解析 伯远生物

摘要:谷子(Setaria italica)作为C4禾谷类模式作物,其CRISPR基因编辑效率高度依赖稳定的遗传转化体系。针对谷子基因型依赖性强、愈伤再生困难等痛点,本文系统梳理了以胚性愈伤组织为核心的农杆菌转化流程,详…...

从零实现一个电商图片下载器:技术方案与核心代码

引言如果你想自己开发一款电商图片下载工具&#xff0c;本文提供完整的技术方案和核心代码参考。一、技术选型组件推荐方案备选方案浏览器内核CEFElectron下载库libcurlrequests界面框架QtElectron跨平台CEF QtElectron二、核心代码实现2.1 浏览器初始化cppCefRefPtr<CefBr…...

企业微信SCRM与客户管理系统推荐:2026年这12家值得关注

2026年&#xff0c;一个企业要选客户管理系统&#xff0c;第一个要回答的问题是&#xff1a;你的客户在哪里&#xff1f;如果答案是"微信"&#xff0c;那企业微信SCRM就是最直接的路径——而在这个领域&#xff0c;微盛企微管家作为企业微信最大ISV&#xff0c;服务了…...

标书高效制作:Word 排版快捷键 + AI 工具组合工作流

在招投标文档制作中&#xff0c;Word 排版、格式调整、段落对齐、目录生成等重复操作&#xff0c;往往占用大量时间。熟练使用快捷键可以显著提升编辑速度&#xff0c;而结合 AI 辅助工具&#xff0c;则能从流程层面实现效率升级。本文分享一套安全、合规、无营销的纯办公实践方…...

Python盲水印终极指南:3个简单步骤保护你的数字版权

Python盲水印终极指南&#xff1a;3个简单步骤保护你的数字版权 【免费下载链接】BlindWatermark 使用盲水印保护创作者的知识产权using invisible watermark to protect creators intellectual property 项目地址: https://gitcode.com/gh_mirrors/bl/BlindWatermark 在…...

扁平化AI绘图黄金公式:sref 1280+--stylize 600+--v 6.2,为什么92%用户漏掉关键权重锚点?

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;扁平化AI绘图黄金公式的认知革命 传统AI绘图依赖复杂提示工程与多层参数调优&#xff0c;而“扁平化AI绘图黄金公式”颠覆了这一范式——它将生成逻辑压缩为三个可解释、可复用、可验证的核心要素&#xff1a…...

终极游戏光标解决方案:YoloMouse让你的鼠标在游戏中清晰可见

终极游戏光标解决方案&#xff1a;YoloMouse让你的鼠标在游戏中清晰可见 【免费下载链接】YoloMouse Game Cursor Changer 项目地址: https://gitcode.com/gh_mirrors/yo/YoloMouse 你是否曾在激烈的游戏战斗中迷失了鼠标光标&#xff1f;当屏幕上特效绚烂、技能乱飞时&…...

提示词失效?图像模糊?边缘锯齿?,深度拆解Midjourney毛玻璃效果的3大渲染瓶颈与实时修复路径

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Midjourney毛玻璃效果的本质与视觉语义定位 毛玻璃效果&#xff08;Frosted Glass Effect&#xff09;在 Midjourney 中并非原生支持的渲染模式&#xff0c;而是用户通过提示词工程、风格化参数与后期语义引导…...

提升3倍效率的Windows桌面端酷安社区解决方案:基于UWP平台的高性能第三方客户端

提升3倍效率的Windows桌面端酷安社区解决方案&#xff1a;基于UWP平台的高性能第三方客户端 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP Coolapk-UWP是一款基于UWP平台的第三方酷安客户…...

大模型转型AI工程师:小白必看学习路线,收藏这份成功秘籍!

本文作者分享了自己从零基础成功转型AI工程师的经历&#xff0c;强调学AI无需死磕算法和公式&#xff0c;关键在于掌握Python搭建AI智能体和Java项目迭代能力。文章提供三个月的学习路线&#xff0c;包括Python基础、Prompt技巧、RAG技术、知识库搭建、Agent搭建等&#xff0c;…...

AI音乐操作手册:从输入提示词到导出发布全流程

现在 AI 写歌工具已经不只是生成一段背景音乐&#xff0c;很多工具都可以从文字描述直接生成带人声的完整歌曲。真正影响体验的不是工具名字有多热&#xff0c;而是它适不适合当前场景&#xff1a;中文歌词、短视频配乐、个人纪念歌、细分曲风或者二次编辑&#xff0c;判断标准…...

大模型岗位锐评:小白程序员转型指南 学习资源包免费领!收藏必备

本文深度剖析大模型领域的五大梯队岗位&#xff0c;从底层架构工程师到应用开发工程师&#xff0c;详细介绍了各岗位的日常工作、新手友好度、优势与避雷点。文章强调大模型领域人才缺口巨大&#xff0c;传统程序员具备转型优势&#xff0c;并提供了系统学习路线及实战资源&…...

如何快速上手UndertaleModTool:游戏修改的完整指南

如何快速上手UndertaleModTool&#xff1a;游戏修改的完整指南 【免费下载链接】UndertaleModTool The most complete tool for modding, decompiling and unpacking Undertale (and other GameMaker games!) 项目地址: https://gitcode.com/gh_mirrors/un/UndertaleModTool …...

Windows RTMP流媒体服务器搭建完整指南:nginx-rtmp-win32终极教程

Windows RTMP流媒体服务器搭建完整指南&#xff1a;nginx-rtmp-win32终极教程 【免费下载链接】nginx-rtmp-win32 Nginx-rtmp-module Windows builds. 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-win32 想要在Windows系统上快速搭建自己的RTMP直播服务器…...

MPV_lazy终极指南:3分钟打造专业级Windows视频播放体验

MPV_lazy终极指南&#xff1a;3分钟打造专业级Windows视频播放体验 【免费下载链接】mpv_PlayKit &#x1f504; mpv player 播放器折腾记录 Windows conf | 中文注释配置 汉化文档 快速帮助入门 | mpv-lazy 懒人包 Win11 x64 config | 着色器 shader 滤镜 filter 整合方案 项…...

海外渠道通知短信接口

在跨境业务体系中&#xff0c;企业常面临区域代理商分散、信息同步滞后、补货提醒不及时的问题&#xff0c;传统邮件、即时通讯易出现漏读、延迟&#xff0c;而国际渠道通知短信接口凭借触达稳定、实时性强的优势&#xff0c;成为跨境企业对接代理商的高效通信方案。本文从接口…...

Diablo Edit2完全指南:掌握暗黑破坏神2存档编辑的艺术

Diablo Edit2完全指南&#xff1a;掌握暗黑破坏神2存档编辑的艺术 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾经在暗黑破坏神2中因为技能点分配失误而懊恼&#xff1f;是否因为刷不到…...

如何用QKeyMapper在5分钟内搞定Windows设备按键映射:终极免费解决方案

如何用QKeyMapper在5分钟内搞定Windows设备按键映射&#xff1a;终极免费解决方案 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper&#xff0c;Qt开发Win10&Win11可用&#xff0c;不修改注册表、不需重新启动系统&#xff0c;可立即生效和停止。支持游戏手柄映射到…...

5个简单步骤掌握GanttProject:免费开源的项目管理工具终极指南

5个简单步骤掌握GanttProject&#xff1a;免费开源的项目管理工具终极指南 【免费下载链接】ganttproject Official GanttProject repository. 项目地址: https://gitcode.com/gh_mirrors/ga/ganttproject GanttProject是一款功能强大的免费开源项目管理软件&#xff0c…...