Summary
Energy efficiency is increasingly important in today's battery-powered mobile devices and power-limited servers. While performance optimisation is a familiar topic for developers, few are even aware of the effects that source code changes will have on the energy profiles of their programs. Compiler and operating system writers cannot create automatic energy optimisers without knowledge of these effects. To realise the needed energy savings, we require the capability to track energy consumption and associate it with code and data at a fine granularity. Furthermore, compilers and operating systems must exploit this capability to optimise applications automatically. This project presents a novel approach to software-centric modelling, measurement, accounting and optimisation of energy efficiency on many-core systems. Energy consumption will be matched against programming language abstractions, from basic blocks to functions, loops, and parallel constructs, and from variables to data structures, providing developers with the necessary information. The project will use this fine-grained accounting to build novel compiler optimisations that target energy consumption. It will create low-energy runtime systems that adapt to environmental changes. It will develop energy-efficient operating system scheduling that manages multitasking for heterogeneous many-cores.
We will investigate a software-only method that measures the total energy consumed by each basic block, loop and function, considering all hardware components its instructions traverse. We will explore novel ways to use the energy accounting information, underpinned by machine learning techniques, to search the optimisation space and coordinate power optimisation algorithms between compiler and runtime systems on heterogeneous mobile systems. The fine-grained energy accounting mechanisms will allow us to focus on the energy-intensive sections of the code and data. They will permit us to create specialised versions suited to reducing the data and code-level energy consumption of code regions.
