WG211/M17Kelly

From WG 2.11
Jump to: navigation, search

Title: Domain-specific optimisation of finite-element integration loops – and what we learned

Abstract:

Firedrake is a program generator that automates the finite element method for solving partial differential equations (PDEs). It has a growing community of users, particularly in geophysical flows, for weather, climate and tidal energy. Firedrake implements a domain-specific language (UFL, from the FEniCS Project), which represents the (weak form of the) PDE. It generates efficient code to run on your laptop or supercomputer. Firedrake is entirely written in Python, generating C at runtime using a number of optimisations that would be very challenging to implement by hand. This talk is a reflection on some of our experience in building Firedrake, with a specific dive into its strategy for minimising FLOPs in the local integration loop nests executed at each element of the mesh.

The key Firedrake paper is: Florian Rathgeber, David A. Ham, Lawrence Mitchell, Michael Lange, Fabio Luporini, Andrew T. T. Mcrae, Gheorghe-Teodor Bercea, Graham R. Markall, and Paul H. J. Kelly. Firedrake: automating the finite element method by composing abstractions. ACM Trans. Math. Softw., 43(3):24:1–24:27, 2016. URL: [1].

More specifically, see Fabio Luporini, David A. Ham, and Paul H. J. Kelly. An algorithm for the optimization of finite element integration loops. ACM Transactions on Mathematical Software, 44(1):3:1–3:26, 2017. URL: [2].