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., 4-9-2017 through 10-11-2017; retake week 1)
Timeslot:A
Participants:up till now 52 subscriptions
Schedule:Official schedule representation can be found in Osiris
Teachers:
formgrouptimeweekroomteacher
lecture   Mon 9.00-12.4537-44 BBG-165 Jacco Bikker
 
Wed 9.00-12.4537-44 BBG-165
Exam:
week: 45Tue 7-11-201717.00-20.00 uurroom: BEATRIX-7E ETAGE
week: 1Tue 2-1-201817.00-20.00 uurroom: RUPPERT-Cretake exam
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:Online materials and (electronic) readers.
Course form:This course consists of lectures and workshops.
Exam form:This course will be graded using four 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 (P1 + P2 + P3 + 2 * P4) / 5.

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: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.
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.
wijzigen?