Go to content
SV På svenska

Faster and cheaper: system-level IR for program optimization

Reference number
FFL12-0051
Start and end dates
140101-191231
Amount granted
9 882 181 SEK
Administrative organization
Uppsala University
Research area
Information, Communication and Systems Technology

Summary

Power is the limiting factor across all ICT today. From servers to smartphones, what we can do is limited by the available power. This hard limit has forced designers to focus on efficiency for the past decade, and the result has been a sweeping shift to heterogeneous computing. By specializing processors for different tasks, these systems offer dramatically better efficiency, but only if we can write software for them. Today’s critical challenge is that while we can build power-efficient systems through heterogeneity, we cannot program them in a cost-effective manner. If we do not overcome this challenge we will be unable to advance our computational capabilities due to power limits. This project will leverage my background in heterogeneous runtime systems and compilers from my pioneering work on the OpenCL standard and the advanced power and performance modeling tools that I have developed at Uppsala to address this challenge. By integrating our models with new runtime information and a flexible program representation, we will produce a sophisticated power- and performance-aware system. We will deliver automatic optimization across today’s and tomorrow’s heterogeneous systems, as well as providing actionable, high-level feedback to developers. The results of this research will be new understanding and tools that will enable users across all compute-intensive fields to cost-effectively leverage continued advances in computer systems, despite their added complexity.

Popular science description

For the past 40 years faster processor speeds made all software run faster. In 2004 this stopped, as computer designers realized that their chips used so much electricity that they could not keep them cool. As a result they changed how they designed chips to try and make them more power efficient. Today this has resulted in heterogeneous computer systems that contain multiple different types of processors (for example general purpose and graphics processors), where each one is designed for a different kind of program. By choosing the processor that matches the program, the software can be much more power efficient. However, having different types of processors makes the computer enormously harder to program. So hard, in fact, that there are very few developers who have the skills needed to write such programs. As a result, we cannot take advantage of most of this processing power for key scientific and industrial challenges from drug design to weather prediction. To make matters worse, computers are changing so rapidly that software optimized for today’s machines may actually run slower on tomorrow’s. This research will build a system that analyzes the program while it is running and optimizes it for whatever hardware it is using. To do this we need to develop a new way of looking at the program that allows us to better understand its structure, gather detailed information about its behavior, and use smart models to predict how to change it to get the best power efficiency. With these advances, we can automatically analyze the program and quickly explore the best way to run it on heterogeneous systems. The challenges in this research are to identify the key parts of the program we need to understand and how to represent them. For example, we need to be able to analyze how the program moves data between processors if we are going to choose the best processor, but this is often hidden in the way programs are written. We also need to be able to predict how changing processors will affect the program’s power and performance so we can quickly choose the right processor for each part of the program. These are both difficult tasks due to the complexity and variety of programs and hardware. Without these kinds of tools we will be unable to write power efficient software, which will limit our ability use new advances in computer performance to solve today’s pressing problems.