EJCP 2015: Research in Compilers and How it Relates to Software Engineering

Tomofumi Yuki (CR Inria)

Overview

The main goal of this course is to give some ideas about what research in compiler is about. One of the main challenges in compilers is in analyzing a program to find what to do with it to bring higher performance. In many cases, what should be done is obvious to an expert programmer. However, automating the decision process and the transformations themselves is a whole different story. Even the word "performance" is context sensitive, and can mean speed, code size, energy efficiency, and other metrics.

This course aims to illustrate these challenges and some techniques to addresses the difficulties. The main subject is parallelism and data locality; traditionally important properties of programs, now getting more and more important.

Course Outline

Part I: Compiler Research

Slides: pptx, pdf
Here is the code for the permutation example: gemm-permutation-tests.tar

Part II: Compiler Optimizations

Slides: pptx, pdf

Part III: Relation to Software Engineering

Slides: pptx, pdf

Lab: Introduction to Loop Transformations

The lab will step through an important loop transformation, and expose some of the challenging in automating it within a compiler.

You will need the following: Lab Instructions
Lab Material

Slides: pptx, pdf

Lab Objectives and Solutions