在编写算子和框架的时候,经常需要分析程序的性能瓶颈。我们需要一个合适的指标和指导方法,Roofline model给出了一个简洁的定量分析方法。Roofline模型引入了一种基于Operational Intensity的定量分析方法,它定义了在计算平台上可实现的理论最大计算效率。该模型还提供了一个公式,用以计算在特定计算环境中可能达到的最高理论性能。

我们先来看下roofline model的直观表示:

Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures
Roofline Model

Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures

我们先来看下图中指标的定义:

计算强度 $I$ : 每Byte内存在交换后用于进行了多少浮点运算,即FLOPs/Bytes。模型的计算强度$I$越大,对于内存带宽的压力越小,内存的使用效率越高。

算力的大小决定了屋顶的高度,带宽决定了斜率。

在达到屋顶的转折点之前都是Memory Bound,在之后是Compute Bound。在Compute Bound的区域,不管计算强度$I$有多大,它的计算性能都由机器的实际最大计算性能所限制。

Note:

  1. roofline model讲的是程序理论上可以达到的最好性能,而不是实际达到的性能。如cache大小的限制,网络限制,未必能达到roofline模型定义的边界。