#X01 C++/Kokkos Refactor of HOMME

Poster TitleC++/Kokkos Refactor of HOMME
AuthorsLuca Bertagna, Michael Deakin (Unlicensed), Oksana Guba , Andy Salinger, Dan Sunderland (Unlicensed), Irina Tezaur
GroupCMDV-SM
ExperimentWill ACME accept C++ code?
Poster CategoryFuture Directions
Submission TypePoster (and presentation in SE/Perf Discussions Breakout #4)
Poster LinkDycoreRefactor_Poster_AllHands_0617.pdf


Abstract

Under the CMDV Software Modernization project, we are working to refactor the HOMME spectral element atmosphere dycore. We are rewriting HOMME in C++ and making use of the Kokkos programming model with the goal of achieving high performing code on CPU, Intel Phi, and GPU architectures with a single code base. Our plan is to reproduce the algorithms in HOMME exactly to avoid introducing new verification/validation issues. Our initial effort involved extracting the main HOMME kernels for dynamics into a mini-app and comparing single-node performance of Fortran, C++, and C++-with-Kokkos implementations on different architectures. Significant effort has gone into improving the performance of the code on GPUs, and some work on OpenMP performance as well, that fed back to improvements in Kokkos itself. As a second step, we are now porting those kernels back into a fork of the ACME repository for HOMME runs. This project raises many issues for discussion: achieving performance, programming language/compiler issues, the difficulties of writing performant code on numerous architectures, the ability to staff climate projects for performance work, processes to expedite code development, and exploiting synergies with other DOE code development efforts.

Related content

Progress on porting the Community Atmosphere Model - Spectral Element (CAM-SE) to the GPU-CPU hybrid architecture.
Progress on porting the Community Atmosphere Model - Spectral Element (CAM-SE) to the GPU-CPU hybrid architecture.
More like this
2020-09-17 All-Hands Presentation Meeting Notes
2020-09-17 All-Hands Presentation Meeting Notes
More like this
#22 Lightweight threading and vectorization with OpenMP in ACME
#22 Lightweight threading and vectorization with OpenMP in ACME
More like this
Software-Facilitated Performance Improvements
Software-Facilitated Performance Improvements
More like this
Dycore Design Docs
Dycore Design Docs
More like this
SCREAMv1 Tutorial Information
SCREAMv1 Tutorial Information
More like this