Title: How to Modernize Compiler Technology

Abstract: In this talk, I will show the path to the modernization of one important compiler technique -- vectorization. Vectorization was first introduced in the era of Cray vector processors during the 1980's. While vector supercomputers needed large vectors, which are mainly available by parallelizing loops, modern SIMD instructions efficiently work on short vectors. Thus, in 2000, Larsen et. al. introduced a new technique known as Superword Level Parallelism (SLP) based vectorization to fill this gap.

First, I will show how we can take advantage of the power of modern computers for compilation, by using more accurate but expensive techniques to improve SLP vectorization. Due to the hardware resource constraints of the era, like many other compiler optimizations, SLP implementation was a greedy algorithm. In 2018, we introduced goSLP, which uses integer linear programming to find an optimal instruction packing strategy.

Next, I will show how to truly modernize a compiler by automatically learning the necessary components of the compiler with Ithemal and Vemal. The actual cost of execution in a modern out-of-order, superscalar processor is much more complex than a linear model. Manually building such cost models as well as manually developing compiler optimizations is costly, tedious and is hard to keep up with the architectural changes. Ithemal is the first learnt cost model for predicting the throughput of x86 basic blocks with minimal human effort. Vemal is the first learnt policy for end-to-end vectorization as opposed to tuning heuristics. These data-driven techniques achieve state-of-the-art results while also reducing the development and maintenance burden of the compiler developer.

Bio: Charith Mendis is a final year PhD student at Massachusetts Institute of Technology advised by Prof. Saman Amarasinghe. His research interests include Compiler Optimizations, Machine Learning for Compiler Optimizations and Program Analysis. He was awarded the William A. Martin Thesis Prize for best Masters thesis in Computer Science at MIT, best student paper award at IEEE Big Data conference and a best paper award at ML for Systems workshop at ISCA. He has published work at both top programming language venues such as PLDI, OOPSLA as well as at top machine learning venues such as ICML, NeurIPS.