Role-Oriented Code Generation in an Engine for Solving Hyperbolic PDE Systems

AI-generated keywords: ExaHyPE PDE solvers code generation optimization exascale architectures

AI-generated Key Points

  • ExaHyPE engine facilitates collaboration of interdisciplinary teams in developing high-performance PDE solvers
  • Three roles - application, algorithms, and optimization expert - are isolated in the engine
  • Two custom code generation modules: Toolkit and Kernel Generator, following a Model-View-Controller architectural pattern
  • Jinja2 template engine library used to abstract critical components and generated glue code
  • Custom template macros enable isolation of low-level optimizations from numerical scheme
  • Flexibility allows for easy expansion of solver schemes to support novel demands, optimized algorithmic schemes, or improved low-level SIMD vectorization support
  • Three use cases demonstrate how design enables easy expansion and refinement of solver schemes for different user roles
  • Progress in phases: initial implementation attempts, benchmark setups, large-scale demonstrator scenarios
  • Successful demonstrators should be further developed into production codes or services
  • Challenges posed by upcoming exascale architectures require architecture-specific optimizations
Also access our AI generated: Comprehensive summary, Lay summary, Blog-like article; or ask questions about this paper to our AI assistant.

Authors: Jean-Matthieu Gallard, Lukas Krenz, Leonhard Rannabauer, Anne Reinarz, Michael Bader

SC19 SE-HER
License: CC BY 4.0

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 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.

Submitted to arXiv on 15 Nov. 2019

Ask questions about this paper to our AI assistant

You can also chat with multiple papers at once here.

AI assistant instructions?

Results of the summarizing process for the arXiv paper: 1911.06817v2

In this paper, the authors present the ExaHyPE engine, which facilitates the collaboration of interdisciplinary teams in developing high-performance PDE solvers. The development of such solvers requires expertise in application domain, numerical scheme and low-level optimization. The ExaHyPE engine isolates three roles - application, algorithms and optimization expert - allowing team members to focus on their own areas of expertise while integrating their contributions into an HPC production code. Inspired by web application development practices, ExaHyPE utilizes two custom code generation modules: the Toolkit and the Kernel Generator. These modules follow a Model-View-Controller architectural pattern on top of the Jinja2 template engine library. By using Jinja2's templates to abstract critical components of the engine and generated glue code, the application development is isolated from the engine itself. The template language also enables the definition and use of custom template macros that isolate low-level optimizations from the numerical scheme described in the templates. This flexibility allows for easy expansion of solver schemes to support novel demands from applications, addition of optimized algorithmic schemes (with reduced memory footprint), or provision of improved low-level SIMD vectorization support. The authors present three use cases that showcase how the design of the code generation modules enables easy expansion and refinement of solver schemes. Each use case focuses on one user role and demonstrates how new demands from applications can be supported, optimized algorithmic schemes can be added or improved low-level SIMD vectorization support can be provided. Furthermore, as part of their research endeavours progress in phases: from initial attempts to implement desired PDE models in the engine to application-oriented benchmark setups for validating numerical schemes and finally large-scale demonstrator scenarios that establish viability tackling grand challenges. The authors also highlight that successful demonstrators should be further developed into production codes or services. In addition to designing more complex applications there are challenges posed by upcoming exascale architectures; thus requiring ExaHyPE to consider architecture specific optimizations to ensure efficient performance on these architectures.
Created on 16 Aug. 2023

Assess the quality of the AI-generated content by voting

Score: 0

Why do we need votes?

Votes are used to determine whether we need to re-run our summarizing tools. If the count reaches -10, our tools can be restarted.

The previous summary was created more than a year ago and can be re-run (if necessary) by clicking on the Run button below.

Similar papers summarized with our AI tools

Navigate through even more similar papers through a

tree representation

Look for similar papers (in beta version)

By clicking on the button above, our algorithm will scan all papers in our database to find the closest based on the contents of the full papers and not just on metadata. Please note that it only works for papers that we have generated summaries for and you can rerun it from time to time to get a more accurate result while our database grows.

Disclaimer: The AI-based summarization tool and virtual assistant provided on this website may not always provide accurate and complete summaries or responses. We encourage you to carefully review and evaluate the generated content to ensure its quality and relevance to your needs.