使用 Fortran 标准并行加速生产级太阳磁流体代码:从 OpenACC 到 do concurrent
数学软件
2023-03-10 v2 天体物理仪器与方法
分布式、并行与集群计算
编程语言
摘要
人们对使用标准语言构造进行加速计算日益关注,从而避免了对(通常是供应商特定的)外部 API 的需求。这些构造有潜力更具可移植性且更加“面向未来”。对于 Fortran 代码,当前的焦点在于 {\tt do concurrent}(DC)循环。虽然已有一些使用 DC 对基准和/或小型代码进行 GPU 加速的成功案例,但其广泛采用需要展示其在完整规模应用中的使用。在此,我们考察在一个名为 Magnetohydrodynamic Algorithm outside a Sphere(MAS)的生产应用中使用 DC 的当前能力与性能。MAS 是用于研究日冕和日球层动力学的先进模型,代码超过 70,000 行,此前已使用 MPI+OpenACC 移植到 GPU。我们试图尽可能消除其 OpenACC 指令,转而使用 DC。我们展示,使用 NVIDIA {\tt nvfortran} 编译器的 Fortran 202X 预览实现、统一托管内存以及修改后的 MPI 启动方法,我们可以在不使用任何一条 OpenACC 指令的情况下实现跨多 GPU 的加速。然而,这样做会导致 1.25 倍至 3 倍的减速。我们讨论了未来需要哪些改进以避免这一损失,并展示了我们如何仍能保持接近
引用
@article{arxiv.2303.03398,
title = {Acceleration of a production Solar MHD code with Fortran standard parallelism: From OpenACC to `do concurrent'},
author = {Ronald M. Caplan and Miko M. Stulajter and Jon A. Linker},
journal= {arXiv preprint arXiv:2303.03398},
year = {2023}
}
备注
10 pages, 2 tables, 4 figures, accepted to the AsHES workshop at IPDPS 2023