Overview

This course provides an introduction to CUDA and programming parallel hardware architectures like todays GPUs. We will show how to program with CUDA and what problems can be solved efficiently with modern GPUs. The discussed algorithms are not necessarily related to Computer Graphics. The course will be accompanied by practical exercises and the students will have to work on a small project to pass.

The format of the course will change mid-way through the term. Two-hour lectures and one-hour tutorials will be replaced by practical work on larger projects. The course focuses entirely on parallel programming on modern GPUs. CUDA will be used to implement all practical assignments which will include common parallel primitives like parallel prefix sum, parallel reduction, and parallel sorting algorithms (e.g. radix sort). In addition to the training material available from NVIDIA and other sources, we will also use some of the recent scientific papers for up-to-date results and programming methods.

Instructors

Teaching Assistants

Language

English

Pre-requisites

  • Programming experience with C++

Registration

Register for the course via the LSF online system.

Tutorials

TBA

Assignments

The assignments will be posted under the course schedule.

The projects are expected to compile and work out of the box on the machines in the CIP-pool students’ lab in order to give the tutors a guaranty that the code will run on machines that both them and the students have access to.

Exams

TBA

Grading

TBA

Course Schedule

Date Lecture - Instructor Slides Videos Assignments

Performance Competition

TBA

Literature

The course does not follow a particular book, but suggested readings include:

  • David Kirk and Wen-Mei Hwu, Programming Massively Parallel Processors: A Hands-on Approach, 3rd Edition, Morgan Kaufmann, 2016
  • CUDA C Programming Guide, available online