|Dozent:||Prof. Dr. Helmut Seidl|
|Ort/Zeit:||Room: 00.13.009A; Lecture: Mon. 12:15-13:45, Wed. 10:00-11:30, Exercises: Thu. 10:00-12:00, |
|Beschreibung: ||This course is about standard techniques used to optimize general purpose programming languages.
How to avoid redundant computation, replace expensive computations with cheaper ones, and/or exploit hardware.|
- no exercise session on Thursday 07.12.2017
- no lecture on Monday, 13.11.2017; small lecture + exercise session on Wednesday 15.11.2017; lecture (instead of exercise session) on Thursday 16.11.2017
- The list of projects is available here: projects.txt
- At the exam, the only allowed auxiliary material is a (double-sided) A4 cheat sheet.
- The repetition exam takes place on 27.03.2018, 10:30-12:30, in room Hans-Fischer-Hörsaal, CH21010 (room code: 5401.01.101K). The registration period is 05-19.03.2018.
The lecture is meant for students doing Master studies who are interested in compiler technology.
Programs which we write should be both efficient and easily to maintain. In particular, maintainability means that programs should be well-structured and easily understandable also by humans. Being well-structured and easily readable, though, may often come at the price oft a degradation in efficiency at run-time.
For this reason, most compilers offer an optimization phase in which the source program is analyzed and where various transformations are applied to automatically improve efficiency. In some cases, it may happen that the attempt for improvement overshoots the target and results in programs which are perhaps fast but are no longer equivalent to the original program.
In the lecture, we give an overview over standard techniques for improving the quality of the generated code. In particular, we are interested in methods which guarantee that the resulting code still is equivalent to the source program.
The topics covered:
** Intra-procedural analysis and optimizations
** Abstract Interpretation and Interval Analysis
** Interprocedural optimizations
** Exploitation of hardware features such as registers, pipelines, caches, specific instructions
** Optimization of functional languages
** Optimization of Prolog
If you have any questions regarding organization or content of the exercises, please contact Eugen Zalinescu (firstname.lastname@example.org).
||Simple imperative language, CFGs, semantics
||Constraint systems, lattice theory
||Round-Robin, MOP, distributive functions
||(True) liveness, monotonic analysis framework
||Superfluous moves, transformations 1-3
||Constant propagation, interval analysis
||Alias analysis, worklist algorithm
||Copy-constant analysis, Sharir/Pnueli-Cousot
||Call string approach, SSA form
||updated: more detailed solution for ex.1
||SSA form, VLIWs, Difference Constraints
||Omega Test, Loop bounds, Presburger Arithmetic
||Inlining, deforestation, strictness analysis
||Top/Total strictness analysis, BDDs