CSci 5161

Advanced Compiler Techniques

Fall 2003 - University Of Minnesota


 


Course Objectives

This course is intended to provide an in-depth study of code optimization techniques used in compilers for state-of-the-art processors. It begins with analysis techniques such as control flow, data flow, data dependence, and alias analysis. Based on information collected from various analysis techniques, it further discusses compiler optimization transformation techniques, including classic optimizations such as redundancy eliminations, register allocations and loop optimizations, as well as new transformations dealing with Instruction Level Parallelism (ILP) and the memory hierarchy. The target audience consists of Computer Science majors and graduate students .

Course Information

Time: TTh, 11:15am - 12:30PM Room: MechE-102

Instructor: Wei Hsu Office Hours: T Th 1:00 to 2:00pm Location: EE/CS 6-207 (office hour only)

e-mail: hsu@cs.umn.edu Phone: 612-625-2013

Teaching Assistant: None

Prerequisites: CSci 5161 or instructor's permission

Text

Steve S. Muchnick "Advanced Compiler Design Implementation", Morgan Kaufmann, 1997, ISBN 1-55860-320-4

Reference Papers

Armando Fox, Michael Hsiao, James Reed, and Brent Whitlock "A Survey of General and Architecture-Specific Compiler Optimization Techniques". See link on the class web page.

David F. Bacon, Susan L. Graham, and Oliver J. Sharp, "Compiler Transformations for High-Performance Computing ", ACM Computing Survey, see link on the class web page.

Class materials

All class materials will be posted on the class web site in PDF or HTML format.

Evaluation

Homeworks and Projects: Students are required to experiment some optimization transformations on EPIC based processors (e.g. Itanium). Two homeworks will be assigned to get more familiar with flow analysis techniques. A term project to design and implement a significant part of some optimizations on Itanium/Linux platform.

Exams: Midterm exam will be on 11/03/2003 during the regular class hours. The mid-term exam will be open book and open notes. There will be no final exam.

Grading:  Final grades are based on accumulated points gained for the home works, projects and the mid-term exam. The weightages for grading are: Small projects: 15%, Homeworks: 25%, Midterm 30%, and term project 30%.
 
 

Late submission policy:

  • 2 Day late: -20 %
  • 3 Day late: -30 %
  • Assignment will not be accepted after three days

Rules for Imcomplete

  • Incompletes are to be given only when a student who has successfully completed all the assignments and the mid-term exam and is unable to finish the compiler project part-II and take the final, for reasons beyond their control such as a medical emergency.

  Syllabus (tentative)

Sept. 2: Introduction (Ch 1)

Sept. 4: Intermediate Representations (IR) (Ch 4)

Sept. 9: Intermediate Represent ations (IR) (Ch 4)

Sept. 11: Control Flow Analysis (Ch. 7)

Sept. 16: Control Flow Analysis (Ch. 7)

Sept. 18: Data Flow Analysis (Ch. 8)

Sept. 23: Data Flow Analysis (Ch. 8)

Sept. 25: Dependence Analysis and Dependence Graphs (Ch. 9)

Sept. 30: Dependence Analysis and Dependence Graphs (Ch. 9)

Oct. 2: Alias Analysis (Ch. 10)

Oct. 7: Introduction to Optimization (Ch. 11)

Oct. 9: Early Optimizations (Ch. 12)

Oct. 14: Redundancy Elimination (Ch. 13)

Oct. 16: Redundancy Elimination (Ch. 13)

Oct. 21: Loop Optimizations (Ch. 15)

Oct. 23: Procedure Optimizations (Ch. 15)

Oct. 28: Register Allocation (Ch. 16)

Oct. 30: Register Allocation (Ch. 16)

Nov. 4: In-Class Mid-term Exam

Nov. 6: Guest Speaker (Eric Van Wyk)

Nov. 11: Code Scheduling (Ch. 17)

Nov. 13: Code Scheduling (Ch. 17)

Nov. 18: Optimization for the Memory Hierarchy (Ch. 20)

Nov. 20: Optimization for the Memory Hierarchy (Ch. 20)

Nov. 25: Control flow and Interprocedure optimization (Ch. 18 and 19)

Dec. 2: Profile Basef Optimization

Dec. 4: Profile Based Optimizations

Dec. 9: Term Project Review

Dec. 11: Term Project Review