In this talk the use of code generation to improve the performance and the energy efficiency of the solver engine ExaHyPE is discussed. ExaHyPE is an Horizon 2020 EU project to develop a high-performance engine to solve hyperbolic systems of PDEs using the high-order discontinuous Galerkin finite element method. The engine will be flexible to support various applications and will be tailored towards expected exascale architectures. One of the main goals of the project is therefore to provide to the end-user an abstraction of the complicated algorithms to implement the ADER-DG numerical scheme and of the issues related to scalability and parallel adaptive mesh refinement, which are handled internally by the Peano framework.
Code generation within the engine produces optimised code that is tailored to the specific PDE problem, to the chosen polynomial order for the ADER-DG scheme, and especially to the compute architecture used. Compute kernels for the ADER-DG scheme exploit the high performance LIBXSMM library [3] for small matrix multiplications occurring in the element-local kernels, use tailored data layouts and support compiler auto-vectorization. The generated optimized kernels offer a speedup of a factor 2.5 when compared to a generic C++ implementation, and are currently benchmarked and improved in regards to performance and energy consumption. First results will be presented for benchmark scenarios in seismology and astrophysics.
«