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

发表时间: 2009-04 · Communications of the ACM 52(4) (UC Berkeley)

原文: https://people.eecs.berkeley.edu/~kubitron/cs252/handouts/papers/RooflineVyNoYellow.pdf

作者/机构: Samuel Williams, Andrew Waterman, and David Patterson, Parallel Computing Laboratory, U.C. Berkeley

A1 主要贡献

本文针对当前多核处理器设计多样化给程序员、编译器编写者和架构师带来的挑战,提出了一个易于理解的可视化性能模型——Roofline模型。随着行业向多核架构转型,传统同构设计的共识不复存在,出现了诸如“多而简”核与“少而精”核、多线程、本地存储替代缓存等多种设计,这加剧了软件优化的难度。因此,一个能够提供性能指导的简洁模型尤为重要。

核心问题与研究目标:
* 问题: 多核架构的多样性使得性能优化变得复杂,缺乏一个统一、易懂的指导模型。
* 目标: 提出一个像缓存领域的3Cs模型【19,M. Hill and A. Smith, "Evaluating Associativity in CPU Caches," IEEE Trans. on Computers, 1989】一样,虽不完美但富有洞察力的模型,帮助相关人员改进并行软硬件设计。

创新点(Roofline模型):
1. 核心理念: 该模型基于一个关键洞察——在可预见的未来,片外内存带宽通常是性能的瓶颈资源【23,D. Patterson, “Latency Lags Bandwidth,” CACM, 2004】。因此,模型的核心是将处理器性能与片外内存流量联系起来。
2. 关键度量衡“计算强度” (Operational Intensity): 定义为每次DRAM访问所执行的浮点运算次数(Flops/Byte)。它衡量的是经过缓存层次过滤后,在缓存与主存之间的流量,而非处理器与缓存之间的流量。这使得模型的边界和瓶颈分析能够包含计算机的内存优化效果。
3. 可视化表示: 模型采用对数-对数坐标图,Y轴为可达到的浮点性能(GFlops/sec),X轴为计算强度。
* 性能上限(“屋顶”): 由两条线构成:一条代表处理器峰值浮点性能的水平线,和一条代表峰值内存带宽的斜线。一个计算核心(kernel)的性能上限由这两条线的下界决定,即可达 GFlops/sec = Min(峰值浮点性能, 峰值内存带宽 × 计算强度)
* 计算/内存瓶颈判断: 根据一个核心的计算强度,其性能点落在屋顶的水平部分(计算瓶颈)或倾斜部分(内存瓶颈)。

  1. “屋脊点” (Ridge Point): 水平线与斜线的交点。该点的X坐标代表了要达到系统最高性能所需的最低计算强度。屋脊点的位置揭示了在该计算机上实现峰值性能的难度。
  2. 优化指导(“天花板” Ceilings): 在“屋顶”之下,可以加入多个代表不同优化技术所能达到的性能水平的“天花板”。这些天花板为程序员指明了应当采取何种优化措施(如改进ILP/SIMD、内存亲和性等)以及优化的潜在收益(天花板之间的性能差距)。

本文通过在四种不同的多核计算机上对四个关键浮点计算核心进行分析,验证了Roofline模型的有效性,证明了它能够为并行软件和硬件的性能改进提供深刻的洞察。

A3 背景知识/关键Observation/设计原则

2. 性能模型

3. ROOFLINE模型

图1. (a) 左图为AMD Opteron X2的Roofline模型,(b) 右图为Opteron X2与Opteron X4的对比。
图1. (a) 左图为AMD Opteron X2的Roofline模型,(b) 右图为Opteron X2与Opteron X4的对比。

A2 方法细节

4. 为模型添加天花板

图2. 带有天花板的Opteron X2 Roofline模型。
图2. 带有天花板的Opteron X2 Roofline模型。

5. 将3Cs模型与计算强度联系起来

A4 实验环境

6.1 四种不同的多核计算机

本文选择了四种各具特色的双路多核计算机系统进行模型演示,其关键特性如表1所示。

表1:本研究中使用的四种多核计算机的特性。
表1:本研究中使用的四种多核计算机的特性。

6.2 四种不同的浮点核心

本文没有选择标准并行基准套件(如Parsec【5】或Splash-2【30】),而是受科学计算专家Phil Colella【10】的启发,从他提出的对未来科学与工程至关重要的“七个矮人”中选取了四个核心进行演示。这些核心在较高层次上定义,允许跨实现进行行为推理。本文使用了针对每个核心的自动调优器【12】【25】【26】来生成针对特定多核计算机的最佳代码。

表2:本研究中使用的四个浮点核心。
表2:本研究中使用的四个浮点核心。

A4 实验结果

6.3 Roofline模型与结果

图3和图4展示了四台计算机的Roofline模型,并标出了各个核心优化后的性能点(红色X)和计算强度(粉色虚线)。由于SpMV核心天然地实现了乘法和加法操作的平衡,而其他核心则难以做到,因此针对Xeon、X4和Cell,本文为SpMV和其他三个核心分别绘制了不同的图(乘加平衡天花板位置不同)。T2+由于硬件限制,只有一个统一的Roofline图。

6.3.1 稀疏矩阵向量乘法 (SpMV)

6.3.2 格子玻尔兹曼磁流体动力学 (LBMHD)

6.3.3 模板计算 (Stencil)

6.3.4 三维快速傅里叶变换 (3-D FFT)

表3:四个核心在四台多核计算机上使用的优化技术摘要。
表3:四个核心在四台多核计算机上使用的优化技术摘要。
图3. Intel Xeon, AMD Opteron X4, 和 IBM Cell 的Roofline模型 (见表1)。
图3. Intel Xeon, AMD Opteron X4, 和 IBM Cell 的Roofline模型 (见表1)。
图4. Sun UltraSPARC T2+的Roofline模型。
图4. Sun UltraSPARC T2+的Roofline模型。

6.3.5 生产力与性能

6.3.6 Roofline模型演示总结

表4总结了每个核心-计算机组合的性能、带宽以及其所处的性能天花板区间。

表4:Roofline模型的性能边界验证。
表4:Roofline模型的性能边界验证。

A7 补充细节

7. 关于ROOFLINE的谬误

A5 结论

从串行计算到并行计算的巨变增加了程序员在制作正确、高效、可扩展和可移植软件时必须面对的计算机多样性【4】。本文描述了一个简单而可视化的模型,以帮助观察哪些系统能与重要的核心良好匹配,或者反过来看,如何改变核心代码或硬件以良好地运行所需的核心。对于不能完全放入缓存的浮点核心,我们展示了计算强度——即每从DRAM传输一个字节所执行的浮点运算次数——对于核心和多核计算机都是一个重要参数。

我们将该模型应用于来自“七个矮人”【10】【4】的四个核心,在四种近期多核设计上进行了验证:AMD Opteron X4、Intel Xeon、IBM Cell和Sun T2+。屋脊点——达到最大性能所需的最小计算强度——被证明是比时钟频率或峰值性能更好的性能预测指标。Cell在这些核心上提供了最高的性能,但T2+是实现其最高性能最容易的计算机。一个原因是T2+的Roofline模型屋脊点是最低的。

仅仅是图形化的Roofline就能提供关于实现计算机峰值性能难度的洞察,因为它能清晰地揭示计算机何时处于不平衡状态。两种x86计算机的计算屋脊点分别为4.4和6.7——意味着访问DRAM的每个8字节操作数需要35到55次浮点运算——然而表4中16个核心与计算机组合的计算强度范围仅从0.25到1.64,中位数为0.60。如果架构师希望程序能在他们的新设计上达到峰值性能,就应该牢记屋脊点。

我们使用微基准测试来测量屋顶线和天花板,但我们也可以使用性能计数器(见附录A.1和A.3)。事实上,我们相信性能计数器和Roofline模型之间可能存在协同关系。自动创建Roofline模型的需求可以指导设计者在面对数百个候选指标但硬件预算有限时,应该收集哪些指标【6】。

我们相信Roofline模型可以为其他类型的多核系统(如向量处理器和GPU)、其他核心(如排序和光线追踪)、其他计算指标(如每秒成对排序次数和每秒帧数)以及其他流量指标(如L3缓存带宽和I/O带宽)提供洞察。我们邀请其他人加入我们,共同探索Roofline模型的有效性。

A6 附录

附录A可在CACM网站上在线找到:http://cacm.acm.org