Date:

The main goal of the course is to introduce how to program GPU-accelerated applications using CUDA programming.  

We will describe the main principles of heterogeneous or accelerated computing (with a short hardware description of the GPU-accelerated supercomputers) needed to properly understand how to design CUDA code.

The course is designed for beginners in GPU programming using CUDA. It will explain how the parallelisation is done with basic examples, how data transfers are managed between CPU and GPU memory, what types of memory there are in GPU and how to use them, how the parallel threads are executed, and finally, we will explain several key parallel computing patterns in CUDA.

As the course will use the Karolina supercomputer, we will also demonstrate how to write single and multi-GPU applications.