Giter Site home page Giter Site logo

euroscipy2014's Introduction

Firedrake: a High-level, Portable Finite Element Computation Framework

Florian Rathgeber1, Lawrence Mitchell1, David Ham1,2, Michael Lange3, Andrew McRae2, Fabio Luporini1, Gheorghe-teodor Bercea1, Paul Kelly1

1 Department of Computing, Imperial College London 2 Department of Mathematics, Imperial College London 3 Department of Earth Science & Engineering, Imperial College London]

Slides from my talk at the EuroSciPy, Cambridge, UK, August 29-30 2014: https://kynan.github.io/EuroSciPy2014

Abstract

In an ideal world, scientific applications are computationally efficient, maintainable, composable and allow scientists to work very productively. In this talk we demonstrate that these goals are achievable for a specific application domain by choosing suitable domain-specific abstractions implemented in Python that encapsulate domain knowledge with a high degree of expressiveness.

We present a Firedrake, a high-level Python framework for the portable solution of partial differential equations on unstructured meshes with the finite element method widely used in science and engineering. Firedrake is built on top of PyOP2, a domain-specific language embedded in Python for parallel mesh-based computations. Finite element local assembly operations execute the same computational kernel for every element of the mesh and is therefore efficiently parallelisable.

Firedrake allows scientists to describe variational forms and discretisations for finite element problems symbolically in a notation very close to the maths using the Unified Form Language UFL from the FEniCS project. Variational forms are translated into computational kernels by the FEniCS Form Compiler FFC. Numerical linear algebra is delegated to PETSc, leveraged via its petsc4py interface.

PyOP2 abstracts away the performance-portable parallel execution of these kernels on a range of hardware architectures, targeting multi-core CPUs with OpenMP and GPUs and accelerators with PyCUDA and PyOpenCL and distributed parallel computations with mpi4py. Backend-specific code tailored to each specific computation is generated, just-in-time compiled and efficiently scheduled for parallel execution at runtime.

Due to the composability of the Firedrake and PyOP2 abstractions, optimised implementations for different hardware architectures can be automatically generated without any changes to a single high-level source. Performance matches or exceeds what is realistically attainable by hand-written code. Both projects are open source and developed at Imperial College London.

Resources

euroscipy2014's People

Contributors

kynan avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.