Department of Information and Computing Sciences

Departement Informatica Onderwijs
Bachelor Informatica Informatiekunde Kunstmatige intelligentie Master Computing Science Game&Media Technology Artifical Intelligence Business Informatics

Onderwijs Informatica en Informatiekunde

Vak-informatie Informatica en Informatiekunde

Optimization and vectorization

Website:website containing additional information
Course code:INFOMOV
Credits:7.5 ECTS
Period:period 1 (week 36 through 45, i.e., 5-9-2016 through 11-11-2016; retake week 1)
Participants:up till now 67 subscriptions
Schedule:Official schedule representation can be found in Osiris
Teachers:Dit is een oud rooster!
lecture   Mon 9.00-10.4537-44 BBG-161 Jacco Bikker
Mon 10.00-11.4537 BBG-169
Mon 11.00-12.4538-44 BBG-169
Wed 9.00-10.4538-40 BBG-023
41 BBG-209
42-44 BBG-023
Wed 11.00-12.4537-44 BBG-223
Contents:Writing high-performance applications and increasing the performance of existing applications is a rewarding process, that typically yields improvements of 10x or more. In this course, a structured approach to program optimization is presented. The main factors that determine program performance are:
  • Algorithm efficiency;
  • The memory / cache hierarchy;
  • Thread-level and instruction-level parallelism (vectorization), including SIMD.
These will be explored in detail, in a practical, hands-on manner.
The focus will be on CPU code, but optimization using GPUs and GPU performance characteristics will be covered as well.
Important: the nature of this course requires that we use C++, and we will do so in a low-level way.

Visit the course website for more information.
Literature:To be determined.
Course form:This course consists of lectures and workshops.
Exam form:This course will be graded using three practical assignments and a written exam. The practical grade P and the exam grade T are combined as follows:

final grade = (2P + T) / 3

where P is calculated as (P1 + P2 + P3 * 2) / 4.

Repairing the final grade requires a final grade of at least a 4.0 (before rounding). Repairing is not allowed if you passed the course. To repair, you may redo one practical assignment, or the exam.
Minimum effort to qualify for 2nd chance exam:To partake in the 2nd chance exam, your grade must be at least 4.0 (before rounding), and you must have failed the course.
Description:At the end of this course, the student
  • knows how to profile application code;
  • knows about high-level and low-level optimizations;
  • knows how to optimize an application in a structured and time-efficient manner;
  • is able to find, select, and apply algorithms with reduced algorithmic complexity;
  • understands the impact of memory latency on performance;
  • understands the role and workings of modern cache architectures;
  • knows the concept of SIMD and is able to apply this to existing code;
  • is able to apply low-level optimizations;
  • has a basic understanding of GPGPU and knows how to offload work to the GPU;
  • understands the GPU memory hierarchy and its effect on application performance;
  • is able to accurately report on the optimization process upon completion.