CISC 673 - Optimizing Compilers

Professor John Cavazos
Class Time TR, 3:30pm-4:45pm
Room Number Smith Hall 202
Office Hours TR, 2pm-3pm
Held in Smith Hall 412
Course Number CISC 673
Course Syllabus HERE
Interested in learning about how program analysis and compiler optimization techniques can be used to: make sequential and parallel programs run faster; automatically parallelize a program?

This course will focus on compilation techniques for optimizing programs for single core and multicore processors. We will begin with classic topics such as intermediate program representations, interprocedural and intraprocedural dataflow analysis, register allocation, and scheduling for single core processors. Then we will focus on topics pertaining to optimizing parallel applications running on multicore processors. We will study compiler optimization techniques to improve the performance of regular and irregular programs on multicore processors. We will conclude with a discussion of current research directions in compilers, e.g., autotuning, iterative compilation, and intelligent compilers.

A previous course in compilers (e.g., CISC672) is useful, although not required. Students should have a familiarity with C, C++, or Java and the ability to work with large applications in one of these languages. A significant portion of the course will be a large project which includes substantial software development, as well as a written project report. Students will also present a paper (which they choose) based on a relevant topic to the course. There is no required book for the course. Instead, topics will be synthesized from a variety of sources, including papers, information on the internet, and sections of books *all* on reserve at the library.

 
Lecture (Tenative Outline)   Slides   Papers / Resources / Notes 
2/10 Course Overview  Slides (PPT)
2/12 Overview of Compilers and JikesRVM  Slides (PPT) Read Compiler Wikipedia Page and JikesRVM (formerly known as Jalapeno) Paper.
2/15 Control Flow and Project Ideas  Slides (PPT) Read the following Wikipedia pages (section)
Graph Theory (Basics)
Basic Blocks
Control Flow Graphs
2/17 More Control Flow  Slides (PPT) Read the following Wikipedia page (section) Graph Theory (Dominance)
2/22 Data Flow  Slides (PPT) T.J. Marlowe and B.G. Ryder Properties of Data Flow Frameworks, pp. 121-163, ACTA Informatica, 28, 1990. Paper Here
2/24 More Data Flow and JikesRVM Overview  TA Slides (PPT) Slides (PPT) T.J. Marlowe and B.G. Ryder Properties of Data Flow Frameworks, pp. 121-163, ACTA Informatica, 28, 1990. Paper Here
3/01 Yet More Data Flow  Slides (PPT) Compilers: Principles, Techniques, & Tools. 2nd edition (Dragon Book), Chapter 9, Sections 9.2,9.3,9.4
3/03 Finish up Data Flow and Intelligent Compilation  Slides (PPT) Slides (PPT) Compilers: Principles, Techniques, & Tools. 2nd edition (Dragon Book), Chapter 9, Sections 9.2,9.3, 9.4 and Intelligent Compilation Paper
3/08 Static Single Assignment I  Slides (PPT) Efficiently computing static single assignment form and the control dependence graph, Cytron et al. Paper Here
3/10 Static Single Assignment II  Slides (PPT) Slides (PPT) Engineering a Compiler, Chap. 9 (Sections on SSA)
3/15 Static Single Assignment III  Slides (PPT) Engineering a Compiler, Chap. 9 (Sections on SSA)
3/17 Dynamic Compilation  Slides (PPT) Adaptive optimization in the Jalapeno JVM, Arnold et al. Paper HERE
3/22 Feedback Directed Optimization  Slides (PPT) Adaptive optimization in the Jalapeno JVM, Arnold et al. Paper HERE
3/24 Predictive Modeling for Polyhedral Optimizations  Slides (PPT)
3/29 and 3/31 Spring Break 
4/05 Midterm 
4/07 Auto-realignment of Data Structures (Ben Perry)  Slides (PPT)
4/19 Register Allocation I  Slides (PPT) Read the following Wikipedia pages (section)
Register Allocation
4/21 Instruction Scheduling I  Slides (PPT) Read the following Wikipedia pages (section)
Instruction Scheduling
4/26 Global Instruction Scheduling (Ben Perry)  Slides (PPT)
4/28 The Phase-Ordering Problem (Sameer Kulkarni)  Slides (PPT)
5/03 Loop Transformations I  Slides (PPT) Read the following Wikipedia pages (section)
Loop Optimizations
5/05 Inlining  Slides (PPT)


Class Resources:

Class Project

Note: Significant portions of these slides were heavily borrowed from course material developed by Emery Berger, Kathryn McKinley, Eliot Moss, and Keith Cooper.

Copyright Notice: I do not grant anyone the right to publish these materials for profit, in any form. These lecture notes are for a course in "Optimizing Compilers" and you may use them for non-profit educational purposes without charge.