roofline模型用于描述在计算平台的算力和带宽的限制下,程序所能达到的理论性能上界。
如上图,为roofline模型的示意图,有三个重要概念:
- 算力:每秒所完成的浮点运算次数,单位为FLOP/s或GFLOP/s
- 带宽:每秒所完成的内存读取量,单位为Byte/s或GByte/s
- 计算密度:又称访存比,是算力与带宽的比值,即每字节读取所完成的浮点运算量,单位为FLOP/Byte
可以看到,roofline模型的纵轴为可达算力: A t t a i n a b l e G F L O P / s = m i n { P e a k G F L O P / s , A I ∗ B W } Attainable\ GFLOP/s=min\{Peak\ GFLOP/s, AI*BW\} Attainable GFLOP/s=min{Peak GFLOP/s,AI∗BW},其中 A I AI AI为访存比, B W BW BW为带宽。roofline模型分为两个阶段:
- 第一阶段为带宽限制(Bandwidth-bound),该阶段随着访存比的增大,可达算力也会增大,但是无法到达峰值算力,是因为带宽的限制(假如带宽无限大,即斜率无限大,那就可以到达峰值算力)。
- 第二阶段为算力限制(Compute-bound),该阶段无论访存比怎么增大,可达算力都为峰值算力。