Software-Facilitated Performance Improvements
ACME_AllHands2015_Poster_Salinger.pdf
Abstract
We will touch on three avenues for performance improvements. The code development for each can be greatly simplified by use of flexibility built into the C++ programming language.
- Achieving performance portability across numerous current and future architectures is a challenge. → A single implementation can achieve good on-node parallel performance for diverse architectures by abstracting out the data structure allocation and access.
- Climate projections need to be informed by ensembles of runs, which can be run as an outer loop and achieve perfect scalability. → Far superior speed-ups can be gained by embedding the ensembles as an inner loop instead.
- Implicit methods have promise in some climate components to achieve better scalability for high resolution and regionally-refined discretizations. → Analytic Jacobian matrices can be calculated efficiently and accurately with little code development time using automatic differentiation.
All three of these potentially-transformative capabilities:
- Are facilitated by using C++ templates to swap out data types in single common code base, and
- Will already exist in ACME v1 within MPAS-Land Ice in the Albany/FELIX velocity solver.