Roofline Model

计算平台的两个指标

1. 算力 π \pi π

  • 算力 π \pi π:也称为计算平台的性能上限,指的是一个计算平台倾尽全力每秒钟所能完成的浮点运算数,单位是FLOP/s(floating-point operations per second),FLOPS它常被用来估算电脑的执行效能,尤其是在使用到大量浮点运算的科学计算领域中。

在这里插入图片描述
在这里插入图片描述

2. 带宽上限 β \beta β

  • 带宽上限 β \beta β:也即计算平台的带宽上限,指的是一个计算平台倾尽全力每秒所能完成的内存交换量,单位是Byte/s。

在这里插入图片描述
在这里插入图片描述

  • 计算强度(密度) I m a x I_{max} Imax:两个指标相除即可得到计算平台的计算强度上限。它描述的是在这个计算平台上,单位内存交换最多用来进行多少次计算。单位是FLOP/Byte。

在这里插入图片描述
举两个具体的例子,第一个是矩阵乘矩阵,矩阵C等于A乘B,而A跟B分别是一千乘一千的矩阵。假设 存储和计算都是用float 32位来表示,这样一个计算将会做1000 乘1000乘1000的浮点乘加,也 就是2G FLOPS的运算。我们要读取A和B,然后计算出来C,把它写回去,最少的存储器访问就是三个矩阵的大小,也就是12个MB。另外一个是矩阵乘向量,也就是矩阵A乘向量B,等于向量C,这时候维度还是1000的情况下,它的计算量就是1000乘1000的浮点乘加,也就是2M。而存储器访问的话最少大约是1000乘于1000个浮点数,也就是4MB。可以明显地看到上面乘矩阵的操作,它的计算量是2G,访存量是12M,那么它的这个计算量除以访存量,也就是刚刚提到的计算密度,大概是200左右。下面这个矩阵和向量中,它的计算量是2M,访存量是4M,那它的计算量除以访存量大约就只有0.5,显然这两个就是非常不同的程序。

将算力作为y轴代表性能P,计算强度作为x轴,即可得到Roofline模型:
Roofline Model_第1张图片
图中有一条折线,这个折线开始的时候是随着计算密度的增加而增加,最终会稳定在一个固定的performance上。这个意思是:当这个应用程序的计算密度大于一定值之后,将会变成一个受算术逻辑单元的计算量所限制的程序;而这个计算密度如果小于一定值,将会变成一个受存储器带宽所限制的程序。
也就是说:
在这里插入图片描述

  • 计算瓶颈区域 Compute-Bound

    不管模型的计算强度 I I I有多大,它的理论性能P最大只能等于计算平台的算力 π \pi π。当模型的计算强度 I I I大于计算平台的计算强度上限 I m a x I_{max} Imax时,模型在当前计算平台处于 Compute-Bound状态,即模型的理论性能P受到计算平台算力 π \pi π的限制,无法与计算强度 I I I成正比。但这其实并不是一件坏事,因为从充分利用计算平台算力的角度上看,此时模型已经充分的利用了计算平台的全部算力。可见,计算平台的算力 π \pi π越高,模型进入计算瓶颈区域后的理论性能P也就越大。

  • 带宽瓶颈区域 Memory-Bound

    当模型的计算强度 I I I小于计算平台的计算强度上限 I m a x I_{max} Imax时,由于此时模型位于“房檐”区间,因此模型理论性能P的大小完全由计算平台的带宽上限 β \beta β(房檐的斜率)以及模型自身的计算强度 I I I所决定,因此这时候就称模型处于 Memory-Bound 状态。可见,在模型处于带宽瓶颈区间的前提下,计算平台的带宽 β \beta β越大(房檐越陡),或者模型的计算强度 I I I越大,模型的理论性能P可呈线性增长。

模型的两个指标:计算量与访存量

  • 计算量

    计算量:指的是输入单个样本(对于CNN而言就是一张图像),模型进行一次完整的前向传播所发生的浮点运算个数,也即模型的时间复杂度。单位是FLOPS。其中卷积层的计算量公式如下:
    在这里插入图片描述

  • 访存量

    访存量:指的是输入单个样本,模型完成一次前向传播过程中所发生的内存交换总量,也即模型的空间复杂度。在理想情况下(即不考虑片上缓存),模型的访存量就是模型各层权重参数的内存占用(Kernel Mem)与每层所输出的特征图的内存占用(Output Mem)之和。单位是Byte。由于数据类型通常为float32 ,因此需要乘以四。
    在这里插入图片描述

  • 模型的计算强度 I I I

    由计算量除以访存量就可以得到模型的计算强度,它表示此模型在计算过程中,每Byte内存交换到底用于进行多少次浮点运算。单位是FLOP/Byte。可以看到,模计算强度越大,其内存使用效率越高。

  • 模型的理论性能 π \pi π

    即模型在计算平台上所能达到的每秒浮点运算次数(理论值)。单位是 FLOP/s。

你可能感兴趣的:(GPU,ROOFLINE)