DASMOD Summer School Lecture Series
Ulrich Rüde and Jan Treibig: "Architecture Aware Programming"
Contents
The main focus of this class is on techniques for enhancing the
performance of compute-intensive codes on modern computer architectures.
For a given algorithm, these techniques comprise the minimization of the
number of operations, exploiting instruction level parallelism, as well as
the optimization of memory accesses by improving the cache utilization and
respecting the hierarchical memory design of modern architectures.
Preliminary List of Topics:
1. Introductory Examples
2. Review of Computer Architecture
Instruction Level Parallelism, Pipelining, Superscalar Design, Memory
Hierarchy, memory types, Instruction Set Architecture (ISA), prefetching,
SIMD instructions
3. Examples of Current Computer Architectures
What are all these transitors doing on the chip?
-x86-64: Opteron, Pentium 4,-IA64: Itanium2
4. From high level language to the ISA implementation
problems, pitfalls, optimizing compilers (and when they fail)
5. Techniques for improving memory performance
Climbing over the memory wall by blocking, prefetching, padding, memory layout
6. Techniques for improving floating point performance
loop overhead, instruction scheduling, SIMD ...
Can we reach peak performance?
7. Tools: Looking inside the processor
Debugger, Profiling, Hardware counters, Performance Monitors
8. The art of efficient programming
Guidelines for programming on modern architectures (x86)
9. & 10. Case Studies
Memcpy, Vector triade, Gauss Seidel Iteration, Multigrid, Matrix
Multiplcation?
Lecture Notes (pdf)
Architecture Aware Programming
Related research project
http://www10.informatik.uni-erlangen.de/Research/Projects/DiME/ *