0. 操作强度(operational intensity, OI,也称算存比)
要评估一个kernel函数或算子的操作强度,可以用如下公式计算
OI = 算存比 = 计算次数/访存次数 = 总浮点操作数(FLOPs)/ 总内存访问量(Bytes)
可参考另外一篇博文:https://blog.csdn.net/csdnzzt/article/details/147023548?spm=1001.2014.3001.5502
1. Roofline模型的曲线绘图
Roofline 模型可视化曲线如下图所示:

Roofline 模型曲线图的 X 轴表示 Flops/byte(GFlops per byte)即操作强度,Y 轴表示 GFlops/s(GFlops per second)。
- 通过绘制一条水平线表示计算机的峰值浮点性能,任何浮点运算的实际性能都不会超越这条线,因为它代表硬件限制。
- 通过绘制一条斜线,表示该计算机内存系统在不同操作强度下支持的最大浮点操作性能。公式如下:可实现的 GFlops/sec=Min(峰值浮点操作性能,峰值内存带宽 x 操作强度)
- 斜线和直线的交点对应的是处理器同时达到峰值浮点操作性能和峰值内存带宽的条件,这发生在特定的操作强度下:芯片的操作强度 = 峰值浮点操作性能/峰值内存带宽
Roofline 模型为每个kernel设定了性能上限,具体取决于kernel的操作强度:
- 如果触及平坦的屋顶部分,表明性能受计算限制(compute-bound);
- 如果触及斜屋顶部分,表明性能受内存限制(memory-bound)。
2. Roofline 模型数学表达
如果需要用数学公式表示 Roofline 模型,可以表示为如下:
Pmax=min(Ppeak,I∗bmax)
- Pmax: 浮点操作性能上限 [GFlops/sec]
- Ppeak: 可用的峰值浮点性能 [GFlops/sec]
- bmax: 可用的峰值内存带宽 [Bytes/sec]
- I: 计算强度 [操作数/字节] =总浮点操作数(FLOPs)/ 总内存访问量(Bytes)
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/csdnzzt/article/details/169145131




