Personal home page:
Paul H J Kelly
- Professor of Software Technology,
- Group Leader,
Software Performance Optimisation
- co-Director, Centre for Computational Methods in Science and Engineering
- Department of Computing (map)
- Imperial College London
- 180 Queen's Gate
- London SW7 2BZ, UK
- Telephone: +44 (0) 20 7594 8332
- Fax: +44 (0) 20 7581 8024
- Email: p.kellyZZZ@doc.ic.ac.uk (please delete the
ZZZ before you use this address).
- If you fear your message has been treated as junk, please include the following letters in the Subject line:
I am head of the Software Performance Optimisation research group.
See also my official Imperial College web page, http://www.imperial.ac.uk/people/p.kelly.
Final-year (MEng and MSc) project students: please have a look at my project
proposals on CATE
(Imperial students only I'm afraid). Project proposals are the
starting point for discussion and negotiation. Project
proposals are also good topics for Independent Study Options for MAC
students - feel free to browse.
- Languages, compilers, and operating systems for parallel computing
- Domain-specific tools and active libraries
- Computer systems issues underlying performance
- Software tools for portable parallel programming
- Irregular and data-intensive applications
- Applying a broad range of mathematical and theoretical ideas to
computer systems problems
- Performance evaluation, modelling and prediction
- Caching, combining and randomisation in processors, multiprocessors,
operating systems and wide-area networks
- Language, linguistics, literature, literary theory
- The junction between the limits of the universe and the limits of
- My PhD student Fabio Luporini has led an international team of researchers producing a beautiful paper on "Cross-Loop Optimization of Arithmetic Intensity for Finite Element Local Assembly" (arxiv) in ACM TACO and which will be presented at the HiPEAC'15 conference (Jan 2015).
- We're organising the 2015 Compilers for Parallel Computing workshop here at Imperial (Jan 7-9 2015).
- I gave the opening keynote talk at the WOLFHPC'14 workshop at the Supercomputing conference SC'14; you can find the slides on the workshop website here (Nov 17 2014).
- I gave a Distinguished Lecture at the University of Chicago, entitled "Compiler Technology for Solving PDEs with Performance Portability" (Nov 13 2014).
- I gave the keynote talk at the Scottish Programming Languages Symposium (here), entitled "Abstraction is not always theft: domain-specific representations in code generation for mesh-based computational science applications".
- I'm really pleased to invite you to have a look at Nathan Chong's winning entry for the UK ICT Pioneers competition:
In particular, please have a look at the video he made.
- I had a terrific trip last week to the PADAL Workshop at CSCSin Lugano, on Programming Abstractions for Data Locality. Lots of exciting talks - please check the website.
- Congratulations to Cedric Nugteren, whose PhD defence I participated in last week. Lovely work.
- February 2014: Back from Austin, Texas - visiting AMD, UT Austin, and attending the PLDI PC meeting.
- December 2013: Don't miss Florian Rathgeber's SciPy talk about PyOP2, now on youtube here.
- December 2013: I'm on the PC for PLDI. I have a scary holiday ahead with 20 papers to review...
- December 9th 2013: Graham Markall's Phd has been awarded, title Multilayered Abstractions for Partial Differential Equations. Graham's examiners were Peter Jimack and Gerard Gorman. Congratulations Graham!
- November 29th 2013: Thanasis Konstantinidis successfully defended his PhD "Source-to-Source Compilation of Loop Programs for Manycore Processors". His examiners were Mike O'Boyle and David Thomas. His PhD was partially funded by Codeplay. Congratulations Thanasis!
- November 26th 2013: Our paper Generalizing Run-time Tiling with the Loop Chain Abstraction' has been accepted at IPDPS! I amreally proud of this work. It's a terrific collaboration too: Michelle Mills Strout, Fabio Luporini, Chris Krieger, Carlo Bertolli, Doru Bercea, Cathy Olschanowsky, and Ram Ramanujam. Eight authors, four institutions, six locations, three continents, the paper that never slept.
- June 11th 2013: I am truly astonished and amazed to have been nominated for Imperial's Engineering Faculty Award for Teaching Excellence in Engineering Education. I was absolutely gobsmacked to actually win it! Every item mentioned in the citation was done in collaboration with colleagues. It takes a whole organisation to make good things like this happen. So thank you! Thanks also to the amazing students, who've made this such a pleasure. Thank you also to my family, who've made it worthwhile.
- June 5th 2013: Today's New Scientist magazine features an article about the work of Renato Salas-Moreno, whom I co-supervise with Andy Davison.
- May 31st 2013: Our EPSRC Platform Grant "Platform: Underpinning Technologies for Finite Element Stimulation" has been funded! This is an amazing opportinity to push forward research agenda in compiler technology for finite-element fluid and structure modelling in an amazing collaboration of finite-element specialists across the College, led by Spencer Sherwin.
- May 28th 2013: I am thrilled to report that Mike Mellor has been awarded his PhD. His thesis title is "Querying Programs using Declarative Programming".
His examiners were Prof Kevin Hammond (St Andrews) and Prof Alex Wolf (Imperial). Hi supervisors were Paul Kelly and Tony Field.
- May 20th 2013: This year's GAME event was a huge success - thanks to everyone involved in making it happen!
- May 16th 2013: David Ham has been awarded a 5-year NERC independent research fellowship to forward my work on automated code generation in geoscientific simulation.
- March 12 2013: I am happy to announce that David Birch successfully defended his PhD, His thesis title is "Computationally Unifying Urban Masterplanning". His supervisors were Paul Kelly, Tony Field and Alvise Simondetti at Arup, who partially sponsored the work. His examiners were Prof Steve Easterbrook and Prof Duncan Gillies.
- Our PAMELA Programme Grant has been funded. This is a five-year project, in collaboration with compiler and architecture researchers at Manchester and Edinburgh. It's an integrated attack on the multicore/manycore problem, led by Steve Furber and driven by computer vision and 3D scene understanding applications in collaboration with Andy Davison. And we are hiring. Please get in touch if this is of interest.
- I gave the Keynote talk at the Functional High-Performance Computing workshop in Copenhagen in September 2012. The video is here.
- I am a member of the Programme Committee for the Architecture Track of the International Parallel and Distributed Processing Symposium (IPDPS), Boston, May 2013. This is particularly pleasing as IPDPS has four tracks - Algorithms, Applications, Software and Architecture. I've been on the PC for the first three, this makes four.
- I am a member of the Programme Committee for the PPoPP conference (Principles and Practice of Parallel Programming), Shenzhen, China, February 2013.
- I gave an invited talk at the FEniCS Project's annual workshop in June 2012 (FEniCS'12).
- We organised the 2012 Imperial GaME Event, a day of talks and demos developing links with the computer games and CGI industries; this year's event is on May 23rd - please register here.
- We hosted the 3rd UK GPU Computing Conference, December 14th 2011 at Goodenough College. Further details are available here.
- I gave a talk on October 11th at the London Mathematical Society's Computer Science Day,
which this year was devoted to High Performance Scientific Computing at the Exascale.. The slides from my talk, entitled "Software Abstractions for many-core software engineering" are here
- I served as Program Committee co-chair for the ACM Computing Frontiers conference (Bertinoro, Italy, May 2010).
- My Inaugural Lecture (marking my promotion to Professor) took place on Wednesday May 13th, in the Clore theatre, title "Over and over again: the discipline of parallel software engineering". Slides are available online here.
- Research: I lead Imperial's Software
Performance Optimisation research group.
Computer systems research is a broad area, and the group
has worked in a wide range of areas (operating systems, cache
coherency, debugging, specialisation, programming languages), the main focus
at present is performance optimisation of dynamically-composed
software components. This is a key enabling technology for flexible,
reusable software. As you can see from the publications and projects
listed below, I have an abiding interest in making high-performance
(and especially parallel) computing easier:
- Program committees:
- PC member, PPoPP'13
- PC member, ACM Computing Frontiers 2010
- Vice-chair, Software, IPDPS 2008
- Programme committee member, GPCE 2007
- Programme committee member, IPDPS 2007 (Algorithms track)
- Programme committee member, NPC 2007
- Programme committee member, International
Conference on Supercomputing (ICS 2006)
- Programme Committee member, EuroPar 2006, Topic 4: Compilers for
- Current lecture courses:
- Other teaching:
Computing Support Group Forum
- 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"
- Meta-programming - having built a piece of code, you can apply
various transformations to it (such as loop interchange and
- Aperture: A proof-of-concept Massively Multiuser Video Conferencing application. A virtual environment with real-time
sound and avatars with webcam images for faces. Developed by a 2008-9
undergraduate project group; source and Windows installer available.
- DeepWeaver-1: A declarative framework for analysis and
optimization components for Java - in fact an extension of the
abc AspectJ compiler with a Prolog/Datalog-like query language
and the power to analyse and restructure code within and across
DeepWeaver-1 is not yet ready for open release but if you are
keen please get in touch by email.
- DJPROF - DJProf
is an experimental profiling tool for Java programs implemented
entirely in Java and Aspect/J. DJProf was designed as a tool for
research in AspectJ and AOP. It was developed by my PhD student
David Pearce in the
summer of 2004 during an internship with the AspectJ team based
at IBM Hursley, UK.
- The Pointer Constraint System, by my PhD graduate David Pearce (a re-implementation of some of this work is being incorporated into gcc 4.1; see Dan Berlin's article in the 2005 GCC Summit proceedings).
- Bounds checking for C, by my MSc graduate Richard Jones, but long since maintained
by Herman ten Brugge, enhanced by Ruwase and Lam ("CRED") and now a
sourceforge project. See here, where we
explain how we avoid changing the binary pointer representation while
achieving better checking than, for example, Mudflap or Purify
(though Purify does things we don't do).
- MIRO -
Mudflap Improved with Referent Objects. A re-implementation
of the bounds checking work by MEng project student Alex
Lamaison. This version is based on the Mudflap stuff in GCC 4
and, because it works on GCC's Gimple IR it works for C++ as
well as C. We are looking for support (or volunteers) to take this work further.