Paul Kelly: Compilers II (advanced)


Lecture notes are available on the web here. (this is Chapter 5 of the Parallel Architectures course, which supercedes the original material here). Note that these may not be fully up to date until paper copies are actually d istributed.

Tutorial exercises are available on the web here. Note that these may not be fully up to date until paper copies are actually d istributed.


These web pages are the on-line component of a 6-lecture course on parallelising and restructuring compilers. It introduces the issues and techniques involved in generating high performance code for sophisticated computer architectures by "restructuring" the program to expose parallelism and/or optimise locality.

Until 1996, this formed part of the fourth-year/MAC course "Compilers II" (419).

Objectives
  1. To motivate the techniques like loop interchange and tiling by examining the performance characteristics of a selection of modern architectures
  2. To introduce dependence analysis of subscript expressions in loops
  3. To introduce the use of unimodular transformation matrices to represent, manipulate and evaluate alternative loop nest formulations
Level of students
This is a component of a second-level fourth-year undergraduate course organised by Dr Sophia Drossopoulou. The material builds on the Dragon book and Wolfe's textbook and includes research-level material.

Textbook

High Performance Compilers for Parallel Computing by Michael Wolfe (Addison Wesley, 1996).