Compiler Optimisation (COPT-2019) Home Page
Introduction
This course introduces students to modern techniques in efficient implementation of programming languages. Modern processors and
systems are designed based on the assumption that a compiler will be able to effectively exploit architectural resources. This course
will examine in detail techniques to exploit instruction level parallelism, memory hierarchy and higher level parallelism. It will
examine classic static analysis approaches to these problems and introduce newer feedback directed and dynamic approaches to
optimisation. The course work will require students to implement selected optimisations in a research compiler.
Context
For 4th year students, Compiling Techniques is a pre-requisite. MSc students must have completed an introductory course in compilation
or have written a compiler.
Taught By
Timetable
Coursework
| Deadline | Thursday 4pm Feb 21st 2019 |
| Feedback | Thursday 4pm Mar 7th 2019 |
Formative feedback: you will be quizzed every lecture about things we are discussing. There will also likely be a worked example exam
question session.
General Course-related Documents
References:
- R. Joshi, G. Nelson, K. H. Randall Denali: A Goal-directed Superoptimizer, PLDI 2002 (required, examinable reading)
- K. D. Cooper, L. Torczon Engineering a Compiler, Morgan Kaufmann 2003
- R. Allen K. Kennedy Optimizing Compilers for Modern Architectures: A Dependence-based Approach, Morgan Kaufmann 2001
- A. Aho, R. Sethi, J.D.Ullman Compilers: Principles, Techniques and Tools, Addison Wesley 1986
- S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann 1997
Lecture Notes
Some slides may be for extra content, possibly examinable, but not covered in lectures.
Old lecture notes:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
Tools and Resources
-
Ayrton Massey's Data-Flow Tutor.
Ayrton was a student of mine who built this rather excellent teaching tool for you.
BTW, you can fork his project for this on GitHub.
-
Engineering A Compiler (pdf)
.
This is the pdf of the first text book. I assume this is legit, but haven't checked, or downloaded it myself. Download at your
own risk!
Reading
Please note that the lectures do not cover the material in as much detail as the books. You are expected to learn from the books.
The lectures are to help with understanding and to give you an opportunity to ask questions. You should also read the papers
indicated in the lectures. The lists below are approximate as we sometimes jump around a bit in the books.
There is a lot of reading required for this course - you have been warned! I make no apology for this because, even so, we
only scratch the surface.
Engineering a Compiler
- You are expected to read and learn the whole book
- Lecture 1 covers Chapters 1-7. It is assumed that you already know these chapters from a previous course
- Lectures 3 and 4 cover Chapters 8-10
- Lecture 5 covers Chapter 11
- Lecture 6 covers Chapter 12
- Lecture 7 covers Chapter 13
Optimizing Compilers for Modern Architectures
- You are already supposed to know the things in Chapter 1 from a previous course
- Lecture 8 covers Chapters 2 and 3
- Lecture 9 covers Chapters 4-6
- Lecture 10 covers Chapter 2
- Lecture 11 covers assorted topics in the first 6 chapters
Misc
- Lectures 12 - 14 are not based on books