WG211/M8Markall
Generating optimised multiplatform finite element solvers from high-level representations
Graham Markall
High-performance implementations of finite element methods on different targets typically are implemented using different algorithms that provide the best fit for the target architecture. This presents a problem for application developers, as it complicates the task of maintaining multiple implementations for different targets. The Unified Form Language (UFL) from the FEniCS project can be used to address this issue as it permits a high-level, platform-independent specification of a method to be given. We show that optimal implementations of a finite element solver written for a Graphics Processing Unit and a multicore CPU require the use of different algorithms and data formats that are embodied by the UFL representation.
UFL sources are converted to low-level implementations by a UFL compiler. We outline the operation of two implementations of prototype compilers for UFL that generate CUDA code. The first, a proof-of-concept, demonstrates the feasibility of generating low-level implementations for multiple targets. The second implementation, a work in progress, generates optimised code by making problem-dependent implementation choices. Future work involves targeting OpenCL and x86/SSE, as well as exploring algorithmic choices that depend upon problem parameters.