Personal home page:
Paul H J Kelly
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.
- Tools for delivering domain-specific optimisations
- Compiler technology applied to computational science
- Computer systems and code generation opportunities in real-time vision
- Languages, compilers, and operating systems for parallel computing
- 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
- Caching, combining and randomisation in processors, multiprocessors,
operating systems and wide-area networks
- The junction between the limits of the universe and the limits of
- The 2020-21 version of my Advanced Computer Architecture course starts on Tue 13 Oct. The course website is here. This time on-line. Hopefully exciting in a good way!
- June 2020: "Turing Tariff" Reduction: architectures, compilers
and languages to break the universality barrier. Lunchtime talk at the Department of Computing, Imperial College London (June 2020). Slides are here.
- October 2019: Congratulations to my PhD student Tianjiao (TJ) Sun, recently started as a Compiler Engineer at Cerebras.
- Summer 2019: Congratulations to my erstwhile postdoc Luigi Nardi, recently appointed an Assistant Professor at Lund University, Sweden.
- August 2019: Congratulations to my erstwhile postdoc Sajad Saeedi, recently appointed as an Assistant Professor at Ryerson University, Canada.
- July 2019: Congratulations to my erstwhile postdoc Nicolai Stawinoga, recently started as a postdoc at TU Berlin.
- Summer 2019: Congratulations to my PhD graduate Jeyan Thiyagalingam, recently appointed Head of the Scientific Machine Learning Group at STFC.>/li>
- Summer 2018: Congratulations to Lawrence Mitchell, lead researcher on our Firedrake project - recently appointed as Assistant Professor at the University of Durham.
- My Microsoft Surface Book crashed in front of a Compilers class this morning. Time to toss it, learn from the mistake and move on. What lessons should I, and my class, draw?
- July 2018: I am excited to have Nicolai Stawinoga starting as a postdoc in my Software Performance Optimisation Group, on the Flowsheets Project, our InnovateUK project in collaboration with the amazing Filigree Technologies Ltd.
- March 2018: Congratulations to Ioan Hadade, on passing his PhD viva. Impressive work. Congratulations also to his PhD supervisor, Luca di Mare.
- Congratulations to Miklos Homolya, PhD student on the Firedrake project, on passing his PhD viva yesterday. Congratulations also to David Ham, his supervisor, and thank you to his examiners Eike Mueller and Peter Vincent.
- March 2018: eighteen Windows crashes on my Microsoft Surface Book since 1 Feb 2018.
- February 2018: we are looking to hire a researcher to work on the Flowsheets project - JIT compilation and domain-specific optimisation for data analytics. If you're interested, please get in touch!
- January 2018: Our InnovateUK-funded project "Flowsheets" is starting, in collaboration with the amazing team at Filigree Ltd. Watch this space!
- January 2018: Our Arup-sponsored EPSRC Industrial CASE PhD student Eduardo Carvalho is starting in my group - looking forward to all sorts of exciting things!
- December 2017: The 2018 Compilers for Parallel Compuiting (CPC'18) workshop will take place in Dublin, April 16-18th 2018. It should be a really good meeting - tell your friends! And check the website, here.
- November 2017: The Microsoft Surface Book seems to be suffering in-service battery failures just after the warranty expires. If you've also had this problem, let me know. If you work for Microsoft and want to make me feel less annoyed, I look forward to hearing from you. I'm sure everything else Microsoft does is just brilliant. Update: Jan 2018: the replacement Microsoft Surface Book they sent me has an assembly defect, the bottom panel is hanging loose, not glued in properly. I remain sure that everything else Microsoft does is just brilliant.
- November 2017 Our InnovateUK project "Flowsheets" has been funded! So we are hiring!
- December 2016: Congratulations to Fabio Luporini, who successfully defended his PhD thesis on 16 December. The title of the thesis is "Automated Optimization of Numerical Methods for Partial Differential Equations". His examiners were Prof Michael Bader, and Dr Peter Vincent. Fabio was jointly supervised by me and David Ham. The thesis covers several key domain-specific optimisations that are delivered in production in the Firedrake Project.
- September 2016: Congratulations to Yuan Wen, who successfully defended his PhD thesis "Multi-Tasking Scheduling for Heterogeneous
Systems", supervised by Prof Mike O'Boyle at trhe University of Edinburgh.
- May 2016: Congratulations to Kate Reed on her PhD. I served as her internal PhD examiner. Her thesis title is "Machine Learning Applications in Generative Design".
- November 2015: Congratulations to Freddie Witherden on his PhD. I served as his internal PhD examiner. His thesis title is "On the development and implementation of high-order flux reconstruction schemes for computational fluid dynamics".
- November 2015: We're hiring, for an amazingly exciting project, a collaboration between my Software Performance Optimisation group and Andy Davison's Robot Vision Lab here at Imperial, and in partnership with Steve Furber and others at Manchester and Mike O'Boyle and others at Edinburgh universities. We're looking for people prepared to bridge the disciplines, spanning computer vision, compilers and architectures - so a variety of different backgrounds could work. It's an opportunity to take a leading role in defining the research direction for the project. Please contact me if this might be of interest - further details are here
- September 2015: I will be giving the opening keynote talk at the LCPC workshop in Raleigh, North Carolina (Sept 9-11). LCPC (Languages and Compilers for Parallel Computing) has an outstanding reputation (not least for good refereeing) with a long heritage and I am really excited to be there. Slides are here.
- September 2015: Congratulations to William Vigor on his PhD. on his PhD. I served as his internal PhD examiner. His thesis title is "Investigating Quantum Monte Carlo Methods in Slater Determinant Bases".
- July 2015: I am thrilled to announce that that our paper Acceleration of a Full-scale Industrial CFD Application with OP2 has been accepted for publication in IEEE Transactions on Parallel and Distributed Systems. Congratulations to the coauthors, Istvan Z. Reguly (Pazmany Peter Catholic University, Hungary), Gihan R. Mudalige (Oxford), Carlo Bertolli (IBM Research), Michael B. Giles (Oxford), Adam Betts (Imperial) and David Radford (Rolls Royce). This represents a heroic achievement - achieving substantial GPU acceleration in an extremely challenging application, and delivering it into industrial application.
- July 2015: I'm giving an invited talk at the International Supercomputing Conference (ISC) in Frankfurt, "Domain-Specific Representations in Code Generation for Mesh-Based Computational Science Applications".
- June 2015: I had the pleasure of cosupervising Renato Salas-Moreno's PhD with Andy Davison. Renato, along with Richard Newcombe and Stephen Lovegrove founded an amazing startup, Surreal Vision which has been acquired by Oculus VR, part of Facebook. Andy Davison's lab here at Imperial is a pretty exciting place to be. The Daily Telegraph coverage features the video from our paper at ISMAR'15.
- May 2015: I was a Distinguished Speaker at Queen's University Belfast, speaking about "Compiler technology for solving PDEs with performance portability". Thank you to Dimitrios Nikolopoulos for kindly hosting.
- 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).
- January 2015: I'm pleased to announce that my PhD student George Rokos successfully defended his PhD "High-performance parallel computing in irregular applications", co-supervised with Gerard Gorman. His examiners were Keshav Pingali and Tony Field. Congratulations to George, who starts at IBM Research in June.
- Congratulations to Nicholas Ng on his PhD, "Safe and Scalable Parallel Programming with Session Types". I had the honour of serving as his internal PhD examiner.
- 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). His 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. Please take a look at the SPO group's web pages.
- Publications: please see my Google Scholar page. Selected papers and abstracts are also here
while slides from various talks can be found here.
- Program committees:
- PC Chair, IEEE Cluster 2018
- PC Member, Principles and Practice of Parallel Programming 2018 (PPoPP18)
- PC member, Compiler Construction, CC'17, Programming Language Design and Implementation, PLDI'17, International Workshop on Polyhedral Compilation Techniques, IMPACT'17.
- PC member, WOLFHPC16,
DCE'16, ISC'16 PhD Forum, DLMCS'16.
- PC member, FHPC'15, CCGrid'15, MultiProg'15, HIPS'15, GPGPU'15.
- Member, Extended Review Committee, ACM Programming Language Design and Implementation (PLDI) 2015.
- Member, ACM Transactions on Architecture and Code Optimization board of Distinguished Reviewers (2015-)
- PC member, 15th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (May 2015)
- PC member, WOLFHPC: Fourth International Workshop on Domain-Specific Languages and High-Level Frameworks for High Performance Computing (Nov 2014)
- Supercomputing'14 - Member of Panels selection committee (Nov 2014)
- EuroPar 2014 - GPU and Accelerators Track - Global Chair (August 2014)
- Member of the Board of Distinguished Reviewers, ACM Transactions on Architecture and Code Optimization (June 2014-)
- PC member, ACM Programming Language Design and Implementation (PLDI) 2014
- PC Member, ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation (PEPM'14)
- PC member, HIPS: 19th International Workshop on High-Level Parallel Programming Models and Supportive Environments (May 2014)
- Topic Chair, Euro-Par'14 Topic 15: GPU and Accelerator Programming
- PC member, IMPACT 2014 - 4th International Workshop on Polyhedral Compilation Techniques (Jan 2014)
- PC member, 1st Int. Workshop on High-Performance Stencil Computations (HiStencils 2014) (Jan 2014)
- PC member, International Conference on Supercomputing (ICS), 2012 and 2013
- PC member, PPoPP'13
- Program Committee co-Chair, 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:
- Supereight: a high performance template octree library and a dense volumetric SLAM pipeline implementation.
- Devito: Devito is a Domain-specific Language (DSL) and code generation framework for the design of highly optimised finite difference kernels for use in inversion methods. Devito utilises SymPy to allow the definition of operators from high-level symbolic equations and generates optimised and automatically tuned code specific to a given target architecture.
- 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"
- 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.