Master Seminar on
High-Performance
Compilers


WebHome
- Education Page
- Description
- Literature
- Schedule
- Assignments

Center
Master Program

Course Description

Hpc02
The EducationPage is the `official' web-page for this course and has schedule information

Contents

Optimizing compilers are essential tools for getting good implementations of high-level languages. By leaving optimizations to the compiler, programmers can concentrate on well-designed, maintainable programs.

Between parsing the input program and writing the generated machine code, optimizing compilers perform a wide range of transformations on a program to improve its time and space behaviour. In this course we study a selection of such optimizing transformations and their implementation in Stratego, a language for program transformation based on the paradigm of rewriting strategies. In this year's installment of the seminar we will focus on loop optimizations.

In previous versions of this course a compiler for Andrew Appel's Tiger language was built. In this year's installment we will take a basic Tiger compiler in Stratego as given and extend it with loop optimizations.

Literature

We will use the following book (chapters 1 to 6) as the main text of the seminar:

  • Randy Allen and Ken Kennedy. Optimizing Compilers for Modern Architectures: A Dependence-based Approach, Morgan Kauffman, 2001.

The following book gives an overview of the phases of a compiler for the Tiger language:

  • Andrew Appel. Modern Compiler Implementation in C, Cambridge Univ. Press, 1998.

Further literature consists of articles about Stratego and SPIM that will be handed out in class.

Form

The course is a seminar in which you will give several presentations. The implementation of the compiler extension that you develop should be accompanied by a paper that describes the extension, the programming techniques that you used, and that discusses its relation to the literature.

Assesment

The final grade will be determined by your presentations (40%) and (the report about) the compiler extension that you develop (60%).