CS5260: Compiler Optimizations & CS6300: Topics in Compiler Optimizations
January 2016 - May 2016
Instructor: Ramakrishna Upadrasta (U. Ramakrishna)
Email: Ramakrishna AT iith DOT ac DOT in
Office:
Discussion Google-group: CompilerOpt-Jan16 AT iith DOT ac DOT in
Join Group (only with IITH email-IDs)
Classes: Mon: 11:00am-12:00noon, Wed: 10:00am-11:00am, Thu: 9:00am-10:00am (B slot); Room: CL#212
Credits: CS5260 3:0; CS6300 3:0;
Prerequisites: CS5260: A grade of "A" in CS3020 and CS3021 for 3rd/4th year B.Techs; Course CS6240 at IITH or its equivalent for M.Techs and PhDs (Primarily 1st years:
exceptions allowed. Please get a permission from me.) CS6300: Get prior permission from me.
Course Description (CS5260)
The objective of this course is to learn basic and advanced compiler optimization techniques, either traditional or modern in their scope, or scalar-variable based or
loop-optimization based in their application or machine independent or dependent in their variety.
The initial part of the course would be devoted to a collection of traditional and classic compiler analyses and optimizations that are primarily based on control flow and data
flow analyses. This would be followed by studying more high-level optimizations that are based on the static single assignment intermediate representation as well as low-level
optimizations like register allocation, instruction scheduling and software pipelining.
The latter part of this course would be devoted to a model named polyhedral compilation where for-loops can be transformed to run efficiently on advanced architectures like
multi-core or GPU using rational and integer linear programming techniques. Here, the focus would be on basics of the three phase process of dependence analysis, affine scheduling
and code generation.
A large part of this course would be about either reading advanced compiler optimization papers, or studying the implementations of optimizations in a compiler like LLVM, or implementing
optimizations with a goal of obtaining performance/scalability improvements.
Course Description (CS6300)
This advanced graduate level course is only for invited audience. It will focus on advanced optimization techniques.
Lecture Schedule
In Google Drive.
Book References:
- [Text Book] Compilers: Principles, Techniques, and Tools ("Dragon book") by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, 2006
- [Text Book] Advanced Compiler Design and Implementation by Steven Muchnick, 1997
- [Text Book] Optimizing Compilers for Modern Architectures: A Dependence-based Approach by Randy Allen, Ken Kennedy, 2001
- [Ref. Book] Compiler Design "Syntactic and Semantic Analysis" by Reinhard Wilhelm, Helmut Seidl and Sebastian Hack, 2013
- [Ref. Book] Matthew S. Hecht. 1977. Flow Analysis of Computer Programs. Elsevier Science Inc., New York, NY, USA.
- [Ref. Book] Uday Khedker, Amitabha Sanyal, and Bageshri Karkare. 2009. Data Flow Analysis: Theory and Practice (1st ed.). CRC Press, Inc., Boca Raton, FL, USA. IITB link
- [Ref. Book] Handbook of Compiler Optimizations by Priti Shankar and Y.N. Srikant
- [Ref. Book] Introductory Tutorials to Polyhedral Compilation by Alain Darte (2000), Martin Griebl (2001), Sanjay Rajopadhye (2002).
- [NPTEL] NPTEL course on Principles of Compiler Design by Prof. Y.N. Srikant from Indian Institute of Science, 2012-2014
IITM Link
- .....
Some Class Links:
Suggested readings:
- CS6250: Advanced Compiler Optimizations at IITH in January-2015 CS6250
- FCC at IITH in Spring-2014 FC5264
- .....
Grading (CS5260)
Activity | Weight |
Class Participation | 10% |
Written Assignments (scribes, paper summaries etc.) | 15% |
Mini Prog. Assignments | 10% |
Paper Presentations (in class) | 10% |
Mid Term Exam | 20% |
Project (Proposal+Writeup+Presentation+Impact) | 35% |