CS5260: Compiler Optimizations & CS6300: Topics in Compiler Optimizations

January 2017 - May 2017


Instructor: Ramakrishna Upadrasta (U. Ramakrishna)
Email: Ramakrishna AT iith DOT ac DOT in
Office:


Discussion Google-group: CompilerOpt-Jan17 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 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.) 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:


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%