通过 Roofline 分析优化应用程序性能
NERSC 使用 Intel® Parallel Studio 和 Intel® Advisor 将其科学应用程序在 Intel® Xeon Phi™ 处理器上的性能提高了 35%。
点击此处注册并下载免费的 Intel® Parallel Studio XE 30天试用版
美国国家能源研究科学计算中心 (NERSC) 是 美国能源部科学办公室 的主要科学计算设施。NERSC 中心位于劳伦斯伯克利国家实验室,为全国实验室和大学的 6,000 多名科学家提供服务,他们研究燃烧、气候建模、聚变能、材料科学、物理学、化学、计算生物学和其他学科的广泛问题。
为实现其目标,NERSC 需要优化其多样化的应用程序,以在 Intel® Xeon Phi™ 处理器上实现最佳性能。为此,它使用了一个基于 Intel® Advisor 的 Roofline 分析模型,该工具是 Intel® Parallel Studio 软件套件的一部分。Roofline 模型最初由劳伦斯伯克利国家实验室计算研究部计算机科学家 Sam Williams 开发。使用该模型使应用程序性能提高了高达 35%。
Roofline 分析
“优化复杂应用程序需要一种绝对性能意识,”NERSC 的博士后研究员 Tuomas Koskela 博士解释道。“有许多潜在的优化方向。了解要采取哪个方向、哪些因素限制了性能以及何时停止至关重要。”
Roofline 分析有助于确定应用程序与计算平台的峰值性能之间的差距。这种视觉直观的性能模型可以限制在多核、多核或加速器处理器架构上运行的各种数值方法和操作的性能。
该模型不是简单地使用峰值百分比估算,而是可以通过将局部性、带宽和不同的并行化范例组合成一个单一的性能指标来评估性能质量。Roofline 指标有助于确定实现和固有的性能限制(图 1)。
经典的 Roofline 模型包括三个测量值
- 每秒浮点运算次数 (FLOP/s)
- 来自 DRAM 的字节数
- 计算时间
一体化工具
Intel Advisor 的 Roofline 实现通过绘制更多 Roofline 来提供比标准 Roofline 分析更多的洞察。
- 缓存 Roofline 说明了当所有数据都适合相应缓存时的性能。
- 向量使用 Roofline 显示了如果有效地使用向量化,可以达到的最高性能水平。
在经典的 Roofline 模型中,字节是从内存层次结构中的给定级别测量的。算术强度 (AI) 取决于问题大小和强度。此外,内存优化也会改变 AI。
Intel Advisor 基于缓存感知 Roofline 模型,其中字节从内存层次结构的所有级别进入 CPU。AI 与问题大小和平台无关,并且对于给定的算法是一致的。
图 2 显示了一个点在经典 Roofline 模型与缓存感知 Roofline 模型中的移动方式。
图 3 显示了 Intel Advisor 的缓存感知 Roofline 模型报告。红色循环是耗时最多的,而绿色循环在计算时间方面微不足道。较大的循环如果进行优化,将产生更大的影响。离 Roofline 最远的循环有最大的改进潜力。
缓存感知 Roofline 模型实战
NERSC 使用 Intel Advisor 的缓存感知 Roofline 模型优化了其两个关键应用程序
PICSAR*,一个用于多核 (MIC) 架构的高性能粒子网格 (PIC) 库
XGC1*,一个用于聚变等离子体的 PIC 代码
PICSAR 应用程序设计用于与现有的 PIC 代码 WARP* 进行接口。它为社区提供高性能 PIC 例程,并计划作为开源项目发布。
该应用程序用于等离子体物理、激光-物质相互作用和常规粒子加速器等项目。其优化包括
- L2 场缓存阻塞,其中 MPI 域被分解为瓦片
- 混合并行化,OpenMP* 处理瓦片(节点内并行)
- 新的数据结构,以实现高效的向量化(电流/电荷分配)
- 瓦片之间高效的并行粒子交换算法
- 并行优化的伪谱麦克斯韦求解器
- 粒子排序算法(内存局部性)
NERSC 将 Roofline 模型应用于三种配置
- 无瓦片处理,无向量化
- 瓦片处理(L2 缓存阻塞),无向量化
- 瓦片处理(L2 缓存阻塞)和向量化
- XGC1 应用程序是一个 PIC 代码,用于模拟托卡马克(边缘)聚变等离子体中的等离子体湍流。其复杂的几何形状包括
- 二维(极向)平面上的非结构化网格
- 网格之间复杂的、跟随场的(环向)映射
- 典型的模拟,每单元 10,000 个粒子,每个域 1,000,000 个单元,64 个环向域
- SGC1 的计算时间大部分花费在电子亚循环中。瓶颈包括
- 场收集中的场插值到粒子位置
- 推入后在非结构化网格上的单元搜索
- 推入过程中回旋运动方程中高阶项的计算
通过一次 Intel Advisor 扫描,NERSC 能够发现大部分瓶颈(图 4)。
优化包括
- 通过在短行程计数循环中插入粒子块的循环来启用向量化
- 数据结构重排,将场和粒子数据存储为 SoA 格式,这对于使用收集指令访问多个组件最有效
- 算法改进,包括减少搜索例程的不必要调用次数,以及按单元索引而不是局部坐标对粒子进行排序。
结论
Intel Advisor 的 Roofline 分析帮助 NERSC 找到了其计算平台的峰值性能,为缓存感知 Roofline 分析提供了一个一体化工具。