Optimization & Vectorization

Universiteit Utrecht - Information and Computing Sciences

academic year 2021/22 – 4th block

title image title image title image

Navigation

News

WELCOME!

Examination & Grading

Course Overview

Schedule

Literature & Links


Course Overview back to navigation

bunny logo image

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 fields.

Lecturers:

Comms: join us on INFOMOV (Teams).

Lectures:

  • Tuesdays, 13:15 - 15:00 (BBG-219 + live stream + recording)
    Tuesday Working Lecture: 15:15 - 17:00 (only on campus)
  • Thursdays, 11:00 - 12:45 (BBG-219 + live stream + recording)
    Thursday Working Lecture: 09:15 - 10:45 (only on campus)

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 yourself.


Files back to navigation

Downloads

Fundamentals:
C++ Programming Template for your experiments; includes an OpenCL framework.
Tiny tank game based on the C++ template: your starting point for the early assignments.

Practice / demonstration materials:
Will be made available here during the course.

Lecture recordings and slides:
Lecture 1: Introduction - slides
Lecture 2: Low-level - slides
Lecture 3: Profiling - slides (updated again - now with less obstruction)
Lecture 4: SIMD (1) - slides
Lecture 5: SIMD (2) - slides
Lecture 6: GPGPU (1) - slides

Recordings are available on Teams.

More will be made available here during the course.




Course Schedule back to navigation

Period 4 Schedule

Week Lecture / Exams Notes
17
Tue Apr 26
  
NO LECTURE
 
Thu Apr 28
11:00-12:45
Lecture 1:
Introduction


18
Tue May 3
13:15-15:00  
Lecture 2:
Low-level
 
Thu May 5
11:00-12:45
NO LECTURE - MAY 5


19
Tue May 10
13:15-15:00
Lecture 3:
Profiling
Tue May 10, 17:00:
Deadline Assignment 1
Wed May 11, 17:00:
Extended Deadline (-1 pt)
Thu May 12
11:00-12:45
Lecture 4:
SIMD (1)


20
Tue May 17
13:15-15:00
Lecture 5:
SIMD (2)


Thu May 19
11:00-12:45
Lecture 6:
GPGPU (1)


21
Tue May 24
13:15-15:00
Lecture 7:
Caches (1)
Thu May 26, 17:00:
Deadline Assignment 2
Fri May 27, 17:00:
Extended Deadline (-1 pt)
Thu May 26
11:00-12:45
NO LECTURE - Ascension Day


22
Tue May 31
13:15-15:00
Lecture 8:
GPGPU (2)


Thu Jun 2
11:00-12:45
Lecture 9:
Caches (2)


23
Tue Jun 7
13:15-15:00
Lecture 10:
GPGPU (3)
Thu Jun 9, 17:00:
Deadline Assignment 3
 Fri Jun 10, 17:00:
Extended Deadline (-1 pt)
Thu Jun 9
11:00-12:45
Lecture 11:
Fixed Point


24
Tue Jun 14
13:15-15:00
Lecture 12:
Data Oriented

 
Thu Jun 16
11:00-12:45
Lecture 13:
Freestyle
 
25
Tue jun 21
13:15-15:00
Lecture 14:
Recap, exam practice

 
Thu Jun 23
11:00-12:45
GUEST LECTURE?
Fri Jun 24, 17:00:
Deadline Final Assignment
Sat Jun 25, 17:00:
Extended Deadline (-1 pt)

26


EXAM WEEK
Exam: Monday June 27, 13.30
in THEATRON

Retake exam: July 12, 13.30,
in KBG COSMOS

Assignments back to navigation


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.

Download the base code from github.
Formal assignment description: see assignment on Teams.

Deadline: Tuesday May 10, 17:00. Extended deadline (1pt penalty): Wednesday May 11, 17:00.


Assignment P2 - BREADTH FIRST

This assignment involves vectorization. Details will follow later.

Deadline: Tuesday May 24, 17:00. Extended deadline (1pt penalty): Wednesday May 25, 17:00.



Assignment P3 - THE HORDE

This assignment involves GPGPU. Details will follow later.

Deadline: Tuesday June 7, 17:00. Extended deadline (1pt penalty): Wednesday June 8, 17:00.


Assignment P4 - NOT A DRILL

In this final assignment, you will apply all techniques to speed up real-world software. Details will follow.

Deadline: Friday June 24, 17:00. Extended deadline (1pt penalty): Saturday June 25, 17:00.

 

Exam & Grading back to navigation

GRADING

Programming assignments: Your practical grade P is based on three programming assignments P1 (20%), P2 (20%) and P3 (20%) and one final assignment P4 (40%).

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 discussed individually.

 

Literature & Links back to navigation

Overview of literature used during this course:

Links verified on September 5, 2020.


Previous editions