Department of Computing

Software Performance Optimisation Research Group

Imperial's Software Performance Optimisation research group, led by Prof Paul H J Kelly, is primarily focused on research in compiler technology - but with a specific emphasis on domain-specific performance optimisations.

Major projects

  • EP/M011054/1 A new simulation and optimisation platform for marine technology
  • EP/L000407/1 Platform: Underpinning Technologies for Finite Element Simulation
  • EP/K008730/1 PAMELA: a Panoramic Approach to the Many-CorE LAndsape - from end-user to end-device: a holistic game-changing approach

Open-source software arising from our work

  • SLAMBench, a benchmarking framework for real-time SLAM (simultaneous location and mapping) implementations. See also the SLAMBench Android App.
  • The Firedrake Project: an automated system for the portable solution of partial differential equations using the finite element method (FEM).
  • PyOP2: performance-portable parallel computations on unstructured and extruded meshes, based on the access-execute ("AEcute") model. PyOP2 is a DSL embedded in Python, implemented using run-time code generation.
  • OP2: performance-portable parallel computations on unstructured and extruded meshes. OP2 is implemented by source-to-source transformation for C++ and Fortran. OP2 development is now led by our collaborators at Oxford.
  • GiMMiK: a tool for generation of high performance matrix multiplication kernel code for various accelerator platforms. GiMMiK performs well in a Block by Panel type of matrix multiplication where the operator matrix is small. GiMMiK also removes any sparsity form the operator matrix as well as attempts to reduce common sub-expressions. This is particularly applicable in flux reconstruction methods for CFD, eg PyFR.
  • TINTL: Fourier resampling of 3D regular data-sets to twice their resolution. This is particularly applicable in density functional theory simulations such as ONETEP.
  • PRAgMaTIc: a parallel Anisotropic Mesh Adaptivity framework. This is particularly applicable in adaptive, unstructured-mesh CFD, eg FLUIDITY.
  • Taskgraph Metaprogramming Library: a C++ package that supports
    • Run-time code generation - programs that generate code on the fly, then execute it (the first step towards "multi-stage" programming)
    • Meta-programming - having built a piece of code, you can apply various transformations to it (such as loop interchange and tiling).

Current members and associated researchers

PhD students