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

Registration (closed)

Register for the course via Microsoft Teams.

Prerequisites

  • Programming experience with C++
  • CMake
  • Git

Course Schedule

DateTopicExercise
2020-11-03Introduction, Evolution of GPU Programming
2020-11-10The CUDA Programming Model
2020-11-12Assignment 1, Q&A
2020-11-17The CUDA API
2020-11-24Parallel Programming PatternsA 1
2020-11-26Development Environment, Q&A
2020-12-01Memory HierarchyA 2
2020-12-03Assignment 2, Toolchain, Q&A
2020-12-08Performance Optimization Case StudyA 3
2020-12-10Assignment 3, Debugging, Q&A
2020-12-15Hardware SchedulingA 4
2020-12-17Assignment 4, Q&A
Christmas Break
2021-01-12Advanced Programming Techniques
2021-01-14Q&A
2021-01-19Related Programming Models
2021-01-21Q&A
2021-01-26AnyDSL Compiler Framework
2021-01-28Q&A
2021-02-02Q&A
2021-02-04Exam Preparation, Q&A
2021-02-16Exam

Assignments

The assignments will be posted in Microsoft Teams.

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

The written exam will take place on 16.02.2021 in GHH.

Grading

10% Performance Competition
50% Assignments
40% Exam

Performance Competition

The Performance Competition is a final showcase of how the GPU knowledge that was acquired throughout the course can be used to accelerate the implementation of the last assignment. The top-performing submissions will be awarded with bonus points.

Literature

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