How to Modernize Compiler Technology
, MIT CSAIL
Date: Monday, November 18, 2019
Time: 2:00 PM to 3:00 PM Note: all times are in the Eastern Time Zone
Location: 32-G449 Kiva/Patil
Event Type: Seminar
Room Description: Refreshments at 1:45pm.
Host: Julian Shun
Contact: Linda Lynch, 617 715 2459, firstname.lastname@example.org
Speaker URL: https://charithmendis.com/
TALK: 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.
Computer Architecture, Programming Languages & Software
Created by Linda Lynch at Wednesday, November 13, 2019 at 10:52 AM.