At the end of this course, the student
- knows how to profile application code;
- knows about high-level and low-level optimizations;
- knows how to optimize an application in a structured and time-efficient manner;
- is able to find, select, and apply algorithms with reduced algorithmic complexity;
- understands the impact of memory latency on performance;
- understands the role and workings of modern cache architectures;
- knows the concept of SIMD and is able to apply this to existing code;
- is able to apply low-level optimizations;
- has a basic understanding of GPGPU and knows how to offload work to the GPU;
- understands the GPU memory hierarchy and its effect on application performance;
- is able to accurately report on the optimization process upon completion.
Programming assignments: your practical grade P is based on two programming assignments P1, P2 (25% each) and one final assignment P3 (50%).
Exam: your exam / theory grade T is based on a single final exam.
Final grade: Your final grade is (3P + T) / 4. You must score at least 4.0 (before rounding) for the exam to pass this course.
Retake: To qualify for a retake, the final grade must be at least 4 (before rounding). You may repair your final grade by redoing one of the four assignments, or the exam. Exact terms will be discussed individually.
INFOMOV is a practical course on optimization: the art of improving software performance, without affecting functionality.
We apply high level and low level optimizations, in a structured manner.
Especially for the low level optimizations, we must intimately understand the hardware platform (CPU, GPU, memory, caches) and modify our code to use it efficiently.
Vectorization: Modern processors achieve their performance levels using parallel execution. This happens on the thread level, but also on the instruction level. Being able to produce efficient vectorized code is an important factor in achieving peak performance.
GPGPU: Graphics processors employ a streaming code execution model, taking vectorization to extremes, both in the programming model and the underlying architecture. Leveraging GPU processing power is an important option when optimizing existing code.
Context: Optimization is a vital skill for game engine developers, but also applies to other fields.
Recommended articles, available through the course website.