Estimating the Energy Usage of Code [multiple projects: must be specialised]

Will Bromham


Supervised by Frank C Langbein; Moderated by Padraig Corcoran

Traditional performance evaluators of code are linked to CPU/GPU, memory and IO operations. While there is a link to the power usage of a program, this is quite complex. The aim of this project is to investigate the power usage of code (not hardware, even if the same code may have different power profiles depending on the hardware; we are interested in the energy usage on specific hardware; if you are interested in co-design aspects instead, please discuss feasibility).

The first task is to find a way to estimate the power usage of a running process. This can be done via measuring the total power usage of code via CPU registers, etc. or possibly via measuring the energy via the power rails. There are also various software tools, largely aimed at estimating the energy usage of CPUs, GPUs, etc. (particularly on more recent CPUs - see RAPL MSR interface). The accuracy and precision of these tools may have to be validated. The next task is to set up a suitable benchmark to test power for a specific usage scenario. This could link to energy usage over different programming languages, e.g. what is the difference of a web application running on C vs PHP vs Python. Or comparing different algorithms performing the same task (e.g. memory intensive vs. computation intensive approaches). It is expected that there are clear correlations to the instruction counts, memory operations, IO, etc., which could be demonstrated. A model (empirical, machine learning, etc) to predict the power usage of a program based on such performance features could also be developed. Also, how far can energy saving features of hardware be used to improve the energy usage (e.g. running a program at a lower frequency, voltage, etc., which is still fast enough vs. execution at maximal or even overclocked frequency)? Due to time constraints, it is expected that the analysis would be limited to a single hardware platform and on some quite specific aspect/task. Details should be clarified in discussion.

This project requires some understanding of computer hardware and electronics as well as statistics and data analysis.

Final Report (10/09/2023) [Zip Archive]

Publication Form