Preprints
https://doi.org/10.5194/egusphere-2022-943
https://doi.org/10.5194/egusphere-2022-943
28 Sep 2022
 | 28 Sep 2022

Pace v0.1: A Python-based Performance-Portable Implementation of the FV3 Dynamical Core

Johann Dahm, Eddie Davis, Florian Deconinck, Oliver Elbert, Rhea George, Jeremy McGibbon, Tobias Wicky, Elynn Wu, Christopher Kung, Tal Ben-Nun, Lucas Harris, Linus Groner, and Oliver Fuhrer

Abstract. Progress in leveraging current and emerging high-performance computing infrastructures using traditional weather and climate models has been slow. This has become known more broadly as the software productivity gap. With the end of Moore's Law driving forward rapid specialization of hardware architectures, building simulation codes on a low-level language with hardware specific optimizations is a significant risk. As a solution, we present Pace, an implementation of the nonhydrostatic FV3 dynamical core which is entirely Python-based. In order to achieve high performance on a diverse set of hardware architectures, Pace is written using the GT4Py domain-specific language. We demonstrate that with this approach we can achieve portability and performance, while significantly improving the readability and maintainability of the code as compared to the Fortran reference implementation. We show that Pace can run at scale on leadership-class supercomputers and achieve performance speeds 3.5–4 times faster than the Fortran code on GPU-accelerated supercomputers. Furthermore, we demonstrate how a Python-based simulation code facilitates existing or enables entirely new use-cases and workflows. Pace demonstrates how a high-level language can insulate us from disruptive changes, provide a more productive development environment, and facilitate the integration with new technologies such as machine learning.

Journal article(s) based on this preprint

17 May 2023
| Highlight paper
Pace v0.2: a Python-based performance-portable atmospheric model
Johann Dahm, Eddie Davis, Florian Deconinck, Oliver Elbert, Rhea George, Jeremy McGibbon, Tobias Wicky, Elynn Wu, Christopher Kung, Tal Ben-Nun, Lucas Harris, Linus Groner, and Oliver Fuhrer
Geosci. Model Dev., 16, 2719–2736, https://doi.org/10.5194/gmd-16-2719-2023,https://doi.org/10.5194/gmd-16-2719-2023, 2023
Short summary Executive editor

Johann Dahm et al.

Interactive discussion

Status: closed

Comment types: AC – author | RC – referee | CC – community | EC – editor | CEC – chief editor | : Report abuse
  • RC1: 'Comment on egusphere-2022-943', Anonymous Referee #1, 31 Oct 2022
  • RC2: 'Comment on egusphere-2022-943', Anonymous Referee #2, 11 Nov 2022
  • AC1: 'Comment on egusphere-2022-943', Jeremy McGibbon, 21 Dec 2022

Interactive discussion

Status: closed

Comment types: AC – author | RC – referee | CC – community | EC – editor | CEC – chief editor | : Report abuse
  • RC1: 'Comment on egusphere-2022-943', Anonymous Referee #1, 31 Oct 2022
  • RC2: 'Comment on egusphere-2022-943', Anonymous Referee #2, 11 Nov 2022
  • AC1: 'Comment on egusphere-2022-943', Jeremy McGibbon, 21 Dec 2022

Peer review completion

AR: Author's response | RR: Referee report | ED: Editor decision | EF: Editorial file upload
AR by Jeremy McGibbon on behalf of the Authors (21 Dec 2022)  Author's response   Author's tracked changes   Manuscript 
ED: Referee Nomination & Report Request started (10 Jan 2023) by Travis O'Brien
RR by Anonymous Referee #1 (23 Jan 2023)
ED: Publish subject to technical corrections (09 Feb 2023) by Travis O'Brien
AR by Jeremy McGibbon on behalf of the Authors (29 Mar 2023)  Manuscript 

Journal article(s) based on this preprint

17 May 2023
| Highlight paper
Pace v0.2: a Python-based performance-portable atmospheric model
Johann Dahm, Eddie Davis, Florian Deconinck, Oliver Elbert, Rhea George, Jeremy McGibbon, Tobias Wicky, Elynn Wu, Christopher Kung, Tal Ben-Nun, Lucas Harris, Linus Groner, and Oliver Fuhrer
Geosci. Model Dev., 16, 2719–2736, https://doi.org/10.5194/gmd-16-2719-2023,https://doi.org/10.5194/gmd-16-2719-2023, 2023
Short summary Executive editor

Johann Dahm et al.

Model code and software

ai2cm/pace: v0.1.0 GMD release Rhea George, Elynn Wu, Jeremy McGibbon, Johann Dahm, Eddie Davis, Tobias Wicky, Florian Deconinck, Christopher Kung, Oliver Fuhrer, Oliver Elbert, Ajda Savarin, Noah D. Brenowitz, Mark Cheeseman, Brian Henn, Spencer Clark, and Yannick Niedermayr https://doi.org/10.5281/zenodo.7079980

ai2cm/gt4py: v0.1.0 GMD release Johann Dahm, Linus Groner, Enrique G. Paredes, Felix Thaler, Hannes Vogt, Eddie Davis, Rico Haeuselmann, Till Ehrengruber, Stefano Ubbiali, Tobias Wicky, Florian Deconinck, Tal Ben-Nun, and Rhea George https://doi.org/10.5281/zenodo.7080260

Johann Dahm et al.

Viewed

Total article views: 1,766 (including HTML, PDF, and XML)
HTML PDF XML Total BibTeX EndNote
1,235 512 19 1,766 17 7
  • HTML: 1,235
  • PDF: 512
  • XML: 19
  • Total: 1,766
  • BibTeX: 17
  • EndNote: 7
Views and downloads (calculated since 28 Sep 2022)
Cumulative views and downloads (calculated since 28 Sep 2022)

Viewed (geographical distribution)

Total article views: 1,747 (including HTML, PDF, and XML) Thereof 1,747 with geography defined and 0 with unknown origin.
Country # Views %
  • 1
1
 
 
 
 
Latest update: 17 May 2023
Download

The requested preprint has a corresponding peer-reviewed final revised paper. You are encouraged to refer to the final revised version.

Achieving both performance and portability in a whole dynamical core implemented in a high-productivity language such as Python is an eye-opening result which rebuts some widely held assumptions in the geoscientific modelling community. This is a paper which everyone who writes geoscientific models should read.
Short summary
It is hard for scientists to write efficient code which runs fast on all kinds of supercomputers. They like writing Python because it is easier to read and use. We re-wrote a Fortran code that simulates weather and climate into Python. The Python code re-writes itself to a much faster language to run on either normal processors or graphics cards. On one big computer system, our code is 3.5–4x faster on its graphics cards than the original code is on its processors.