CAREER: Staging Compilers for Heterogeneous Platforms
Colorado State University, Fort Collins CO
Investigators
Abstract
Power density and energy considerations have become the primary constraints driving technology directions for embedded, mainstream, as well as peta/exascale computing at the high end. Non-homogeneous CPU cores and increasingly complex System-on-Chips are on the roadmap of most manufacturers. In a word, computing platforms are now heterogeneous, after decades of mass marketing homogeneous single-core x86 processors. Optimizing compilers are a cornerstone of the software stack: they are in charge of producing high-quality machine-specific code from the input program. The current development model where either an application is manually tuned by expert engineers to the specifics of the new target platform, or simply left untuned and heavily under-utilizing the hardware resources is not sustainable. This project targets the design of a complete system to efficiently compile several key computation patterns to heterogeneous targets, from a single input source. The PI investigates how to automatically characterize the quality and performance of software transformation systems, so as to better exploit their strengths; and create new customized compilation techniques to produce optimized binaries for heterogeneous processors. In particular, the PI develops a novel system that automatically learns what types of programs an optimization tool (e.g., a vendor compiler) can optimize well, focusing on performance-critical loop-based program regions amenable to polyhedral compilation. By combining automatic benchmark generation and deep learning techniques, this system automatically builds a performance contract for the compiler: a program that meets specific syntactic and semantics restriction (the contract) is guaranteed to be well optimized by that compiler. Then, in order to best exploit such compilers, programs are automatically restructured to expose program sub-regions that meet the contract requirements. With the assistance of target-specific performance models, the best restructuring is chosen at compile-time for each hardware target. This system can then be applied at compile-time for various execution contexts (e.g., for different CPU frequencies, core counts, etc.), to deliver an adaptive binary where the best implementation is selected at run-time as a function of the execution context. The project aims to demonstrate how to best stage various compilers to exploit their strengths, in turn significantly reducing the time currently spent by developers to tune their implementation for better performance. Education material to be produced includes a lecture series for educators and students on how to write programs that compilers can optimize well, and a MOOC on polyhedral compilation, the mathematical framework to reason about programs that is central to this project.
View original record on NSF Award Search →