Instructor: | John Reppy | Ryerson 256 |
Meeting time: | Friday 1:00-3:00 |
Location: | Ry 255 (most weeks) |
The focus of this seminar will be on Automated Tuning of Compilers, with a particular emphasis on using Machine Learning techniques to guide program optimization.
The approach that we will take in this course is to identify a given class of optimizations and a collection of papers related to those optimizations, and then to discuss the papers in a group.
The first topic will be static branch prediction, which is the problem of statically identifying whether a conditional branch is likely to be taken or not. We will start with some classic papers on the topic and then look at one or two AI-based approaches.
Branch Prediction for Free
(PLDI 1993)
by Thomas Ball and Jim Larus
Optimally Profiling and Tracing
Programs (PLDI 1992)
by Thomas Ball and Jim Larus
Static Branch Frequency and
Program Profiling (PLDI 1994)
by Youfeng Wu and Jim Larus
Using Decision Trees
to Improve Program-Based and Profile-Based Static Branch Prediction
(ACSAC 2005)
by Veerle Desmet, Lieven Eeckhout, and Koen De Bosschere
One other paper that is probably worth looking at, since the Desmet et al paper
builds on it is
Evidence-Based Static Branch
Prediction Using Machine Learning (TOPLAS 19:1, 1997)
by Brad Calder et al.
This is a catch-all for a wide spectrum of program properties and compiler optimizations. A 1991 PLDI paper by Wall looked at predicting program behavior from profiles, while a 2003 PLDI paper described a range of compiler optimization techniques that could be enabled by machine learning.
Predicting Program Behavior Using
Real or Estimated Profiles (PLDI 1991)
by David Wall et al.
This paper introduced the general idea of using profile information
to guide compiler optimization decisions.
Meta Optimization:
Improving Compiler Heuristics with Machine Learning (PLDI 2003)
by Mark Stephenson et al.
This week we will look at two examples of compiler heuristics.
Inducing Heuristics To
Decide Whether To Schedule (PLDI 2004)
by John Cavazos and J. Eliot B. Moss
Automatic Tuning
of Inlining Heuristics (Supercomputing 2005)
by John Cavazos and Michael F. P. O'Boyle
This week we will look at two papers about intelligent compilers.
Intelligent compilers (CLUSTER 2008)
by John Cavazos
This position paper gives a vision for compilers for heterogeneous architectures.
MILEPOST GCC: machine learning
based research compiler (GCC 2008)
by Grigori Fursin et al.
This paper describes a version of the GCC compiler that uses ML
in its optimizer.
Another paper about autotuning compilers.
OpenTuner: An Extensible
Framework for Program Autotuning (PACT 2014)
by Jason Ansel, et al.
Meta-programming and Auto-tuning in the
Search for High Performance GPU Code (FHPC 2015)
by Michael Vollmer, et al.