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:


Some Class Links:


Suggested readings:


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%