Optimization & Vectorization

Universiteit Utrecht - Information and Computing Sciences

academic year 2023/24 – 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.

Lecturer:

Comms: join us on INFOMOV (Teams).

Lectures:

  • Tuesdays, 13:15 - 15:00 (BOL 0.204)
    Tuesday Q&A: 15:15 - 17:00
  • Thursdays, 10:00 - 11:45 (MIN-2.01)
    Thursday Q&A: 09:15 - 09:45
    Thursday Q&A: 12:00 - 12:45

Lectures will be recorded; recordings will be published with a 1-week delay.

Exam:

  • Monday June 24, in OLYMPUS HALL 3
  • Retake: Monday July 8, in EDUC-ALFA

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.
Safety-net application for assignment 3.

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

Lecture slides:
Will be made available here during the course.

Exams from previous editions of the course:
INFOMOV'16 Final Exam
INFOMOV'17 Final Exam
INFOMOV'18 Final Exam (with answers)
INFOMOV'19 Final Exam (with answers)
INFOMOV'21 Final Exam (with answers)
INFOMOV'22 Final Exam (with answers)
INFOMOV'23 Final Exam (TODO)
There is no INFOMOV'20 exam; between 19 and 20 the course moved from block A to block D.




Course Schedule back to navigation

Period 4 Schedule

Week  Date/Time  Topic & notes
17
Tue Apr 23
  
NO LECTURE
 
Thu Apr 25
10:00-11:45
Lecture 1:
Introduction


18
Tue April 30
13:15-15:00  
Lecture 2:
Low-level
 
Thu May 2
10:00-11:45
Lecture 3:
Profiling


19
Tue May 7
13:15-15:00
Lecture 4:
Caches (1)


Thu May 9
10:00-11:45
NO LECTURE
Ascension Day

Fri May 10, 17:00:
Deadline Assignment 1
Sat May 11, 17:00:
Extended Deadline (-1 pt)
20
Tue May 14
13:15-15:00
Lecture 5:
SIMD (1)


Thu May 16
10:00-11:45
Lecture 6:
Caches (2)


21
Tue May 21
13:15-15:00
NO LECTURE


Thu May 23
10:00-11:45
Lecture 7:
SIMD (2)


22
Tue May 28
13:15-15:00
Lecture 8:
GPGPU (1)


Thu May 30
10:00-11:45
Lecture 9:
Data Oriented Design
Fri May 31, 17:00:
Deadline Assignment 2
Sat June 1, 17:00:
Extended Deadline (-1 pt)
23
Tue Jun 4
13:15-15:00
Lecture 10:
GPGPU (2)

 
Thu Jun 6
10:00-11:45
Lecture 11:
Fixed Point


24
Tue Jun 11
13:15-15:00
Lecture 12: GUEST LECTURE
Manon Oomen / Traverse

 
Thu Jun 13
10:00-11:45
Lecture:
Assignment Q&A only.
 
25
Tue jun 18
13:15-15:00
Lecture 13:
Recap, exam prep
Wed June 19, 17:00:
Deadline Assignment 2
 Thu Jun 20, 17:00:
Extended Deadline (-1 pt)






26


EXAM WEEK
       &
RETAKE WEEK EVENTS
Exam: Monday June 24, 13.30 - 15:30
in OLYMPUS HALL 3

Retake: Monday July 8, 13:30 - 15:30
in EDUC-ALFA



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 formal assignment description here.

Deadline for this assignment: Friday May 10, 17:00.


Assignment P2 - BREADTH FIRST

For this assignment you will create your own cache simulator.

Download the formal assignment description here.

Deadline for this assignment: Friday May 31, 17:00.


Assignment P3 - NOT A DRILL

For the final assignment, you will optimize an application that you chose using the structured optimization process.

Download the formal assignment description here. Download the 'safetynet' application by clicking here.

Deadline for this assignment: Wednesday June 19, 17:00.

 

Exam & Grading back to navigation

GRADING

Programming assignments: Your practical grade P is based on three programming assignments P1 (25%), P2 (25%) 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. Additional requirement: You must score at least 4.0 for the exam (before rounding) 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