Part II Projects
These are some Part II project ideas that I've put together. Please contact me for more information.
Compiler SSA Optimizations
Within the ILDJIT compilation framework the majority of optimizations are implemented on the standard intermediate representation. However, taking advantage of static single assignment (SSA) form would allow easier implementation of the optimisations, leading to better generated code. The scope of this project would be to implement several well-known compiler optimisations in SSA form within ILDJIT and compare the performance of the final code with the current implementation, for example common subexpression elimination and dead code elimination.
Compiler Loop Transformations
Within a compiler, loop transformations can significantly improve the performance of the generated code. This is because they provide better scope for other optimisations to work on, as well as being able to target loops to the characteristics of the underlying architecture (e.g. cache size). The ILDJIT compilation framework is lacking many loop transformations. The goal of this project is to implement a number of well-known loop transformation algorithms (e.g. loop unrolling, loop splitting and loop fusion) and study their impact on application performance.