Department of Information and Computing Sciences

Departement Informatica Onderwijs
Bachelor Informatica Informatiekunde Kunstmatige intelligentie Master Computing Science Game&Media Technology Artifical Intelligence Human Computer Interaction 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 4 (week 17 through 26, i.e., 26-4-2021 through 2-7-2021; retake week 28)
Participants:up till now 43 subscriptions
Schedule:Official schedule representation can be found in MyTimetable
lecture          Dionysis Alexandridis
Jacco Bikker
Contents:WARNING: despite what it says above, this course actually will be scheduled for timeslot A!

Main communication channel for this course is TEAMS. Join the INFOMOV team today!

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:Online materials and (electronic) readers.
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 = (3P + T) / 4

where P is calculated as 0.2 * P1 + 0.3 * P2 + 0.5 * P3.

To pass the course, your final grade must be 5.5 or better, and your exam grade must be at least 4.0 (before rounding).

Minimum effort to qualify for 2nd chance exam:Om aan de aanvullende toets te mogen meedoen moet de oorspronkelijke uitslag minstens 4 zijn.
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.