I am a PhD student in Computer Science at the University of Bristol, looking at energy efficiency, compilers and how we can make our software and hardware use less energy.
I am currently looking at superoptimization for energy consumption. For more information I've written a blog post about it for Embecosm. The project aims to create a database of energy efficient optimizations which can be applied to compiled code. For more information take a look at my superoptimization pages.
Over summer I worked for Embecosm on a research project:
Identifying Compiler Options to Minimize Energy Consumption by Embedded Programs (paper).
Visit the project wiki or Embecosm's blogpost for more details on the project.
I also developed a set of benchmarks for testing energy consumpion in embedded devices (paper, blogpost, code).
I gave a presentation to the NMI for their Every Joule Counts event. The presentation discussed how optimizations in the compiler affect a programs energy usage, talking about general trends seen.
A talk on energy efficient compiler optmizations was given to OSHUG (Video, slides).
I presented at the PEGPUM workshop at HiPEAC'13 in Berlin.
The work on compiler optimizations and their impact on energy consumption was presented at GCC Cauldron 2013 (Video, slides).
I talked about the Parallella project and parallel programming, at the "Preparing for Parallella" event, Bletchley Park (Video, Slides).
I received a HiPEAC intership to work with Embecosm (Summer 2013), exploring superoptimization for energy consumption.
I gave a talk at OSHcamp/Wuthering Bytes, on energy consumption and how to measure it (Video, Slides).
The MAGEEC project ran an Energy Efficient Devroom at FOSDEM2014.
I spoke at the Linux Collaboration Summit 2014 (description, slides).
I won the NMI's young engineer of the year 2014 award!
I spoke at FOSDEM 2015 - Superoptimization: How fast can your code go? (slides).
- Optimisation selection and ordering.
- The selection and ordering of optimisations in the compiler hugely affects the performance and the energy consumption of the final program. I've performed analysis of which optimisations are effective over several embedded processors. The paper is open access and can be got here.
- Benchmarking energy consumption.
- Measuring execution time is somewhat easier than energy consumption - little instrumentation is needed and many benchark suites are available for many platforms. I've developed a benchmark suite which can be used on deeply embedded processors to evaluate its energy consumption over a range of scenarios. The preprint paper can be found here.
- Embedded flash energy.
- The position of code in embedded flash memory affects the energy consumption of that code. I analysed five tiny processors which have embedded flash, and developed a model which can be used to predict the energy consumption when the code alignment is changed. The paper is available here.
I am currently contributing to several research projects:
I've made various bits of software for my PhD work. Most of them are available on github.
- Energy monitor. This contains firmware to run the MAGEEC energy monitor hardware. Also it contains a couple of python modules to make interacting with the boards easier.
- BEEBS. This is a set of benchmarks designed to run on deeply embedded platforms, and expose the energy consumption characteristics of that platform.
You can contact me at james @ this domain.