Compilers are a critical component between the software developer and the computer. They translate application written by software developers into machine code that is processed by the computer. An important task of a compiler is to optimize applications so that they run efficiently. Traditional methods to develop optimizing compilers are ad-hoc, labor-intensive, and ineffective. As a consequence, optimizing compilers for a new processor often produces code that achieves only a fraction of the machine?s available performance. This is especially true for today's multi-core architectures, which are parallel processors on a single chip. This research will involve investigating techniques from the artificial intelligence community that will allow a compiler to automatically adapt and tune to new architectures. In effect, this research will replace hand-tuning with self-tuning compilers that adapt software automatically to match the performance characteristics of each target architecture.
In this project, the PI proposes to explore the viability of developing adaptive compilers for multi-core environments (ACME) to allow application portability while still achieving high performance. The PI will create a statistical auto-tuning framework to support the probabilistic representation of the following features: the benefit analysis of optimizations, the identification and prediction of the appropriate runtime environment for different optimizations, and the generation of executables that efficiently combine several optimized code versions. He will invent components to measure accurately the characteristics of applications and targeted computing systems. The PI hopes to discover techniques to replace ?traditional? optimization benefit analysis with powerful machine learning models. These models will address the broad spectrum of parallel applications and multi-core environments, and they will be able to analyze and predict benefit under different dynamic contexts.