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

DateSlidesTopic
1-2-2016Course introduction
1-2-2016AVR architecture, compiler organization, assignment 1 intro
4-2-2016Introducing LLVM IR
4-2-2016Second part of the lecture, introducing the basic concepts of the LLVM backend
15-2-2016Going more in-depth into instruction-selection, scheduling, and register allocation for the AVR architecture
18-2-2016Algorithms used in the backend such as list scheduling, modulo scheduling, and register allocation
22-2-2016Compiler organization and optimizations
22-2-2016Assignment 2 introduction
25-2-2016Instruction scheduling revisited
29-2-2016Loop transformations and theory
3-3-2016SIMD architectures and LLVM vectorization capabilities
7-3-2016Before 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-2016N/ALanguage standardization (Guest speaker: Willem Wakker, ACE)
10-3-2016N/ATesting compilers (Guest speaker: Marcel Beemster, SolidSands)
14-3-2016Application modeling and transformations using the Polyhedral model
17-3-2016Introducing heterogeneous systems programming using Halide (Guest speaker: Sander Vocke)
21-3-2016Multicore programming models and their implementation, introducing OpenMP
24-3-2016Compilation for heterogeneous platforms, using OpenMP4 target offloading as an example.
31-3-2016Implementing the Halide Compiler (Guest speaker: Sander Vocke)
31-3-2016N/ADoing buisness in compilers (Guest speaker: Marco Roodzant, ACE)