ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Arithmetic/Itensity/Roofline

2026/8/6 17:50:47 拓冰建站 浏览量
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读取和写入的总数据字节数。示例矢量加法CABC A BCAB长度NNNFP16 数据计算量NNN次加法→N\rightarrow N→NFLOPs访存量读A,BA, BA,B各2N2N2N字节写CCC2N2N2N字节→6N\rightarrow 6N→6NBytes算术强度IN6N≈0.167 FLOP/ByteI \frac{N}{6N} \approx 0.167 \text{ FLOP/Byte}I6NN​≈0.167FLOP/Byte极低严重访存受限。大矩阵乘法CA⋅BC A \cdot BCA⋅BN×NN \times NN×N矩阵FP16 数据计算量2N32N^32N3FLOPs访存量假设无复用3N2×26N23N^2 \times 2 6N^23N2×26N2Bytes算术强度I2N36N2N3 FLOP/ByteI \frac{2N^3}{6N^2} \frac{N}{3} \text{ FLOP/Byte}I6N22N3​3N​FLOP/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)核心三要素访存受限区Memory-Bound Region斜线部分当算子的算术强度IIkneeI I_{\text{knee}}IIknee​时性能上限由内存带宽决定。此时硬件的计算单元Tensor Core / CUDA Core大部分时间在等数据算力被严重浪费。计算受限区Compute-Bound Region平线部分当算子的算术强度IIkneeI I_{\text{knee}}IIknee​时性能上限由硬件峰值算力决定。此时片上缓存复用良好内存带宽不再是瓶颈硬件计算资源被跑满。临界拐点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临界拐点Iknee3122.0156 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}}I≪Iknee​(极低)全局内存 (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}}I≫Iknee​(高) | Tensor Core / ALU 算力 | 1.Tiling (分块复用)充分利用 Shared Memory / Register / TMEM2.指令对齐使用 Tensor Core MMA 原语3.流水线重叠使用cp.async/ TMA 隐藏剩余延迟 |总结Arithmetic Intensity是算子自身的属性取决于算法逻辑与输入 Shape。Roofline Model将算子属性与硬件物理极限相结合直接回答了“这个算子性能跑不上高位到底是因为读写显存太慢还是算得不够快”在进行算子优化如使用 TileLang 或 CUDA前先绘制或推算 Roofline 指标能够精准指引优化方向避免做无效工作。