Optimization & Vectorization
academic year 2021/22 – 4th block
Course: 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
join us on INFOMOV
Small print: The course will be taught in English. Warning: A decent level of
C/C++ is expected. Expect a significantly higher
workload if you are a C++ novice. Course materials are
provided for Windows machines.
You are welcome to use an alternative, but please be
aware that you are expected to solve technical hurdles
C++ Programming Template for your experiments; includes an OpenCL framework.Practice / demonstration materials:
Will be made available here during the course.Lecture recordings and slides:
Lecture 1: Introduction - slides
Period 4 Schedule
All assignments can be done alone or in teams of two students. For teams: it is not mandatory to do all four assignments with the same partner; switching is allowed.
Assignment P1 - PEDAL TO THE METAL
For this assignment you will apply low-level optimization
to a graphical application.
May 10, 17:00. Extended deadline (1pt penalty): Wednesday
May 11, 17:00.
This assignment involves vectorization. Details will follow later.
May 24, 17:00. Extended deadline (1pt penalty): Wednesday
May 25, 17:00.
Deadline: Tuesday June 7, 17:00. Extended deadline (1pt penalty): Wednesday June 8, 17:00.
Deadline: Friday June 24, 17:00. Extended deadline (1pt penalty): Saturday June 25, 17:00.
Programming assignments: Your practical
grade P is based on three programming assignments
P1 (20%), P2 (20%) and P3 (20%) and one final assignment
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.
RETAKES AND REQUIREMENTS
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
Overview of literature used during this course:
Links verified on September 5, 2020.