PhD Studentships in Compilers that Learn to Optimise at University of Edinburgh

There are currently two vacancies for EPSRC funded PhD Studentships within the Compiler Group at the Institute for Computer Systems Architecture and Institute for Adaptive and Neural Computation within the School of Informatics University of Edinburgh, Scotland, UK.

The studentships are for 3 years and in the area of applying machine learning to program optimisation. This project is a collaboration between the Compiler group headed by Dr Michael O'Boyle and Machine Learning group led by Dr Chris Williams. It is anticipated that there will be an opportunity for research in either or both of these areas.

Candidates should hold a good first degree, be self-motivated and possess strong mathematical and computational skills. A relevant MSc or knowledge of compiler optimisation and/or machine learning would be useful but not obligatory.

The compiler group investigates a diverse range of problems from adaptive java compilation to auto-parallelising for embedded DSP systems. Research in the machine learning area ranges from theoretical questions to applications such as astronomical data-mining. There are close links with other UK, European and US groups and there is ample opportunity for creative study and interaction.

The start date for the studentship is flexible, but can be as early as February 1st, 2003. To apply, complete the application form available from, specifying that you wish to be considered for an EPSRC studentship in Compilers that Learn to Optimise. Informal enquiries may be made to Dr Michael O'Boyle, or Dr Chris Williams using the subject line "EPSRC studentships in Compilers that Learn to Optimise".


The overall objective of this project is to develop a compiler framework that can automatically learn how to optimise programs. Rather than hard-coding a compiler strategy for each platform, we aim to develop a novel portable compiler approach that can automatically tune itself to any fixed hardware and can improve its performance over time. This is achieved by employing machine learning approaches to optimisation, where the machine learning algorithm first learns the optimisation space and then automatically derives a compilation strategy that attempts to generate the ``best'' optimised version of any user program.

There are two main areas where machine learning techniques can be used to help optimise compilers: Global Optimisation (GO) and Predictive Modelling (PM). GO is of primary use in Iterative Embedded Compilation. It provides a systematic method of searching iteratively for the best program version off-line. PM is of primary use in Portable Compilation. It develops a model of the transformation and processor space during a separate training phase. It then uses this model at compile time to optimise any user program.

Such an approach, if successful, will have a wide range of applications. It will allow portability and performance of compilers across platforms, eliminating the human compiler-development bottleneck. It can also be applied to embedded applications, to rapidly shorten the design cycle of embedded systems and enable automatic design exploration of architectural options.

The strategic aims of the project are to:
  • To explore whether compiler optimisation strategies can be automated by using machine learning approaches.
  • Investigate new machine learning techniques to model high dimensional non-linear transformation spaces.
  • Demonstrate that optimising compilers can port and adapt to new environments by learning appropriate optimisations rather than using current hard-wired non-portable methods.
  • The project has the following technical objectives:

  • Investigate the applicability of different features or characterisations of program, data and processor for optimisation
  • Develop predictive modelling techniques to select directly the best sequence of high level transformations for a particular program.
  • Develop a prototype system that can learn to optimise across platforms and is competitive with industrial level compilers.
  • Develop an embedded compiler that outperforms current approaches and enables design space exploration.