COFFEE: an Optimizing Compiler for Finite Element Local Assembly
arXiv:1407.0904 · doi:10.1145/2687415
Abstract
The numerical solution of partial differential equations using the finite element method is one of the key applications of high performance computing. Local assembly is its characteristic operation. This entails the execution of a problem-specific kernel to numerically evaluate an integral for each element in the discretized problem domain. Since the domain size can be huge, executing efficient kernels is fundamental. Their op- timization is, however, a challenging issue. Even though affine loop nests are generally present, the short trip counts and the complexity of mathematical expressions make it hard to determine a single or unique sequence of successful transformations. Therefore, we present the design and systematic evaluation of COF- FEE, a domain-specific compiler for local assembly kernels. COFFEE manipulates abstract syntax trees generated from a high-level domain-specific language for PDEs by introducing domain-aware composable optimizations aimed at improving instruction-level parallelism, especially SIMD vectorization, and register locality. It then generates C code including vector intrinsics. Experiments using a range of finite-element forms of increasing complexity show that significant performance improvement is achieved.
Remove volume metadata
References in corpus (1)
Cited by in corpus (12)
- Firedrake: automating the finite element method by composing abstractions
- Devito (v3.1.0): an embedded domain-specific language for finite differences and geophysical exploration
- Automated generation and symbolic manipulation of tensor product finite elements
- Finite element numerical integration for first order approximations on multi-core architectures
- Variational inequality approach to enforce the non-negative constraint for advection-diffusion equations
- An algorithm for the optimization of finite element integration loops
- A structure-exploiting numbering algorithm for finite elements on extruded meshes, and its performance evaluation in Firedrake
- High level implementation of geometric multigrid solvers for finite element problems: applications in atmospheric modelling
- A scalable variational inequality approach for flow through porous media models with pressure-dependent viscosity
- Composable block solvers for the four-field double porosity/permeability model
- Loo.py: From Fortran to performance via transformation and substitution rules
- Array Program Transformation with Loo.py by Example: High-Order Finite Elements