CISC 673 - Optimizing Compilers

Professor John Cavazos
Class Time TR, 9:30am-10:45am
Room Number Smith Hall 102A
Office Hours TR, 11am-12pm
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/17 Control Flow and Project Ideas  Slides (PPT) Read the following Wikipedia pages (section)
Graph Theory (Basics)
Basic Blocks
Control Flow Graphs
2/19 More Control Flow  Slides (PPT) Read the following Wikipedia page (section) Graph Theory (Dominance)
2/24 Overview of JikesRVM, Phase I, and Data Flow  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
2/26 Data Flow  Slides (PPT) Engineering a Compiler, Chapter 8, Sections 8.3, 8.4, 8.6
3/03 More Data Flow  Slides (PPT) Compilers: Principles, Techniques, & Tools. 2nd edition (Dragon Book), Chapter 9, Sections 9.2,9.3, 9.4
3/05 Yet More 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/10 ILP, Memory, and Syncronization   Slides (PPT) Guest Lecture: Joseph Manzano
3/12 Optimization Tradeoffs   Slides (PDF) Guest Lecture: Xiaoming Li
3/17 Static Single Assignment I  Slides (PPT) Efficiently computing static single assignment form and the control dependence graph, Cytron et al. Paper Here
3/19 Static Single Assignment II  Slides (PPT) Engineering a Compiler, Chap. 9 (Sections on SSA)
3/24 Midterm 
4/7 Dynamic Compilation I  Slides (PPT) Adaptive optimization in the Jalapeno JVM, Arnold et al. Paper HERE
4/9 Dynamic Compilation II  Slides (PPT) Adaptive optimization in the Jalapeno JVM, Arnold et al. Paper HERE
4/14 Method Profiling  Slides (PPT)
4/16 Feedback Directed Compilation  Slides (PPT)
4/21 Register Allocation I  Slides (PPT) Read the following Wikipedia pages (section)
Register Allocation
4/23 Register Allocation II  Slides (PPT) Advanced Compiler Design and Implementation, by Stephen Muchnick (pgs 482-486, 494-520)
4/28 Instruction Scheduling I  Slides (PPT) Read the following Wikipedia pages (section)
Instruction Scheduling
4/30 Class Cancelled 
5/5 Instruction Scheduling II  Slides (PPT) Read the following Wikipedia pages (section)
Instruction Scheduling
5/7 Loop Transformations I  Slides (PPT) Read the following Wikipedia pages (section)
Loop Optimizations
5/12 Loop Transformations II  Slides (PPT) Read the following Wikipedia pages (section)
Loop Optimizations
5/14 ETI Architecture and Compiler 
5/18 Future Parallel Languages  Slides (PPT)


Class Resources:

Project I
Project II

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.