Parallelization, Compilers, and Platforms
Teaching staff: Henk Corporaal, Roel Jordans, Martijn Koedam, Sander Stuijk
Lecture dates: 3rd quartile 2016 (1 February 2016 until 31 March 2016)
Assignment quizzes and further info: available on OnCourse
Exam date: 11 April, 2016
Prior knowledge: Computation II (5EIB0), Embedded Computer Architecture (5SIA0)
Overview
This page relates to the 2015/2016 version of the course. Next year should have some magic improvements.
In this course we introduce the overall flow of modern compilers with extra focus on the parallelization of code and support for heterogeneous multi-core platforms. We use the LLVM framework as example for our exercises but most of the knowledge gained here should be portable to compilers using other frameworks.
The grade for this course exists out of 60% written exam, 10% for each assignment (4x), and up to 5% extra for each bonus exercise (4x).
Program
Date | Slides | Topic |
1-2-2016 |  | Course introduction |
1-2-2016 |  | AVR architecture, compiler organization, assignment 1 intro |
4-2-2016 |  | Introducing LLVM IR |
4-2-2016 |  | Second part of the lecture, introducing the basic concepts of the LLVM backend |
15-2-2016 |  | Going more in-depth into instruction-selection, scheduling, and register allocation for the AVR architecture |
18-2-2016 |  | Algorithms used in the backend such as list scheduling, modulo scheduling, and register allocation |
22-2-2016 |  | Compiler organization and optimizations |
22-2-2016 |  | Assignment 2 introduction |
25-2-2016 |  | Instruction scheduling revisited |
29-2-2016 |  | Loop transformations and theory |
3-3-2016 |  | SIMD architectures and LLVM vectorization capabilities |
7-3-2016 |  | Before we parallelize or vectorize a loop we have to check for inter-iteration, or loop-carried, dependences. This lecture treats the theory and practice about Dependence Testing |
10-3-2016 | N/A | Language standardization (Guest speaker: Willem Wakker, ACE) |
10-3-2016 | N/A | Testing compilers (Guest speaker: Marcel Beemster, SolidSands) |
14-3-2016 |  | Application modeling and transformations using the Polyhedral model |
17-3-2016 |  | Introducing heterogeneous systems programming using Halide (Guest speaker: Sander Vocke) |
21-3-2016 |  | Multicore programming models and their implementation, introducing OpenMP |
24-3-2016 |  | Compilation for heterogeneous platforms, using OpenMP4 target offloading as an example. |
31-3-2016 |  | Implementing the Halide Compiler (Guest speaker: Sander Vocke) |
31-3-2016 | N/A | Doing buisness in compilers (Guest speaker: Marco Roodzant, ACE) |