屋顶模型 (roofline model) 定量分析
计算平台指标
基本性能指标
- 算力$\pi$,一个计算平台每秒钟所能完成的浮点运算数,单位是 FLOPS。
- 带宽$\beta$,一个计算平台每秒所能完成的内存交换量,单位是 Byte/s。
计算强度
以上的两个指标相除,即可得到计算平台的计算强度上限。
\[I_{max} = \frac{\pi}{\beta}\]它的含义是在这个计算平台上,每字节的内存交换最多用来进行多少次计算。
模型的指标
- 计算量,指的是输入单个样本(对于CNN而言就是一张图像),模型进行一次完整的前向传播所发生的浮点运算个数,也即模型的时间复杂度。单位是 FLOPs。
- 访存量:指的是输入单个样本,模型完成一次前向传播过程中所发生的内存交换总量,也即模型的空间复杂度。单位是 Byte。
- 模型的计算强度:同样地,由计算量除以访存量就可以得到模型的计算强度。它表示此模型在计算过程中,每字节内存交换到底用于进行多少次浮点运算。单位是FLOPs/Byte。
- 模型的理论性能:我们最关心的指标,即模型在计算平台上所能达到的每秒浮点运算次数(理论值)。单位是 FLOPS or FLOP/s。
Roof-line Model 可以计算模型的理论性能。
Roofline Model
计算平台的性能指标决定了屋顶的形态。 屋顶图的横坐标是计算强度$I$,纵坐标是算力$P$。 算力决定了屋顶$P = \pi$的高度,带宽决定了房檐$\frac{P}{I} = \beta$的斜率。 屋檐和屋顶的交点是计算强度上限$I_{max}$。
以交点为界,Roofline分为两部分:
- 带宽瓶颈,$I < I_{max}$时,计算强度较低,访存是主要的瓶颈,此时$P = \beta \cdot I$
- 计算瓶颈,$I \geq I_{max}$时,计算强度较高,此时$P = \pi$