## 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. Details of our weekly research talks/meetings are here.

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.

Interests:

- 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

Not enough?

- The junction between the limits of the universe and the limits of the mind.

News

- 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.

Activities:

- 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:

  - Publications and presentations
  - Research reading group in performance optimisation of component-based software
  - Current and recent research grants
  - Research staff and students
  - PhD theses supervised
  - Ideas for student projects (undergraduate and postgraduate)
  - Undergraduate research opportunities
- 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 High Performance
- Current lecture courses:
  - Advanced Computer Architecture
  - Compilers (introductory, for second-year students)
  - Computer Systems (for the Industrial MSc)
- Other teaching:
  - Masters in Advanced Computing - Research Seminar - "Applied Computer Science"
  - Parallelising and restructuring compilers (short course, occasional)
  - Ideas for student projects (undergraduate and postgraduate)
  - For ISOs (Independent Study Options), and other student literature survey projects (undergraduate and postgraduate): please look at the project proposals (above)
  - First-year Computing "topics" programme - Software Performance Optimisation
- Administration:
  Computing Support Group Forum
- Software
  - 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).
  - 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 methods. 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.