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

Arithmetic/Itensity/Roofline

在 GPU/CPU 性能分析与 AI 算子优化中,Arithmetic Intensity(算术强度)Roofline Model(屋顶图模型)是用来定量评估算子瓶颈(瓶颈究竟在计算能力还是在内存带宽)的最核心理论工具。


1. 算术强度 (Arithmetic Intensity)

算术强度(又称计算密度,单位为FLOP/Byte)用来衡量一个算法/算子单位内存访存所做的数据计算量

计算公式:

Arithmetic Intensity (I)=总浮点计算量 (FLOPs)总内存访存量 (Bytes)\text{Arithmetic Intensity } (I) = \frac{\text{总浮点计算量 (FLOPs)}}{\text{总内存访存量 (Bytes)}}Arithmetic Intensity(I)=总内存访存量(Bytes)总浮点计算量(FLOPs)

  • FLOPs (Floating-Point Operations):算法执行的总浮点运算次数(加、乘、FMA 等)。
  • Bytes:算法从全局内存(Global Memory / DRAM)读取和写入的总数据字节数。

示例

  • 矢量加法C=A+BC = A + BC=A+B(长度NNN,FP16 数据)

  • 计算量:NNN次加法→N\rightarrow NNFLOPs

  • 访存量:读A,BA, BA,B(各2N2N2N字节),写CCC2N2N2N字节)→6N\rightarrow 6N6NBytes

  • 算术强度I=N6N≈0.167 FLOP/ByteI = \frac{N}{6N} \approx 0.167 \text{ FLOP/Byte}I=6NN0.167FLOP/Byte极低,严重访存受限)。

  • 大矩阵乘法C=A⋅BC = A \cdot BC=ABN×NN \times NN×N矩阵,FP16 数据)

  • 计算量:2N32N^32N3FLOPs

  • 访存量(假设无复用):3N2×2=6N23N^2 \times 2 = 6N^23N2×2=6N2Bytes

  • 算术强度I=2N36N2=N3 FLOP/ByteI = \frac{2N^3}{6N^2} = \frac{N}{3} \text{ FLOP/Byte}I=6N22N3=3NFLOP/Byte随着NNN增大而变高,高计算密度)。


2. Roofline Model(屋顶图模型)

Roofline Model 是由 UC Berkeley 提出的一种直观的可视化性能分析模型。它把硬件的峰值算力峰值带宽画在一张双对数坐标图上,形成一个形如“屋顶”的上限曲线。

计算性能 (TFLOP/s) ^ | Roofline (上限) | +---------------------+ <-- 硬件理论峰值算力 (Compute Bound) | / | / | / | / <-- 内存带宽上限 (Memory Bound) | / | / +-----------+-----------------------------> 算术强度 (FLOP/Byte) ^ 临界拐点 (I_knee)
屋顶图的上限公式:

Achieved Performance (TFLOP/s)=min⁡(Peak Compute Performance,Peak Memory Bandwidth×I)\text{Achieved Performance (TFLOP/s)} = \min\left(\text{Peak Compute Performance}, \text{Peak Memory Bandwidth} \times I\right)Achieved Performance (TFLOP/s)=min(Peak Compute Performance,Peak Memory Bandwidth×I)

核心三要素:
  1. 访存受限区(Memory-Bound Region,斜线部分)
  • 当算子的算术强度I<IkneeI < I_{\text{knee}}I<Iknee时,性能上限由内存带宽决定。
  • 此时硬件的计算单元(Tensor Core / CUDA Core)大部分时间在等数据,算力被严重浪费。
  1. 计算受限区(Compute-Bound Region,平线部分)
  • 当算子的算术强度I>IkneeI > I_{\text{knee}}I>Iknee时,性能上限由硬件峰值算力决定。
  • 此时片上缓存复用良好,内存带宽不再是瓶颈,硬件计算资源被跑满。
  1. 临界拐点(Knee Point,IkneeI_{\text{knee}}Iknee
  • 区分算子是 Memory-Bound 还是 Compute-Bound 的硬件物理临界值:

Iknee=硬件峰值算力 (TFLOP/s)硬件峰值内存带宽 (TB/s)I_{\text{knee}} = \frac{\text{硬件峰值算力 (TFLOP/s)}}{\text{硬件峰值内存带宽 (TB/s)}}Iknee=硬件峰值内存带宽(TB/s)硬件峰值算力(TFLOP/s)

硬件实例(NVIDIA A100 SXM 80GB FP16 Tensor Core)

  • 峰值算力≈312 TFLOP/s\approx 312 \text{ TFLOP/s}312TFLOP/s
  • 峰值 HBM 带宽≈2.0 TB/s\approx 2.0 \text{ TB/s}2.0TB/s
  • 临界拐点Iknee=3122.0=156 FLOP/ByteI_{\text{knee}} = \frac{312}{2.0} = 156 \text{ FLOP/Byte}Iknee=2.0312=156FLOP/Byte
  • 结论:在 A100 上,一个 FP16 算子每读取 1 字节数据,必须执行至少156 次浮点计算,才能把 GPU 的 Tensor Core 算力跑满!

3. AI 算子分类与优化指导

根据 Roofline 模型,大模型与深度学习中的常见算子可以分为两大类,对应的优化策略截然不同:

算子类型典型代表算术强度特征瓶颈所在核心优化方向
Memory-Bound(访存受限)Elementwise, Softmax, LayerNorm/RMSNorm, LLMDecode 阶段AttentionI≪IkneeI \ll I_{\text{knee}}IIknee(极低)全局内存 (HBM/DRAM) 带宽1.算子融合 (Kernel Fusion):减少 Global Memory 读写;


2.量化 (INT8/FP4):减少读取字节数;


3.FlashAttention:避免写入中间N×NN \times NN×N注意力矩阵 |
|Compute-Bound(计算受限) | 大 GEMM, Conv2D, LLMPrefill 阶段Attention |I≫IkneeI \gg I_{\text{knee}}IIknee(高) | Tensor Core / ALU 算力 | 1.Tiling (分块复用):充分利用 Shared Memory / Register / TMEM;


2.指令对齐:使用 Tensor Core MMA 原语;


3.流水线重叠:使用cp.async/ TMA 隐藏剩余延迟 |


总结

  • Arithmetic Intensity是算子自身的属性(取决于算法逻辑与输入 Shape)。
  • Roofline Model将算子属性与硬件物理极限相结合,直接回答了:“这个算子性能跑不上高位,到底是因为读写显存太慢,还是算得不够快?”
  • 在进行算子优化(如使用 TileLang 或 CUDA)前,先绘制或推算 Roofline 指标,能够精准指引优化方向,避免做无效工作。
http://www.jsqmd.com/news/1341118/

相关文章:

  • 惠州婚前婚恋指导哪家好:【谋仕心理】理清家庭权责 - 17728181569
  • 如何3步搭建企业级React工作流编辑器:完整实战指南
  • 嘉利恒兴交付交通银行和林格尔新区数据中心ECC控制中心——168万项目全记录
  • 2026高原行车故障不用慌,唐克鸿运汽修解决草原车辆各类故障 - GrowthUME
  • 中小企业低预算怎么做 GEO?用对方法,AI 主动推荐 - 生活动态圈
  • 腾讯开源UCL-MPComm通信库,零拷贝传输性能提升30%、非零拷贝最高提升5倍!
  • 2026 年如何筛选口碑好的塑胶外壳喷涂加工厂?核心要素解析 - 变量人生001
  • Windows系统下3步解锁Apple Touch Bar完整功能:DFRDisplayKm开源驱动终极指南
  • 2026 年济南严寒地区防水补漏技术创新白皮书:破解冻融渗漏难题 - 超人防水
  • 武威房屋漏水怎么办?超人防水补漏深耕全城专注解决武威各类季节性渗漏难题2026.8月新 - 超人防水
  • Nmap 网络扫描工具详解|常用命令、扫描方式与实战场景
  • AIGC应用工程师认证怎么考?从报名到拿证全流程 - 新闻快传
  • 白银房屋漏水怎么办?超人防水补漏(全国连锁)深耕全城,解决西北温差渗漏难题2026.8月新 - 超人防水
  • 2026 海南三亚餐饮个体户无成本票风险,金税四期大数据比对要点 - 全域品牌推荐
  • KubeSphere学习笔记:部署nginx
  • 扣子多模态消息的“黑盒”响应逻辑首次公开(附官方未文档化status_code映射表):4类超时/截断/降质错误的精准定位法
  • 2024年企业必看的网站建设风险分析与避坑指南
  • 滚动回测思想
  • [Java]-Redis面试题
  • 重庆大平层全案设计|搭某设计“一户一创意”私宅定制服务 - 甄选测评官
  • 深入理解OS--漫游,流水线,汇编
  • 5分钟搞定Windows风扇控制:FanControl终极免费教程
  • 2026南宁装修**:全案落地还原95%、工地不转包,南宁华浔品味装饰(财富广场店)凭集团背书与独立质检收获南宁业主一致好评 - 推途云
  • 2026云南药店上班没药师证?电大中专中药/药剂专业怎么报名?联系方式多少? - 最新资讯
  • WiFi万能钥匙到底靠不靠谱?安全认证与法律风险,一篇文章说清楚
  • 全国靠谱的中医师承培训机构推荐:我为什么选了阿虎医考师承 - 生活动态圈
  • 【数据库】mysql-修改密码-error-1290 (HY000): The MySQL server is running with the --skip-grant-tables option
  • 南京大学 操作系统 (JYY) 学习笔记:火星上的 Bug 与 Android 移动操作系统的黑客法则
  • Squirrel-RIFE:拯救卡顿视频!3分钟学会用AI让老旧视频流畅如丝
  • 家装空间设计优化动线收纳