Delivering efficiency with heterogeneous computation
Computers have become the foundation for nearly all scientific and societal advances. Further increases in computational power are needed to solve new and emerging challenges in everything from medicine to transportation, communications to energy, and even entertainment.
Yet over the past decade our ability to increase computer performance with smaller transistors has come to an end. While we can still make transistors smaller, we can no longer proportionally reduce the energy they consume. As a result, we have reached the point where computer systems are power-limited: to improve performance we must improve the efficiency with which we compute.
One of the most promising approaches for improving efficiency is heterogeneous computing, which matches different types of computation to different types of processors. By matching the computation to the processor, we can specialize the processors for a more limited range of computations. As a result we can design them to be more power efficient for just those computations.
Today’s systems include specialized processors for everything from signal processing to graphics and encryption. However, while we have these processors available, the real challenge is in how to use them efficiently: writing programs for one type of processor is a challenge, but writing a program that adapts to a variety of different processors at the same time is prohibitively difficult.
Our goal is to make these systems easier to program to enable more people to benefit from their increased efficiency and performance. To do so, we are looking at the problem from two angles: First, how to automatically understand resource utilization and efficiency in the system to optimize where programs run and how they move their data, and, second, how to feedback information from these analyses to developers so they can identify bottlenecks and improve their designs.
In this project we are developing a range of techniques to tackle the problem. These include fast models for understanding the interaction between programs, compiler improvements to allow us to divide up work more efficiently on heterogeneous systems, and schedulers to make more efficient use of computational resources. If we are successful, we will make it easier for all computer users to get the highest efficiency, and therefore the best performance, from the next generation of heterogeneous computing systems.
David Black-Schaffer, senior lecturer at Department of Information Technology
This project is funded by the Swedish Foundation for Strategic Research through their 5th Future Research Leaders program, grant FFL12-0051.