TY - GEN
T1 - Role-Oriented Code Generation in an Engine for Solving Hyperbolic PDE Systems
AU - Gallard, Jean Matthieu
AU - Krenz, Lukas
AU - Rannabauer, Leonhard
AU - Reinarz, Anne
AU - Bader, Michael
N1 - Publisher Copyright:
© 2020, Springer Nature Switzerland AG.
PY - 2020
Y1 - 2020
N2 - The development of a high performance PDE solver requires the combined expertise of interdisciplinary teams with respect to application domain, numerical scheme and low-level optimization. In this paper, we present how the ExaHyPE engine facilitates the collaboration of such teams by isolating three roles: application, algorithms, and optimization expert. We thus support team members in letting them focus on their own area of expertise while integrating their contributions into an HPC production code. Inspired by web application development practices, ExaHyPE relies on two custom code generation modules, the Toolkit and the Kernel Generator, which follow a Model-View-Controller architectural pattern on top of the Jinja2 template engine library. Using Jinja2’s templates to abstract the critical components of the engine and generated glue code, we isolate the application development from the engine. The template language also allows us to define and use custom template macros that isolate low-level optimizations from the numerical scheme described in the templates. We present three use cases, each focusing on one of our user roles, showcasing how the design of the code generation modules allows to easily expand the solver schemes to support novel demands from applications, to add optimized algorithmic schemes (with reduced memory footprint, e.g.), or provide improved low-level SIMD vectorization support.
AB - The development of a high performance PDE solver requires the combined expertise of interdisciplinary teams with respect to application domain, numerical scheme and low-level optimization. In this paper, we present how the ExaHyPE engine facilitates the collaboration of such teams by isolating three roles: application, algorithms, and optimization expert. We thus support team members in letting them focus on their own area of expertise while integrating their contributions into an HPC production code. Inspired by web application development practices, ExaHyPE relies on two custom code generation modules, the Toolkit and the Kernel Generator, which follow a Model-View-Controller architectural pattern on top of the Jinja2 template engine library. Using Jinja2’s templates to abstract the critical components of the engine and generated glue code, we isolate the application development from the engine. The template language also allows us to define and use custom template macros that isolate low-level optimizations from the numerical scheme described in the templates. We present three use cases, each focusing on one of our user roles, showcasing how the design of the code generation modules allows to easily expand the solver schemes to support novel demands from applications, to add optimized algorithmic schemes (with reduced memory footprint, e.g.), or provide improved low-level SIMD vectorization support.
KW - Code generation
KW - ExaHyPE
KW - High-order discontinuous Galerkin
KW - Hyperbolic PDE systems
KW - Jinja2
KW - Model-View-Controller
UR - http://www.scopus.com/inward/record.url?scp=85082995104&partnerID=8YFLogxK
U2 - 10.1007/978-3-030-44728-1_7
DO - 10.1007/978-3-030-44728-1_7
M3 - Conference contribution
AN - SCOPUS:85082995104
SN - 9783030447274
T3 - Communications in Computer and Information Science
SP - 111
EP - 128
BT - Tools and Techniques for High Performance Computing - Selected Workshops, HUST, SE-HER and WIHPC, held in Conjunction with SC 2019, Revised Selected Papers
A2 - Juckeland, Guido
A2 - Chandrasekaran, Sunita
PB - Springer
T2 - 6th Annual Workshop on HPC User Support Tools, HUST 2019, International Workshop on Software Engineering for HPC-Enabled Research, SE-HER 2019, and 3rd Workshop on Interactive High-Performance Computing, WIHPC 2019, held in conjunction with the International Conference for High Performance Computing, Networking, Storage, and Analysis, SC 2019
Y2 - 17 November 2019 through 18 November 2019
ER -