SLIDE 26 Firedrake
Firedrake - Automated Finite Element computation
◮ Implements UFL1 ◮ Outer framework in Python ◮ Run-time C code generation ◮ PyOP2: Assembly kernel
execution framework
◮ Domain topology from DMPlex ◮ Mesh generation and file I/O ◮ Derive discretisation-specific
mappings at run-time
◮ Geometric Multigrid Unified Form Language
PyOP2 Interface
modified FFC Parallel scheduling, code generation CPU (OpenMP/ OpenCL) GPU (PyCUDA / PyOpenCL) Future arch.
FEM problem (weak form PDE) Local assembly kernels (AST) Parallel loops: kernels executed over mesh Explicitly parallel hardware- specific implemen- tation Meshes, matrices, vectors
PETSc4py (KSP, SNES, DMPlex)
Firedrake/FEniCS language
MPI
Geometry, (non)linear solves assembly, compiled expressions
FIAT parallel loop parallel loop COFFEE AST optimiser data structures (Set, Map, Dat)
Domain specialist: mathematical model using FEM Numerical analyst: generation of FEM kernels Domain specialist: mathematical model on un- structured grid Parallel programming expert: hardware architectures,
Expert for each layer
- 1M. Alnæs, A. Logg, K. Ølgaard, M. Rognes, and G. Wells. Unified Form Language: A domain-specific language for weak formulations
- f partial differential equations. ACM Transactions on Mathematical Software (TOMS), 40(2):9, 2014
- M. Lange, M. Knepley, L. Mitchell, G. Gorman
DMPlex Mesh Management