Role-Oriented Code Generation in an Engine for Solving Hyperbolic PDE Systems
Jean-Matthieu Gallard, Lukas Krenz, Leonhard Rannabauer, Anne Reinarz,, Michael Bader

TL;DR
This paper introduces ExaHyPE, a code generation engine that supports interdisciplinary teams in developing high-performance PDE solvers by isolating roles such as application, algorithms, and optimization, using template-based code generation.
Contribution
The paper presents a role-oriented code generation framework for PDE solvers that simplifies collaboration and extension through modular templates and role separation.
Findings
Supports easy expansion of solver schemes
Enables integration of optimized algorithms
Improves low-level SIMD vectorization
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
