2020/03/28 by Jean-Matthieu Gallard, Gallard, Jean-Matthieu, Leonhard Rannabauer +5 · 1 citation
Engineering · Physics and Astronomy · #Advanced Numerical Methods in Computational Mathematics #Computational Fluid Dynamics and Aerodynamics #Model Reduction and Neural Networks
paper · pdf · doi:10.48550/arxiv.2003.12787
We present a sequence of optimizations to the performance-critical compute\nkernels of the high-order discontinuous Galerkin solver of the hyperbolic PDE\nengine ExaHyPE -- successively tackling bottlenecks due to SIMD operations,\ncache hierarchies and restrictions in the software design.\n Starting from a generic scalar implementation of the numerical scheme, our\nfirst optimized variant applies state-of-the-art optimization techniques by\nvectorizing loops, improving the data layout and using Loop-over-GEMM to\nperform tensor contractions via highly optimized matrix multiplication\nfunctions provided by the LIBXSMM library. We show that memory stalls due to a\nmemory footprint exceeding our L2 cache size hindered the vectorization gains.\nWe therefore introduce a new kernel that applies a sum factorization approach\nto reduce the kernel's memory footprint and improve its cache locality. With\nthe L2 cache bottleneck removed, we were able to exploit additional\nvectorization opportunities, by introducing a hybrid\nArray-of-Structure-of-Array data layout that solves the data layout conflict\nbetween matrix multiplications kernels and the point-wise functions to\nimplement PDE-specific terms.\n With this last kernel, evaluated in a benchmark simulation at high polynomial\norder, only 2 % of the floating point operations are still performed using\nscalar instructions and 22.5 % of the available performance is achieved.\n