In this project, you will investigate to which extend we can an understanding of models for energy-aware programming and implement the needed tools to support it. The idea of an energy-aware programming model is to support the programmer, such that programming choices for lower energy consumption become more clear. Today, we teach students how to optimise their code for memory and cache behaviour for faster execution; program libraries and algorithms are implemented to follow this. It is not possible to give similar skills for energy consumption.
Project
I the project you will the existing understanding about energy of computation and current knowledge of programming languages and program transformations (compilers, optimisers, etc.). Modern compilers (both static compilers like the ones for C of C# or just-in-time compiler like the one for Java) implement extensive optimisations to programs, but this does not necessarily result in less energy usage. These optimisations have historically solely focused on making the programs faster.
You will also work with methods to better quantify and evaluate the efficiency of specific and representative programs. To evaluate the programs and different program transformation, we need to understand their behaviour. This is not different from how efficiency of programs is investigated by running the programs.
Relevant IFI courses for this project
During this master project, you will need to get good foundational understanding of programming languages and transformation. Relevant courses during this project would be:
- INF5110: Compiler design
- IN5630 – Programming Language Implementation and Formalisation
- IN5440: Selected topics in static analysis
Related project:
https://www.mn.uio.no/ifi/english/research/projects/leap/index.html