Optimization & Vectorization

Universiteit Utrecht - Information and Computing Sciences

academic year 2022/23 – 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:

  • Mondays, 13:15 - 15:00 (BBG-209)
    Monday Working Lecture: 15:15 - 17:00 (DALTON 500 - 6.27)
  • Thursdays, 10:00 - 11:45 (BBG-106)
    Thursday Q&A: 09:15 - 09:45 (BBG-106)
    Thursday working lecture: 12:00 - 12:45 (BBG-106)

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.

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

Lecture slides:


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)
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 Lecture / Exams Notes
17
Mon Apr 24
  
NO LECTURE
 
Thu Apr 27

KING'S DAY


18
Mon May 1
13:15-15:00  
Lecture 1:
Introduction
 
Thu May 4
10:00-11:45
Lecture 2:
Low-level


19
Mon May 8
13:15-15:00
Lecture 3:
Profiling


Thu May 11
10:00-11:45
Lecture 4:
SIMD (1)
Fri May 12, 17:00:
Deadline Assignment 1
Sat May 13, 17:00:
Extended Deadline (-1 pt)
20
Mon May 15
13:15-15:00
Lecture 5:
GPGPU (1)


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


21
Mon May 22
13:15-15:00
Lecture 6:
GPGPU (2)


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


22
Mon May 29
13:15-15:00
NO LECTURE - White Monday


Thu Jun 1
10:00-11:45
Lecture 8:
Caches (1)
 
23
Mon Jun 5
13:15-15:00
Lecture 9:
GPGPU (3)

 
Thu Jun 8
10:00-11:45
Lecture 10:
Caches (2)
Fri June 9, 17:00:
Deadline Assignment 2
Sat June 10, 17:00:
Extended Deadline (-1 pt)
24
Mon Jun 12
13:15-15:00
Guest lecture 1: Manon Oomen / Traverse Research

 
Thu Jun 15
10:00-11:45
Lecture 11:
Fixed Point
 
25
Mon jun 19
13:15-15:00
Guest lecture 2: TBD

 
Thu Jun 22
10:00-11:45
Lecture 13:
Recap
  Sat Jun 24, 17:00:
Extended Deadline (-1 pt)

26


EXAM WEEK
       &
RETAKE WEEK EVENTS:
Exam: Monday June 26, 13.30 - 15:30
in EDUC-GAMMA


new Deadline Final Assignment:
Wed Jun 28, 17:00, and Jun 29, 17:00 (-1pt)
Retake exam: Monday July 10, 13.30,
in KBG COSMOS

Retake assignment deadline:
Wednesday July 12, 17:00 (no ext!)


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 formal assignment description and the project files.

Deadline: Friday May 12, 17:00. Extended deadline (1pt penalty): Saturday May 13, 17:00.


Assignment P2 - BREADTH FIRST

Download the formal assignment description and the project files.

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



Assignment P3 - NOT A DRILL

Formal assignment description will be made available.
DRAFT ASSIGNMENT doc for early starters is available on Teams.

Projects to consider for P3:

Deadline: Wednesday June 28, 17:00. Extended deadline (1pt penalty): Thursday June 29, 17:00.


The deadline for the RETAKE ASSIGNMENT, should you need it, is: Wednesday July 12. IMPORTANT: Due to the tight end-of-year schedule, the usual 1 day late regulation does not apply for the retake assignment. Make sure you hand in your work before 17:00 on June 29; anything arriving after that time can not be graded.

 

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