ACM India Summer School on Programming Language Analysis and Optimizations

Hosted by: IIT Hyderabad (online) Dates: 6th to 16th July 2021

Compilers are pervasive and critical for any software application to execute on any Computer System. You might be already familiar with the C/C++ compiler used to compile C/C++ source code into an executable. However, did you know that there is a compiler being used when you play your favourite 3D game or browse your favourite HTML5 website? Not just that, Compiler technology has applications beyond the traditional task of generating executables! Today it is used to detect defects in code, catch security issues and even generate HW Designs from software specifications. As the era of Artificial Intelligence dawns with techniques like Machine Learning and Deep Learning helping computer perform some amazing human like tasks the importance of designing great compilers increases many-fold, not just to generate the most optimized programs for latest HW but also to help programmer productivity by translating programs coded in Domain Specific Languages that are custom built for Machine Learning and AI.

This summer school aims at providing you a foundation in theory and practice of optimizing compilers. Further, a study of essential components of program execution environments will provide you with an end-to-end understanding of the life of a program in a computer system.

The 2-week school will cover these concepts through lectures as well as hands-on assignments.

A high-level module structure is as follows:

  • Introduction to compilers and interpreters
  • Program analysis
  • Compiler optimizations: machine-independent and machine-dependent
  • Interfacing with program execution
  • Computer Architecture
  • Assembly language programming would be very useful
  • GNU/Linux command line, e.g. “cp ” instead of drag and drop
  • Programming using C

List of Speakers

R Govindarajan

Professor
Indian Institute of Science

Machine Architecture and Machine Dependent Optimizations

Uday Khedker

Professor
Indian Institute of Technology Bombay

Data Flow Analyses and Perspectives in Compilation

Sanjay Rajopadhye

Professor
Colorado State University

Polyhedral Compilation and Loop Optimizations

Nandivada V Krishna

Professor
Indian Institute of Technology Madras

Machine Independent Optimizations

Subhajit Roy

Associate Professor
Indian Institute of Technology Kanpur

Control-Flow Analyses and Static Single Assignment form

Swati Jaiswal

Assistant Professor
Visvesvaraya National Institute of Technology Nagpur

Compilation of Object Oriented Languages

Unnikrishnan Cheramangalath

Assistant Professor
Indian Institute of Technology Palakkad

Code Generation and BackEnd

Girish Bharambe


NVIDIA

Runtime and Linkers

Ramakrishna Upadrasta

Assistant Professor
Indian Institute of Technology Hyderabad

Compiler Engineering, MLIR and DSLs

Jyothi Vedurada

Assistant Professor
Indian Institute of Technology Hyderabad

Constant Propagation and Points-to-Analysis

Schedule

  • Lectures: (Morning) 3 - 4 hours per day (with breaks of 15min–30mins)
  • Tutorials/Hands-on: (Afternoon) 2 - 2.5 hours per day on practical aspects on the following:
    • Language tools - Lex, Yacc, Antlr
    • LLVM - Infrastructure, IR, Analysis and Transformation Passes
    • Modern compiler systems -
      • Polyhedral compilation tools - Pluto, ISL, PET, CLooG
      • MLIR, AutoTVM, …

Students would be provided with a Docker container with the necessary softwares installed.


  • 7:00 AM
  • 7:30 AM
  • 8:00 AM
  • 8:30 AM
  • 9:00 AM
  • 9:30 AM
  • 10:00 AM
  • 10:30 AM
  • 11:00 AM
  • 11:30 AM
  • 12:00 PM
  • 12:30 PM
  • 1:00 PM
  • 1:30 PM
  • 2:00 PM
  • 2:30 PM
  • 3:00 PM
  • 3:30 PM
  • 4:00 PM
  • 4:30 PM
  • 5:00 PM
  • 5:30 PM
  • Jul 6th (Tuesday)

    • Prof. Ramakrishna Upadrasta
      9:00 AM–10:00 AM
      Introduction to Compilers
    • Prof. R Govindarajan
      10:30 AM–11:30 AM
      Machine Architecture and Pipelining
    • Tutorial
      11:45 AM–12:45 PM
      Introduction to LLVM Compiler toolchain
    • Tutorial
      3:00 PM–4:00 PM
      Compiler Options and Optimizations
    • Tutorial
      4:30 PM–5:30 PM
      Compiler Options and Optimizations
  • Jul 7th (Wednesday)

    • Prof. Nandivada V Krishna
      9:00 AM–10:00 AM
      Machine Independent optimizations
    • Prof. Nandivada V Krishna
      10:30 AM–11:30 AM
      Machine Independent optimizations
    • Prof. Nandivada V Krishna
      11:45 AM–12:45 PM
      Machine Independent optimizations
    • Tutorial
      3:00 PM–4:00 PM
      Lexical Analysis and Parsing
    • Tutorial
      4:30 PM–5:30 PM
      Lexical Analysis and Parsing
  • Jul 8th (Thursday)

    • Prof. R Govindarajan
      9:00 AM–10:00 AM
      Machine Dependent Optimizations 1
    • Prof. R Govindarajan
      10:30 AM–11:30 AM
      Machine Dependent Optimizations 1
    • Prof. R Govindarajan
      11:45 AM–12:45 PM
      Machine Dependent Optimizations 1
    • Tutorial
      3:00 PM–4:00 PM
      Clang and Clang Tooling
    • Tutorial
      4:30 PM–5:30 PM
      Clang and Clang Tooling
  • Jul 9th (Friday)

    • Prof. Swati Jaiswal
      9:00 AM–10:00 AM
      Compilation of Object Oriented Languages
    • Prof. Swati Jaiswal
      10:30 AM–11:30 AM
      Compilation of Object Oriented Languages
    • Prof. R Govindarajan
      11:45 AM–12:45 PM
      Machine Dependent Optimizations 2
    • Tutorial
      3:00 PM–4:00 PM
      LLVM IR
    • Tutorial
      4:30 PM–5:30 PM
      LLVM IR
  • Jul 10th (Saturday)

    • Prof. Subhajit Roy
      9:00 AM–10:00 AM
      Control-Flow Analyses & SSA
    • Prof. Subhajit Roy
      10:30 AM–11:30 AM
      Control-Flow Analyses & SSA
    • Prof. Subhajit Roy
      11:45 AM–12:45 PM
      Control-Flow Analyses & SSA
    • Tutorial
      3:00 PM–4:00 PM
      Writing passes in LLVM 1
    • Tutorial
      4:30 PM–5:30 PM
      Writing passes in LLVM 1


  • 7:00 AM
  • 7:30 AM
  • 8:00 AM
  • 8:30 AM
  • 9:00 AM
  • 9:30 AM
  • 10:00 AM
  • 10:30 AM
  • 11:00 AM
  • 11:30 AM
  • 12:00 PM
  • 12:30 PM
  • 1:00 PM
  • 1:30 PM
  • 2:00 PM
  • 2:30 PM
  • 3:00 PM
  • 3:30 PM
  • 4:00 PM
  • 4:30 PM
  • 5:00 PM
  • 5:30 PM
  • 6:00 PM
  • 6:30 PM
  • 7:00 PM
  • 7:30 PM
  • 8:00 PM
  • 8:30 PM
  • 9:00 PM
  • 9:30 PM
  • Jul 12th (Monday)

    • Prof. Uday Khedker
      9:30 AM–10:30 AM
      Data flow analyses
    • Prof. Uday Khedker
      11:00 AM–12:00 PM
      Data flow analyses
    • Prof. Uday Khedker
      12:15 PM–1:15 PM
      Data flow analyses
    • Tutorial
      3:00 PM–4:00 PM
      Writing passes in LLVM 2
    • Tutorial
      4:30 PM–5:30 PM
      Writing passes in LLVM 2
  • Jul 13th (Tuesday)

    • Prof. Jyothi Vedurada
      9:00 AM–10:00 AM
      Inter and Intra procedural analyses
    • Prof. Jyothi Vedurada
      10:30 AM–11:30 AM
      Inter and Intra procedural analyses
    • Prof. Jyothi Vedurada
      11:45 AM–12:45 PM
      Inter and Intra procedural analyses
    • Girish Bharambe
      3:00 PM–4:00 PM
      Runtime, Linker and GPUs
    • Girish Bharambe
      4:30 PM–5:30 PM
      Runtime, Linker and GPUs
    • Prof. Sanjay Rajopadhye
      7:00 PM–9:30 PM
      Polyhedral Compilation 1
  • Jul 14th (Wednesday)

    • Prof. Sanjay Rajopadhye
      7:00 AM–8:30 AM
      Polyhedral Compilation 2
    • Prof. Unnikrishnan Cheramangalath
      9:30 AM–10:30 AM
      Code Generation & Backend
    • Prof. Unnikrishnan Cheramangalath
      11:00 AM–12:30 PM
      Code Generation & Backend
    • Tutorial
      3:00 PM–4:00 PM
      Polyhedral Compiler Tools 1
    • Tutorial
      4:30 PM–5:30 PM
      Polyhedral Compiler Tools 1
  • Jul 15th (Thursday)

    • Prof. Sanjay Rajopadhye
      7:00 AM–8:30 AM
      Polyhedral Compilation 3
    • Tutorial
      3:00 PM–4:00 PM
      Polyhedral Compiler Tools 2
    • Tutorial
      4:30 PM–5:30 PM
      Polyhedral Compiler Tools 2
    • Prof. Sanjay Rajopadhye
      7:00 PM–9:00 PM
      Polyhedral Compilation 4
  • Jul 16th (Friday)

    • Prof. Uday Khedker
      9:30 AM–10:30 AM
      Perspectives in Compilation
    • Prof. Uday Khedker
      11:00 AM–12:00 PM
      Perspectives in Compilation
    • Tutorial
      2:30 PM–3:45 PM
      MLIR
    • Panel Discussion
      4:00 PM–5:00 PM

Coordinators

Organizing institution: IIT Hyderabad

Platform: Google-Meet/Microsoft Teams

Sponsors