GPU Computing - Architecture and Programming (GPU)

Course Overview

Modern GPUs are powerful, massively-parallel high-core-count processors. They are no longer used solely for graphics applications, but also accelerate computationally intensive general-purpose tasks. In this course, we will look in detail at the GPU’s internal architecture, the differences to general-purpose processors like CPUs, and how to program GPUs. Powerful GPUs are available for exercises and experiments.

The following key questions guide this course’s content:

  1. How do GPUs differ from CPUs and why is this inline with CMOS technology scaling?
  2. How to write fast GPU code, i.e. which performance bugs exist and how to avoid them?
  3. Performance analysis of GPU code

As GPUs are the workhorse behind deep neural networks, this course nicely complements the contents of Embedded Machine Learning.

Lecturer (current)

Contents

  • GPU architecture
  • CUDA programming
  • Scheduling/code/shared memory optimizations
  • Introduction to multi-GPU programming
  • Advanced GPU architecture
  • Review of alternatives with regard to massively parallel processors and programming models

Requirements

Recommended is solid knowledge of C/C++ and the basics of computer architecture.

Notes

  • Frequency: winter term
    • Next edition of this course is scheduled for winter 2024/25
  • Among others, course qualifies for the following programs (please double-check listing within heiCO and possible specialization constraints)
  • Course start: Oct 22, 14:00
  • Room is OMZ/INF350 basement, U014. Enter the building from the east. If you don’t see a ZITI sign when entering, you might be at the wrong entrance.
  • Moodle has unrestricted enrollment. Course participation is determined by heiCO.

Link to moodle