If you are interested in working with me, e.g. as PhD or MRes student, please get in touch. I currently have a number of fully funded PhD places available!
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).
Dynamic Program Analysis and Transformation, including (Semi-)Automatic Parallelisation of Legacy Applications, and Identification of Structured Parallelism, including Algorithmic Skeletons
Code Generation and Optimisation, especially for Embedded Platforms
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.
Accessibility
I want everyone who visits my website to feel welcome and find the experience rewarding. Please check this Accessibility Statement.
Research Group
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“
Publications
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.
Christos Vasiladiotis, Roberto Castañeda Lozano, Murray Cole, Björn Franke. Loop Parallelization using Dynamic Commutativity Analysis.
In: The International Symposium on Code Generation and Optimization (CGO 2021), February 2021.
Valentin Radu, Kuba Kaszyk, Yuan Wen, Jack Turner, José Cano, Elliot J. Crowley, Björn Franke, Amos Storkey, Michael O’Boyle. Optimal Convolutional Dimensionality for Mobile and Embedded GPU Performance.
In: The 2019 IEEE International Symposium on Workload Characterization (IISWC 2019), November 3 – November 5, 2019, Orlando, Florida, USA.
Tom Spink, Harry Wagstaff, and Björn Franke. A Retargetable System-Level DBT Hypervisor.
In: Proceedings of the 2019 USENIX Annual Technical Conference. July 10–12, 2019, Renton, WA, USA.
Martin Kristien, Tom Spink, Harry Wagstaff, Björn Franke, Igor Böhm, and Nigel Topham. Mitigating JIT Compilation Latency in Virtual Execution Environments.
In: Proceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE’19), Providence, Rhode Island, USA, 2019.
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.
Tobias J.K. Edler von Koch, Stanislav Manilov, Christos Vasiladiotis, Murray Cole, and Björn Franke. Towards a Compiler Analysis for Parallel Algorithmic Skeletons.
In: Proceedings of the 2018 International Conference on Compiler Construction (CC’18), Vienna, 2018.
Stanislav Manilov, Christos Vasiladiotis, and Björn Franke. Generalized Profile-Guided Iterator Recognition.
In: Proceedings of the 2018 International Conference on Compiler Construction (CC’18), Vienna, 2018.
Bruno Bodin, Luigi Nardi, M Zeeshan Zia, Harry Wagstaff, Govind Sreekar Shenoy, Murali Emani, John Mawer, Christos Kotselidis, Andy Nisbet, Mikel Lujan, Björn Franke, Paul Kelly and Michael O’Boyle. Integrating Algorithmic Parameters into Benchmarking and Design Space Exploration in Dense 3D Scene Understanding.
In: Proceedings of the 25th Conference on Parallel Architectures and Compilation Techniques (PACT’16), Haifa, Israel, September 11-15, 2016.
Tobias J.K. Edler von Koch, Björn Franke, Pranav Bhandarkar, Anshuman Dasgupta. Exploiting Function Similarity for Code Size Reduction.
Proceedings of the ACM SIGPLAN Conference on Languages, Compilers and Tools for Embedded Systems (LCTES 2014), Edinburgh, June 2014.
Tobias J.K. Edler von Koch and Björn Franke. Variability of Data Dependences and Control Flow.
Proceedings of the 2014 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS 2014), March 23-25, 2014.
Tobias Edler von Koch and Björn Franke. Limits of Region-Based Dynamic Binary Parallelization.
Proceedings of the 2013 ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE’13), Houston, TX, March 2013.
Oscar Almer, Igor Böhm, Tobias Edler von Koch, Björn Franke, Stephen Kyle, Volker Seeker, Christopher Thompson and Nigel Topham. Scalable Multi-Core Simulation Using Parallel Dynamic Binary Translation.
Proceedings of the International Symposium on Systems, Architectures, Modeling, and Simulation (SAMOS’11), Samos, Greece, July 19-22, 2011.
Jonathan Frye and Björn Franke. PDP – Pen Driven Programming.
Proceedings of the BCS Human-Computer Interaction (HCI 2008) Conference, September 2008, Liverpool, United Kingdom.
Edwin Bonilla, John Cavazos, Björn Franke, Michael O’Boyle, John Thomson, and Chris Williams. Using Machine Learning to Focus Iterative Optimization.
Proceedings of the 4th Annual International Symposium on Code Generation and Optimization (CGO), March 2006, New York, USA.
Björn Franke, Michael O’Boyle, John Thomson, and Grigori Fursin. Probabilistic Source-Level Optimisation of Embedded Programs.
Proceedings of the 2005 Conference on Languages, Compilers and Tools for Embedded Systems (LCTES’05), June 15 – 17, 2005, Chicago, IL, USA.
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.
Björn Franke and Michael O’Boyle. Towards Automatic Parallelisation for Multiprocessor DSPs.
Proceedings of the 5th International Workshop on Software and Compilers for Embedded Systems (SCOPES), March 20-22, 2001, St. Goar, Germany.
Björn Franke and Michael O’Boyle. Automatic Array Access Recovery in Pointer based DSP Codes.
Proceedings of 2nd Workshop on Media Processors and DSPs, 33rd International Symposium on Microarchitecture, December 2000, Monterey, California.
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.
Past Teaching
Over the years I have been teaching numerous courses including:
Compiling Techniques
Compiler Optimisation
Distributed Systems
Embedded Systems
C Programming Concepts and Skills
Informatics Research Review
Informatics Project Proposal
Course Design
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.