
Roofline Model在优化 GPU 或 CPU 程序时时常会有疑问为什么我的代码跑不快是算法太复杂还是显存带宽不够我的优化到头了吗我的代码还有多大的优化空间**。**Roofline Model提供了一个简洁的物理框架将硬件的限制与软件的行为联系起来帮助开发者确定优化的方向。核心公式性能的物理边界Roofline 模型认为程序的性能受限于两个主要因素峰值算力 (Peak GFLOPS)硬件每秒能处理的最大浮点运算次数。峰值带宽 (Peak Bandwidth)硬件每秒能从内存搬运的最大字节数。程序的实际性能P PP可以用以下公式描述P min ( Peak GFLOPS , Operational Intensity × Peak Bandwidth ) P \min(\text{Peak GFLOPS}, \text{Operational Intensity} \times \text{Peak Bandwidth})Pmin(Peak GFLOPS,Operational Intensity×Peak Bandwidth)关键概念算术强度 (Operational Intensity)这是衡量算法特性的核心指标。定义程序中每从内存读取/写入 1 字节数据所进行的浮点运算次数单位FLOPs/Byte。计算方式OI Total Floating Point Operations Total Bytes Accessed \text{OI} \frac{\text{Total Floating Point Operations}}{\text{Total Bytes Accessed}}OITotal Bytes AccessedTotal Floating Point Operations如果你的 OI 很低如向量加法性能通常受限于带宽如果 OI 很高如密集矩阵乘法性能则受限于算力。图像解读斜率与平台x轴为OIy轴为性能 P。Roofline 图由两个部分组成斜坡 (Bandwidth-Bound)此时性能随算术强度线性增长。优化手段应集中在减少内存访问、利用缓存或使用更高效的访问模式。平台 (Compute-Bound)此时算术强度已经足够高硬件计算单元已经饱和。优化手段应集中在指令级并行 (ILP)、向量化 (SIMD) 或减少计算指令。拐点 (Ridge Point)斜坡与平台的交点。它代表了要达到硬件峰值性能所需的最小算术强度。实践分析硬件参数获取以 RTX 4000 Ada 为例在分析前需查阅硬件规格Peak FP32 Performance: 26.7 TFLOPSMemory Bandwidth: 360 GB/s计算拐点: 26700 GFLOPS / 360 GB/s 74 FLOPs/Byte结论如果你的代码每读 1 字节数据进行的运算少于 74 次你就永远无法跑满显卡的算力。实战案例分析向量加法 y a x2 次读 1 次写 12 字节1 次加法运算。OI 1/ 12 0.08。处于极左侧的斜坡区属于典型的带宽受限。矩阵乘法 (GEMM)随着矩阵规模 N 增大运算量量级为 O(N^3)访存量量级为 O(N^2)。OI O(N)。随着 N 增大OI 快速向右移动最终进入计算受限区。Roofline model的局限性模型指明了优化方向。但实践中如果计算控制流复杂(如分支较多)内存访问的pattern复杂等场景。导致硬件性能难以被发挥到极致这会导致Roofline model方法估计的性能上限是一个很宽松的上界。最后一次更新时间2026-08-05 16:12:21 CST原文链接