Optimization & Vectorization

Universiteit Utrecht - Information and Computing Sciences

academic year 2020/21 – 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

        IMPORTANT: This website contains
        STATIC INFORMATION.

        For news, announcements, and other live info:
    Join us on TEAMS!


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, 10:00h - 11:45h, in Teams
    Monday Working Lecture PART 1: 09:00 - 09:45
    Monday Working Lecture PART 2: 12:00 - 12:45
  • Wednesdays, 10:00h - 11:45h, in Teams
    Wednesday Working Lecture PART 1: 09:00 - 09:45
    Wednesday Working Lecture PART 2: 12:00 - 12:45

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.


Files back to navigation

Downloads

Fundamentals:
Cross-platform version of the C/C++ template used in the course, 2019 edition (v2, checked and ready for 2021).
OpenCL template for the GPGPU lectures (updated 2019 edition, checked and ready for 2021).
OpenCL template for those that prefer C# (2018 edition, may get an update, probably won't).

Practice / demonstration materials:
Will be made available during the course - in 2021, look for them in Teams!

OptmzdSummaries™:
These will be uploaded during the course - in 2021, look for them in Teams!


Additional resources will be made available during the course.



Course Schedule back to navigation

Period 4 Schedule (tentative)

Week Lecture / Exams Notes
17
Mon Apr 26
09:00-12:45  
Lecture 1:
Introduction
 
Wed Apr 28
09:00-12:45
Lecture 2:
Low-level


18
Mon May 3
09:00-12:45  
Lecture 3:
Profiling
 
Wed May 5
09:00-12:45
NO LECTURE


19
Mon May 10
09:00-12:45
Lecture 4:
Caches (1)
Mon May 10, 17:00:
Deadline Assignment 1
Tue May 11, 17:00:
Extended Deadline (-1 pt)
Wed May 12
09:00-12:45
Lecture 5:
SIMD (1)


20
Mon May 17
09:00-12:45
Lecture 6:
GPGPU (1)


Wed May 19
09:00-12:45
Lecture 7:
Caches (2)


21
Mon May 24
09:00-12:45
NO LECTURE


Wed May 26
09:00-12:45
Lecture 8:
SIMD (2)
Fri May 28, 17:00:
Deadline Assignment 2
Sat May 29, 17:00:
Extended Deadline (-1 pt)

22
Mon May 31
09:00-12:45
Lecture 9:
GPGPU (2)


Wed Jun 2
09:00-12:45
Lecture 10:
GPGPU (3)


23
Mon Jun 7
09:00-12:45
Lecture 11:
Data Oriented

 
Wed Jun 9
09:00-12:45
Lecture 12:
Fixed Point


24
Mon Jun 14
09:00-12:45
Lecture 13:
Cache-oblivious

 
Wed Jun 16
09:00-12:45
Lecture 14:
Freestyle
 
25
Mon jun 21
09:00-12:45
Lecture 15:
Recap, exam practice

 
Wed Jun 23
09:00-12:45
NO LECTURE
Fri Jun 25, 17:00:
Deadline Final Assignment
Sat Jun 26, 17:00:
Extended Deadline (-1 pt)

26, 28


EXAM WEEK
Exam: July 1, 8.45am
Retake exam: July 15, 8.45am

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 - LOW LEVEL

For this assignment you will apply low-level optimization to a graphical application. Details will follow later.

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


Assignment P2 - CACHING

This assignment involves caching. Details will follow later.

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


Assignment P3 - NOT A DRILL

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

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

 

Exam & Grading back to navigation

GRADING

Programming assignments: Your practical grade P is based on two programming assignments P1 (20%), P2 (30%) 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.

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.


Previous editions