Exploiting Locally Structured Meshes to Achive High Performance for Low Order FEM
Performance Analysis and Optimization
Scientific Software Development
TimeWednesday, June 19th9am - 9:20am
DescriptionFinite element methods (FEM) are among the most commonly used methods for the numerical solution of PDEs. The linear
system corresponding to a PDE is usually solved by fully assembling the sparse system matrix. Computations involving
sparse matrices are inherently memory bound and thus don't profit from newer CPU improvements. To overcome this, current
research investigates matrix free computations, which has been shown to improve computation time for example in higher
order DG simulations.
Matrix free computations for low order FEM have a low arithmetic intensity. Therefore this approach is also memory
bound. Using locally structured meshes simplifies memory access, which greatly improves the FLOP/s. Furthermore, this
allows for additional optimizations, e.g. straight forward cross-element vectorization.
This talk presents a python based approach to generate kernel code for FEM on locally structured meshes. Based on a weak
formulation in UFL an intermediate representation in Loo.py of the kernel's loop structure is created. Loo.py allows a
wide range of kernel transformation, e.g. tiling, unrolling or explicit vectorization. The resulting C++ kernel is used
by DUNE PDELab. This talk presents performance results for different PDEs discretized on structured or unstructured