Lecture Slides

 

   Introduction to course

  
Getting started: A simple one-pass compiler
   Stack Machines: SaM
       SaM jar file

       SaM examples
  
    Required reading: Parsing
    Recursive-descent parsing and code generation  

    Grammar Flow Graph and Earley parser
    Paper: A Graphical Model for Context-free Grammar Parsing by Bilardi et al. (CC 2015)

  
Back-end optimizations
   Intermediate Representations
   Control-flow graphs

   Scalar optimizations

 

   Solving fixpoint equations

   Dataflow analysis

   Live variables and copy propagation  
   Partial redundancy elimination

   Lazy code motion (slides from Cooper and Torczon, Rice University)
        Papers: Lazy Code Motion by Jens Knoop et al (PLDI 1992)
                     Drechsler and Stadl's version of Lazy Code Motion (SIGPLAN , May 1993)
   Strength Reduction
         Paper: Operator strength reduction by Cooper et al (TOPLAS September 2001)


   Dominators,control dependence,SSA (1 lecture)
         Papers:  The Program Dependence Graph and its Use in Optimization by Ferrante et al
                       Efficiently computing the SSA form and control dependence by Ferrante et al (TOPLAS 1991)
                       Algorithms for Computing the SSA Form by Bilardi et al (JACM, May 2003)
  

   Register allocation

   Points-to analysis
         Papers: The ant and the grasshopper: fast and accurate pointer analysis for millions of lines of code
                        by Hardekopf and Lin (PLDI 2007)   (efficient Andersen-style analysis)
                       Flow-sensitive pointer analysis for millions of lines of code by Hardekopf and Lin (CGO 2011)
                         (uses flow-insensitive analysis as a pre-processing step)
                        
 
Loop transformations (4 lectures)

  Cache models for locality analysis
        Lectures 1 and 2
  Dependence analysis and transformations of affine loops
         Papers:  The Omega test: a fast and practical integer programming algorithm for dependence analysis
                                 Bill Pugh, CACM August 1992
                        Access normalization: loop restructuring for NUMA computers
                                 Wei Li and Keshav Pingali, ACM Transactions on Computer Systems (TOCS), 1993.
                        A data locality optimizing algorithm
                                Michael Wolf and Monica Lam, PLDI 1991.
Auto-tuning for cache performance: ATLAS
        Papers: A comparison of empirical and model-driven optimization
                               Yotov et al, PLDI 2003

Vectorization:
        Lectures 1 and 2

Fractal Symbolic Analysis
        Paper: Fractal Symbolic Analysis

Programming models for parallelism


 
The operator formulation of algorithms
        
Papers:  The TAO of parallelism in algorithms
                                  Pingali et al. PLDI 2011

 

Student presentations