Compilers are the workhorse that bridge the gap between human readable and machine executable code. The diversity of modern programs, along with the advent of new and complex hardware architectures, has strained the capabilities of current compilers, making development and maintenance of automatic program optimizations in compilers exceedingly challenging. In spite of this, modern compiler optimizations are still constructed manually, expending considerable human effort.
In this talk, I will show how to construct compiler optimizations in a more automated manner using compiler auto-vectorization as an example. More specifically, I will show how to construct the three main components of a compiler optimization pass, namely, the transformation space, cost model and the optimization algorithm using both formal reasoning and machine learning.
First, I will demonstrate how to automatically generate a richer transformation space for compiler auto-vectorization using just the formal ISA semantics of a given hardware platform with the vectorizer generator Vegen. Vegen automatically supports newer vector instructions compared to manually-written vectorizers and outperforms production compilers on a number of important kernels.
Second, I will show how to automatically learn the optimization algorithm that selects the best transformation choice among valid vectorization opportunities exposed through the transformation space in Vemal. Vemal formulates the optimization problem as a sequential decision making process and shows that it is feasible to learn how to imitate a costly oracle.
Third, I will briefly present how to use data-driven techniques to learn compiler cost models with Ithemal. Ithemal automatically learns how to predict the throughput of basic blocks represented in a given ISA and the results show that it is significantly more accurate than state-of-the-art hand-written cost models used in production compilers.
The synergy in design of these three components will pave the way towards developing more automated means of constructing compiler optimizations that achieve state-of-the-art results.
Charith Mendis is an Assistant Professor in Computer Science at the University of Illinois at Urbana-Champaign. Before that, he was a visiting faculty researcher at Google Brain. His research interests include Compilers, Machine Learning for Systems and Program Analysis. He completed his PhD and Masters degrees at MIT. Charith was the recipient of the William A. Martin thesis prize for an outstanding Masters thesis at MIT, the best student paper award at IEEE Big Data conference and the best paper award at ML for Systems workshop at ISCA. He has published work at both top programming language venues such as PLDI and OOPSLA as well as at top machine learning venues such as ICML and NeurIPS.
Part of the Illinois Computer Science Speaker Series. Faculty host: Lawrence Rauchwerger