EECS 583: Advanced Compilers

Fall 2011  Syllabus

 

Class and Instructor

Class: Mon/Wed, 10:30am-12:30pm, 3150 Dow
Prof. Scott Mahlke
Email: mahlke@umich.edu
Office: 4633 CSE Bldg.
Office hrs: MW right after class in 3150 Dow; W (4:30-5:30) in 4633 CSE

Course Description

An in-depth study of compiler backend design for high-performance architectures.  Basic topics include control-flow and dataflow analysis, optimization, instruction scheduling, modulo scheduling, and register allocation. Advanced topics include memory dependence analysis, automatic vectorization/thread extraction, analysis of concurrent programs, streaming applications, and predicated/speculative execution. The focus is backend compilation, thus a familiarity with both computer architecture and compilers is recommended.

Reference Books

·         Advanced Compiler Design & Implementation, Muchnick, Morgan Kaufmann, 1997.

·         Compilers: Principles, Techniques, and Tools, Aho, Sethi, Ullman, Addison-Wesley, 1988.

Prerequisites

Strong C++ programming skills (EECS 281), good background in computer architecture (EECS 370 at minimum), some familiarity with compilers (EECS 483 is desirable but not needed).

Grade

Midterm exam - 25%
Project - 45%
Homeworks - 10%
Paper summaries – 10%
Class participation – 10%

Midterm exam - There will be one in-class (2 hour) exam at about the 2/3 point of the class.  The exact date is TBD.  The exam will be open book/notes.

Project - The projects will consist of designing and implementing an advanced compiler technique within the LLVM compiler infrastructure (or other compiler system in certain cases).  A report describing the project should be submitted along with a brief presentation and/or demonstration of the resulting implementation.   Typical projects consist of 2-3 students, 1-person and 4-person projects are allowed under special circumstances.  There will be a project proposal and project update for each group scheduled during the semester.

Homeworks – 2 programming assignments will be done throughout the semester. Each homework will consist of implementing something within the LLVM compiler system and showing its operation on several test programs.  Each student must do their own work and turn in their own assignment.

Paper summaries – During the research topic portion of the class, each student will submit a short summary of the paper(s) being discussed.  The format of the summary will be provided in class.  Students may also be asked to present a paper in class.

Class participation - Students are encouraged to take an active role in this class by asking questions or providing comments. 

Topic list