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

CANN-Ascend-C存储体系-昇腾NPU的四级缓存怎么用才算对

写 Ascend C 算子最常犯的错误不是计算写错是数据搬运写错。昇腾NPU有四级存储每一级的容量、带宽、延迟都不同。数据该放在哪一级、什么时候搬、搬多少直接决定算子性能。四级存储级别名称容量带宽延迟用途L0HBM全局显存64GB1.2 TB/s~300ns权重、KV Cache、模型参数L1L2 Cache8MB6 TB/s~30ns自动缓存热点数据L2L1 Buffer1MB12 TB/s~5ns算子内部的中间数据L3Local Buffer256KB24 TB/s~1nsVector/Cube 当前计算的数据带宽差距是 20 倍HBM 到 Local Buffer。算子性能取决于数据在 L0 停留多久——停留越短越好。数据搬运方式DMA 搬运L0 ↔ L2由 DMA 引擎执行不占 Cube/Vector 单元。适合大批量数据搬运。// DMA 搬运HBM → L2 → L1DataCopyPad(l1_buf,hbm_buf,{block_len});// L0 → L1DataCopyPad(hbm_buf,l1_buf,{block_len});// L1 → L0Cube/Vector 自动搬运L1 ↔ L3Cube 或 Vector 单元执行计算时自动从 L1 读数据到 Local Buffer。程序员不需要手动搬。// Vector 计算时自动从 L1 读到 Local BufferAdd(z_local,x_local,y_local,block_len);// x_local, y_local 在 Local Buffer// z_local 写回 Local BufferDouble Buffer 技术单次搬运的计算流程[DMA搬入] → [计算] → [DMA搬出] → [DMA搬入] → [计算] → [DMA搬出] 计算单元空闲等待 计算单元空闲等待Double Buffer 让计算和搬运重叠Buffer A: [DMA搬入] → [计算] → [DMA搬出] Buffer B: [DMA搬入] → [计算] → [DMA搬出] ↑ 跟 Buffer A 的计算同时进行代码实现classMyKernel{__aicore__inlinevoidProcess(){// 双缓冲buf_a 和 buf_b 交替使用LocalTensorhalfbuf_apipe_.GetBufferhalf(0);LocalTensorhalfbuf_bpipe_.GetBufferhalf(1);// 预取第一块DataCopy(buf_a,x_gm_[0],block_len_);for(inti0;itiles_-1;i){// 当前块计算 下一块预取DataCopy(buf_b,x_gm_[(i1)*block_len_],block_len_);Compute(buf_a);// 计算第 i 块std::swap(buf_a,buf_b);}// 最后一块Compute(buf_a);}};Double Buffer 的前提L1 有足够空间放两个 buffer。1MB 的 L1 / 2 512KB per buffer。如果 block_len 4096 个 fp16 元素 8KB512KB 可以放 64 个 block空间充裕。常见性能反模式反模式 1计算完再搬运// ❌ 搬入全部数据 → 全部计算 → 搬出全部数据for(inti0;itiles_;i)DataCopy(l1[i],hbm[i],block_len_);for(inti0;itiles_;i)Compute(l1[i]);for(inti0;itiles_;i)DataCopy(hbm[i],l1[i],block_len_);// ✅ 分块计算搬运重叠for(inti0;itiles_;i){DataCopy(l1,hbm[i],block_len_);Compute(l1);DataCopy(hbm[i],l1,block_len_);}第一种 L1 放不下所有 tile会触发 L1 溢出到 L2性能降 50%。反模式 2忽略对齐// ❌ 非对齐搬运DataCopy(dst,src,17);// 17 不是 32 的倍数// ✅ 对齐搬运补零到 32 的倍数uint32_taligned_len(len31)~31;DataCopyPad(dst,src,{aligned_len});DMA 引擎的最小搬运单位是 32 bytes。非对齐长度会导致 DMA 多次发起效率降低。反模式 3L1 缓存未复用// ❌ 同一数据读两遍DataCopy(x_local,x_gm,len);// 第一次读Compute1(x_local);DataCopy(x_local,x_gm,len);// 重复读Compute2(x_local);// ✅ 读一次多步计算DataCopy(x_local,x_gm,len);Compute1(x_local);Compute2(x_local);// x_local 还在 L1 里L1 数据在算子执行期间一直有效不需要重复从 HBM 读。Ascend C 的性能调优本质上是存储调优。计算逻辑大家都差不多搬运策略决定了谁是 90 分谁是 60 分。掌握四级存储的层次关系和 Double Buffer 技术算子性能就能到 80 分以上。仓库在这里https://atomgit.com/cann/opbase

相关文章:

CANN-Ascend-C存储体系-昇腾NPU的四级缓存怎么用才算对

写 Ascend C 算子,最常犯的错误不是计算写错,是数据搬运写错。昇腾NPU有四级存储,每一级的容量、带宽、延迟都不同。数据该放在哪一级、什么时候搬、搬多少,直接决定算子性能。 四级存储级别名称容量带宽延迟用途L0HBM&#xff08…...

Day03 Web应用OSS存储负载均衡CDN加速反向代理WAF防护部署影响

我的博客园笔记 一、WebWAF WAF(Web应用防火墙):是一种专门设计用于保护 Web 应用程序免受恶意攻击的安全设备,它能够实时监控、过滤和拦截可能对网站造成危害的网络流量,从而避免网站服务器被恶意入侵,导…...

Python之anonymate包语法、参数和实际应用案例

一、AnonyMate 包概述 AnonyMate是 Python 第三方数据匿名化工具包,版本 0.1.5,专注结构化/非结构化数据脱敏、假名化、加密与合成数据生成,适配医疗、金融、电商等敏感数据场景,助力合规(GDPR、等保2.0)。…...

开发靠 AI 提效,测试成最大瓶颈,现状过于真实

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中…...

深入了解指针(3)

文章目录数组名的理解对arr[i]的理解一维数组传参的本质二级指针指针数组指针数组的用处总结这里是think的博客 希望可以一起交流知识&#xff0c;一起think 今天我们来学习指针(3)吧 一起来think吧 数组名的理解 //测试环境:X86 #include <stdio.h> int main() { int a…...

论文修改踩坑无数?paperxie 帮你一站式搞定查重与 AIGC 降重难题

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 作为一名被论文查重和 AIGC 检测反复折磨过的过来人&#xff0c;我深知毕业季里&#xff0c;对着飘红的查重报告和居高…...

什么是占位符

占位符就是字符串里预留空位&#xff0c;后面填上真实数据&#xff0c;PyCharm里直接写代码就能运行调试1.%格式化占位符&#xff08;旧式格式化&#xff09;语法格式&#xff1a;"模板字符串"%(数据1&#xff0c;数据2...)基础类型占位符1.%s &#xff1a;适配字符串…...

什么是运算符

等一下...

【Lovable前端开发实战指南】:20年专家亲授5个让团队抢着用的可维护性设计模式

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Lovable前端开发的核心理念与可维护性本质 Lovable前端开发并非追求炫酷动效或技术堆砌&#xff0c;而是以人本设计为原点&#xff0c;将开发者体验&#xff08;DX&#xff09;与用户界面体验&#xff08;UX&a…...

深度解析:基于RAG与任务执行的AI Agent全能力矩阵在话务系统的工程实践

在企业通讯架构演进中&#xff0c;话务系统正经历从流程驱动向智能驱动的范式转移。传统话务台高度依赖预设的IVR流程与人工查询&#xff0c;不仅交互生硬&#xff0c;且存在严重的数据孤岛问题。本文将聚焦AI Agent的全能力矩阵&#xff0c;从技术架构与业务逻辑层面&#xff…...

2026 年 5 月 AI 热点:大模型、硬件、人形机器人全面升级

一、大模型技术突破 | LLM Technology Breakthroughs 1.1 OpenAI GPT‑5.5 正式成为ChatGPT默认模型 | GPT‑5.5 Becomes ChatGPT Default Model 英文内容 | English On May 5, 2026, OpenAI officially rolled out GPT‑5.5 Instant as the new default model for ChatGPT, …...

[特殊字符]通用漏洞挖掘(黑盒篇)| 从一个登录框SQL注入,到拿下CNVD证书

&#x1f3af; 0x00 这篇文章能给你什么&#xff1f; 黑盒测试中 如何发现 SQL 注入&#xff08;手工 思路&#xff09; 万能密码 ≠ 全部&#xff0c;但有了它一定有问题 如何从“事件型漏洞”升级为“通用型漏洞” 利用 JS 指纹 在 FOFA 上批量找同款系统 CNVD 证书 的获…...

编译和链接(以Windows,VS环境下C语言为例)

编译和链接(以Windows,VS环境下C语言为例&#xff09;一.什么是翻译环境和运行环境&#xff1f;二.翻译环境2.1预处理(预编译)2.2编译2.2.1词法分析2.2.2语法分析2.2.3语义分析2.3汇编2.4链接三.运行环境提前说明一下&#xff0c;虽然说我们是以Windows操作系统为例&#xff0c…...

用 shell 命令做 AI Agent 的插件系统:为什么 Hook 不是函数调用

用 shell 命令做 AI Agent 的插件系统&#xff1a;为什么 Hook 不是函数调用 这是 《写完一个 AI 编程助手之后&#xff0c;我才确定 prompt 工程不是重点》 系列的第七篇&#xff08;最后一篇&#xff09;。前六篇讲了进程模型、权限、并发调度、上下文压缩、记忆系统。这一篇…...

Gemini3.1Pro和GPT5.5写代码到底谁更强五类任务实测数据说

做多模型编码能力横向对比测试时用了AI模型聚合平台&#xff0c;一站接入两个模型方便跑同一套编码任务。Gemini 3.1 Pro在SWE-Bench Verified拿到80.6%。GPT-5.5在Terminal-Bench拿到82.7%。分数接近但写代码的实际体验和分数不是一回事。这次用五类真实开发任务做了一轮系统对…...

诚邀您参加 2026 Google Cloud Startup Day

以下文章来源于谷歌云服务&#xff0c;作者 Google Cloud...

不是碳基,也不是硅基!你好,我是金蝶灵基,企业AI原生操作系统!

AI是危还是机&#xff1f;自年初小龙虾“爆炸”以来&#xff0c;很多企业服务巨头都或主动或被动地陷入了深深地思考&#xff1a;连一直仰望并追捧的偶像——Salesforce都开始快速变革&#xff0c;我们能无动于衷吗&#xff1f;这半年以来&#xff0c;中国软件网注意到&#xf…...

谷歌“反重力”工具更新强行替换软件,用户恢复工作困难重重!

谷歌“反重力”工具更新强行替换软件&#xff0c;用户恢复工作困难重重&#xff01;2026年5月21日&#xff0c;原本打算用“反重力”工具工作的用户&#xff0c;遭遇了谷歌的意外安排。前一天&#xff0c;谷歌在2026年I/O开发者大会上推出“反重力”工具新版本&#xff0c;将其…...

BBEdit 16 正式发布!新增百多项功能,部分用户可免费升级

产品 产品 BBEdit Yojimbo iPad 版 Yojimbo TextWrangler 支持 支持 BBEdit Yojimbo iPad 版 Yojimbo TextWrangler 产品下载 找回序列号 SDK 与开发者信息 公司书架 商店 商店 购物车 许可协议 Mac App Store 常见问题 销售政策 查找经销商 多用户许可证 联系我们 联系我们 找…...

uv虽快但包管理体验差:命令笨拙、更新不安全,改进之路在何方?

【uv项目承接与特点】自2023年以来&#xff0c;作者首次有空承接新的项目。Astral的uv在Python世界掀起热潮&#xff0c;它速度极快&#xff0c;能轻松处理Python版本&#xff0c;还能用一个二进制文件替代半打工具&#xff0c;作者之前也写过多篇关于它的文章。【uv使用体验问…...

毫米波混合波束成形技术在VR中的应用与优化

1. 毫米波VR中的混合波束成形技术解析在无线VR应用中&#xff0c;用户对低延迟和高带宽的需求日益增长。传统Wi-Fi标准在密集环境下难以满足这些QoS要求&#xff0c;而毫米波技术凭借其高传输速率和低延迟特性成为理想选择。本文将深入探讨毫米波频段下混合波束成形技术的实现原…...

8051项目代码流程图工具选择与应用指南

1. 流程图工具概述接手一个大型8051项目时&#xff0c;快速理解代码结构是每个嵌入式工程师都会面临的挑战。我在处理遗留代码时&#xff0c;第一件事就是寻找合适的流程图工具来可视化程序逻辑。市面上确实存在多种能够解析C51代码并生成流程图的软件&#xff0c;但选择时需要…...

量子机器学习噪声挑战与HPQS混合框架解析

1. 量子机器学习中的噪声挑战与HPQS解决方案量子机器学习(QML)作为量子计算与经典机器学习的交叉领域&#xff0c;正在重新定义我们处理复杂模式识别问题的方式。与传统机器学习不同&#xff0c;QML利用量子态的叠加和纠缠特性&#xff0c;理论上可以在某些特定任务上实现指数级…...

混合参数化量子态(HPQS)在量子机器学习中的应用与优化

1. 混合参数化量子态&#xff08;HPQS&#xff09;框架解析量子机器学习在NISQ&#xff08;Noisy Intermediate-Scale Quantum&#xff09;时代面临两大核心挑战&#xff1a;参数化量子电路&#xff08;PQC&#xff09;因有限测量次数导致的统计不确定性&#xff0c;以及神经量…...

8051仿真器OMF转SIG格式的实战指南

1. Signum 8051 仿真器符号转换器使用指南在嵌入式开发领域&#xff0c;Signum Systems 的 8051 仿真器是一个常用的调试工具。很多开发者在使用 Vision 开发环境时&#xff0c;经常遇到需要将链接器生成的绝对目标模块(OMF)转换为仿真器专用格式的需求。本文将详细介绍这个转换…...

量子纠错码与逻辑门优化实现技术解析

1. 量子纠错码与逻辑门实现基础量子纠错码是量子计算中确保计算可靠性的核心技术。与经典计算不同&#xff0c;量子态具有相干性和不可克隆性&#xff0c;这使得量子信息在存储和处理过程中极易受到环境噪声的影响。稳定子码&#xff08;Stabilizer Codes&#xff09;作为一类重…...

Keil µVision TAB显示异常问题分析与解决方案

1. 问题现象与背景分析在Keil Vision集成开发环境中&#xff0c;部分用户遇到了编辑器界面显示异常的问题。具体表现为&#xff1a;当代码中包含TAB字符&#xff08;制表符&#xff09;时&#xff0c;屏幕上会出现奇怪的显示错乱&#xff0c;原本应该显示为空白缩进的区域&…...

量子纠错码与硬件定制逻辑门的优化实现

1. 量子纠错码与硬件定制逻辑门概述量子纠错码&#xff08;QECC&#xff09;是容错量子计算的核心组件&#xff0c;其核心思想是通过编码将量子信息分布在多个物理量子比特上&#xff0c;利用稳定子&#xff08;stabilizer&#xff09;测量来检测和纠正错误。在众多QECC中&…...

Keil调试中局部变量修改限制的解决方案

1. 问题现象与背景解析在嵌入式开发过程中&#xff0c;调试环节往往占据整个开发周期的40%以上时间。作为Keil Vision的资深用户&#xff0c;我最近在调试一个基于C166架构的通信协议栈时&#xff0c;遇到了一个看似简单却令人困扰的问题&#xff1a;当我在receive_data函数内部…...

到底什么是 AI 测试?AI 测试与传统测试的区别?

过去两年&#xff0c;AI已经从"加分项"变成了"必选项"。 不只是大厂&#xff0c;二线公司、甚至传统行业的测试团队都在要求&#xff1a;"能熟练使用AI工具提效"。 更关键的是&#xff0c;面试的玩法也变了。现在的技术面试早就跳出了 “考 AI 零…...