TSFC: a structure-preserving form compiler

@article{Homolya2018TSFCAS,
  title={TSFC: a structure-preserving form compiler},
  author={Mikl{\'o}s Homolya and Lawrence Mitchell and Fabio Luporini and David A. Ham},
  journal={SIAM J. Sci. Comput.},
  year={2018},
  volume={40}
}
A form compiler takes a high-level description of the weak form of partial differential equations and produces low-level code that carries out the finite element assembly. In this paper we present the Two-Stage Form Compiler (TSFC), a new form compiler with the main motivation being to maintain the structure of the input expression as long as possible. This facilitates the application of optimizations at the highest possible level of abstraction. TSFC features a novel, structure-preserving… 

Figures from this paper

Structure-preserving automatic differentiation and pullbacks in a language for variational forms

Unified Form Language (UFL) is a domain-specific language for expressing and manipulating the variational forms that arise when using the finite element method to approximate solutions to partial

A domain-specific language for the hybridization and static condensation of finite element methods

TLDR
A domain-specific language (DSL) for concisely expressing localized linear algebra on finite element tensors, and its integration within a code-generation framework is introduced.

Compiling Diderot: From Tensor Calculus to C

TLDR
The approach to this challenge is based around the careful design of an intermediate representation (IR), called EIN, and a number of compiler transformations that lower the program from tensor calculus to C while avoiding combinatorial explosion in the size of the IR.

Yet Another Tensor Toolbox for Discontinuous Galerkin Methods and Other Applications

TLDR
This work explores the possibility to abstract the numerical scheme as small tensor operations, describe them in a domain-specific language (DSL) resembling the Einstein notation, and to map them to small General Matrix-Matrix Multiplication routines.

Deposited in DRO : 02 July 2020 Version of attached le :

Vectorization is increasingly important to achieve high performance on modern hardware with SIMD instructions. Assembly of matrices and vectors in the finite element method, which is characterized by

Exposing and exploiting structure: optimal code generation for high-order finite element methods

TLDR
The code generation infrastructure in Firedrake was extended with optimisations that can exploit the structure inherent to some finite elements, including sum factorisation on cuboid cells for continuous, discontinuous, H(div) and H(curl) conforming elements.

tIGAr: Automating isogeometric analysis with FEniCS

Code Generation for Generally Mapped Finite Elements

TLDR
This work describes how to implement very general finite-element transformations in FInAT and hence into the Firedrake finite- element system, and evaluates the new elements, finding that new elements give smooth solutions at a mild increase in cost over standard Lagrange elements.

Abstractions and Automated Algorithms for Mixed Domain Finite Element Methods

TLDR
This paper introduces high level mathematical software abstractions together with lower level algorithms for expressing and efficiently solving mixed dimensional PDEs of co-dimension up to one (i.e. nD-mD with |n-m| <= 1).

Transformations for Piola-mapped elements

TLDR
The novel transformation theory recently developed by Kirby is applied to devise the correct map for transforming the basis on a reference cell to a generic physical triangle, enabling the use of the Arnold–Winther elements in the widelyused Firedrake finite element software, composing with its advanced symbolic code generation and geometric multigrid functionality.

References

SHOWING 1-10 OF 59 REFERENCES

Unified form language: A domain-specific language for weak formulations of partial differential equations

TLDR
The Unified Form Language is presented, which is a domain-specific language for representing weak formulations of partial differential equations with a view to numerical approximation and generates abstract syntax tree representations of variational problems, which are used by other software libraries to generate concrete low-level implementations.

Structure-preserving automatic differentiation and pullbacks in a language for variational forms

Unified Form Language (UFL) is a domain-specific language for expressing and manipulating the variational forms that arise when using the finite element method to approximate solutions to partial

A compiler for variational forms

TLDR
A new algorithm for automatic and efficient evaluation of multilinear variational forms is presented, implemented in the form of a compiler, the FEniCS Form Compiler (FFC), which presents benchmark results for a series of standard variational Forms.

EIN : An Intermediate Representation for Compiling Tensor Calculus

TLDR
This paper describes a new intermediate representation, called EIN, that is developed for the Diderot compiler, which enables the implementation of its higher-order programming model and demonstrates that EIN can compile more programs than previously possible and compiles faster and offers faster executables.

Optimizations for quadrature representations of finite element tensors through automated code generation

TLDR
It is shown that approaches which perform best for simple forms are not tractable for more complicated problems in terms of run-time performance, the time required to generate the code or the size of the generated code.

Efficient compilation of a class of variational forms

TLDR
An algorithm for efficient pretabulation of the reference tensor is designed and implemented in the FEniCS Form Compiler and improves on a previous loop-based implementation by several orders of magnitude, thus shortening compile-times and development cycles for users of FFC.

Memory minimization for tensor contractions using integer linear programming

TLDR
A novel integer linear programming (ILP) formulation is developed that is shown to be highly effective on a number of test cases producing the optimal solutions using very small execution times.

A Block-Oriented Language and Runtime System for Tensor Algebra with Very Large Arrays

TLDR
A parallel programming environment, the Super Instruction Architecture (SIA) comprising a domain specific programming language SIAL and its runtime system SIP that are specialized for this class of problems, where programmers express algorithms in terms of operations on blocks rather than individual floating point numbers.

Space-time trade-off optimization for a class of electronic structure calculations

TLDR
An algorithm is presented that starts with an operation-minimal form of the computation and systematically explores the possible space-time trade-offs to identify the form with lowest cost that fits within a specified memory limit.

On the efficiency of symbolic computations combined with code generation for finite element methods

TLDR
By generating low-level C++ code based on symbolic expressions for the discrete weak form, it is possible to accomplish a high degree of abstraction in the problem definition while surpassing the run-time efficiency of traditional hand written C++ codes.
...