CS5260: Compiler Optimizations
January 2020 - May 2020
Instructor: Ramakrishna Upadrasta (U. Ramakrishna)
Email: Ramakrishna AT iith DOT ac DOT in
Office:
Discussion Google-group: CompilerOpt-Jan20 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;
Prerequisites: CS5260: A grade of "A" in CS3320 and CS3423 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.)
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.
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% |