Skip to main content
QUICK REVIEW

[论文解读] Hybrid Fortran: High Productivity GPU Porting Framework Applied to Japanese Weather Prediction Model

Michel Müller, Takayuki Aoki|arXiv (Cornell University)|Oct 24, 2017
Distributed and Parallel Computing Systems被引用 4
一句话总结

本文提出 Hybrid Fortran,一种高生产率的 GPU 移植框架,通过结合基于指令的编程与针对 stencils 的领域特定语言(DSL)抽象,实现对结构化网格 Fortran 代码的高效、低开销 GPU 移植。通过抽象内存布局并支持多种并行粒度,其代码修改量相比 OpenACC 减少超过 85%,在单个 GPU 上实现最高 4.9× 加速,并在真实世界天气模型(ASUCA)中用 24 张 Tesla P100 GPU 替代了 50 多个 CPU 插槽。

ABSTRACT

In this work we use the GPU porting task for the operative Japanese weather prediction model "ASUCA" as an opportunity to examine productivity issues with OpenACC when applied to structured grid problems. We then propose "Hybrid Fortran", an approach that combines the advantages of directive based methods (no rewrite of existing code necessary) with that of stencil DSLs (memory layout is abstracted). This gives the ability to define multiple parallelizations with different granularities in the same code. Without compromising on performance, this approach enables a major reduction in the code changes required to achieve a hybrid GPU/CPU parallelization - as demonstrated with our ASUCA implementation using Hybrid Fortran.

研究动机与目标

  • 解决大气科学中遗留的结构化网格 Fortran 代码在 GPU 移植时存在的生产率差距问题。
  • 克服 OpenACC 在管理基于 stencil 的天气模型的内存布局和粗粒度并行化方面的局限性。
  • 在不重写核心计算内核的前提下实现高效的 GPU 移植,保持代码重用性和可维护性。
  • 通过在编译时抽象内存布局,支持多种并行粒度,以提升性能和可移植性。
  • 在生产级天气预报模型(ASUCA)上展示该框架的有效性,实现真实世界性能与可扩展性。

提出的方法

  • 在 Fortran 上层引入 Hybrid Fortran 作为领域特定语言(DSL)层,结合 OpenACC 风格的指令与针对 stencil 的抽象。
  • 通过编译时数据布局转换抽象内存布局,重新排列数组以匹配目标 GPU 的内存访问模式。
  • 通过显式 @parallelRegion 和 @domainDependent 指令支持多种并行粒度,实现在同一代码库中同时表达细粒度与粗粒度并行。
  • 使用存储顺序宏和 DSL 构造,将用户代码与底层内存布局决策解耦,降低手动优化负担。
  • 在最小修改下重用现有 CPU 代码,复用超过 95% 的原始 ASUCA 代码库。
  • 应用自动代码转换,将面向 CPU 的循环和数据结构映射为具有优化内存访问的高效 GPU 内核。

实验结果

研究问题

  • RQ1基于指令的 GPU 编程(如 OpenACC)能否足够高效地支持具有复杂内存访问模式的大规模、遗留结构化网格天气模型?
  • RQ2内存布局抽象在多大程度上能减少 GPU 移植过程中对低层级代码重构的需求?
  • RQ3如何在单一 Fortran 代码库中高效表达并编译多种并行粒度?
  • RQ4对于一个真实世界的大尺度天气模型,基于 OpenACC 的 GPU 移植与 Hybrid Fortran 方法相比,实际的代码量开销有何差异?
  • RQ5能否在生产级天气预报系统中实现混合 GPU/CPU 实现,同时保持性能损失最小化和代码高度重用?

主要发现

  • 超过 85% 的 ASUCA 代码库在未修改的情况下被复用,Hybrid Fortran 版本中仅有 16% 的总代码量需要修改。
  • 与 Hybrid Fortran 相比,等效的 OpenACC 实现将需要额外约 11,000 行代码——约占参考代码库的 28%,而 Hybrid Fortran 仅需 16% 的修改量。
  • 与单个 18 核 Intel Xeon CPU 插槽相比,Hybrid Fortran 实现的单个 Tesla P100 GPU 上实现了最高 4.9× 加速。
  • 在全规模生产运行(1581 × 1301 × 58 网格)中,24 张 Tesla P100 GPU 替代了超过 50 个 18 核 Broadwell Xeon CPU 插槽,展现出显著的硬件效率。
  • 该框架减少了机械性代码修改,如存储顺序宏和多种并行化所需的代码复制,而这些在 OpenACC 中将需要超过 13,000 行额外代码。
  • 示例应用库证实了 Hybrid Fortran 在 ASUCA 案例研究之外的数据并行 Fortran 工作负载中的广泛适用性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。