I am broadly interested in software transformation, mostly for performance optimisation and parallelisation, but I have also looked at various techniques to e.g. reduce code size on embedded processors. Many transformations a compiler can apply are closely coupled to some kind of analysis determining whether the transformation is safe, i.e. it doesn’t break the program, and profitable, i.e. the program runs faster as a result of applying the transformation. Static analyses, which do not execute the program, but reason about it using some fancy maths, are often conservative and return statements such as “don’t know” or “maybe”. Obviously, this is not helpful for program transformation. Instead, we could either improve static analyses, but this is tricky (and often in fact intractable), or we could incorporate dynamic information obtained from actually running the program. And this is what I am interested in! Of course, there are lots of interesting problems to solve, e.g. how can we make this dynamic analysis safe and make sure we don’t miss some corner case, or how do we make it fast as we don’t want to spend a lot of time analysing the program at runtime when all we want to do is to actually reduce the program’s execution time.
All of this has a number of applications, for example to drive better code optimisations applied by a compiler, to enable more aggressive parallelisation of sequential legacy code or to improve performance of just-in-time compilers in dynamic binary translators (also known as instruction set simulators or emulators).
Please do contact me for further information on any of these areas. If you are sending me an informal enquiry, please put the term “PhD Application” in the title of the email. Please also include a CV and a brief statement of research interest. Informal enquiries do not constitute an application, and I ignore all unpersonalised emails (if you are serious about a PhD, you send individual enquiries not mass mailed ones). To apply you should use the usual University of Edinburgh application. However I do recommend that you back up any application with an informal enquiry. January 1 is considered to be a first cutoff for applications. Though I do accept applications after that date, I do recommend you try to apply before that date if you can as it makes it easier to get funding.
I want everyone who visits my website to feel welcome and find the experience rewarding. Please check this Accessibility Statement.
Virtually all my work is the result of a collaborative group effort and would not be possible without the various people working with me. This includes mostly PhD students and Post-Doctoral Researchers, but also MSc and undergraduate students and colleagues across ICSA.
Gordon Parke (MSc by Research, 2010) – Cisco
“ThermOS: An Energy Efficient Real-Time Operating System For An Ultra-low Power Embedded Device“
Mike Williams (MSc by Research, 2009) – Coherent Logix
“Power-Aware Compiler Design“
Most of my publications can be found on either Google Scholar or my ACM author page. However, if you prefer an overview by publication category and in chronological order you may wish to browse through the list below, which I try to keep reasonably up-to-date.
Sajad Saeedi, Bruno Bodin, Harry Wagstaff, Andy Nisbet, Luigi Nardi, John Mawer, Nicolas Melot, Oscar Palomar, Emanuele Vespa, Tom Spink, Cosmin Gorgovan, Andrew Webb, James Clarkson, Erik Tomusk, Thomas Debrunner, Kuba Kaszyk, Pablo Gonzalez-de-Aledo, Andrey Rodchenko, Graham Riley, Christos Kotselidis, Bjorn Franke, Michael F. P. O’Boyle, Andrew J. Davison, Paul H. J. Kelly, Mikel Lujan, and Steve Furber. Navigating the Landscape for Real-time Localisation and Mapping for Robotics Virtual and Augmented Reality.
Proceedings of the IEEE, 2018.
Rodrigo CO Rocha, Pavlos Petoumenos, Björn Franke, Pramod Bhatotia, Michael O’Boyle. Loop Rolling for Code Size Reduction.
In: 2022 IEEE/ACM International Symposium on Code Generation and Optimization (CGO 2022), April 2022.
Kuba Kaszyk, Harry Wagstaff, Tom Spink, Björn Franke, Mike O’Boyle, Bruno Bodin and Henrik Uhrenholt. Full-System Simulation of Mobile CPU/GPU Platforms.
In: Proceedings of the 2019 IEEE International Symposium on Performance Analysis of Systems and Software, Madison, WI, USA, 2019.
Björn Franke and Michael O’Boyle.
Combining Program Recovery, Auto-Parallelisation and Locality Analysis for C Programs on Multi-Processor Embedded Systems.
Proceedings of the 11th Workshop on Compilers for Parallel Computers (CPC 2004), July 7 – 9, 2004, Chiemsee, Germany.
Björn Franke and Michael O’Boyle.
Array Recovery and High Level Transformations for DSP Applications.
Proceedings of the 10th International Workshop on Compilers for Parallel Computers (CPC 2003), January 8-10, 2003, Amsterdam, The Netherlands.
I am not teaching any courses in this academic year, but I am supporting my colleagues in the School of Informatics as Director of Teaching.
Over the years I have been teaching numerous courses including:
C Programming Concepts and Skills
Informatics Research Review
Informatics Project Proposal
Together with my colleague Paul Patras I have been designing our new course “Internet of Things, Security, and the Cloud”. This course is intended to replace our existing “Embedded Systems” course, which I co-designed with Michael O’Boyle several years ago, from 2017/18 onwards. More recently, I have been redesigning the “Informatics Research Review” and “Informatics Research Proposal” courses.