HPC 5: Introduction to GPU programming with CUDA

Workshop content

In this workshop, you will learn the fundamentals of parallel computing with GPUs and the CUDA programming environment.

Our latest HPC cluster (ARC3) has 24 NVIDIA P100 GPUs and 4 NVIDIA K80 GPUs which can be used to run existing code optimised for GPUs, run new code developed using the CUDA or OpenCL programming models or to run applications on top of GPU optimised frameworks, such as machine learning or deep learning models (these will be the subject of a future workshop).

Programming examples in this workshop will be in C with some later examples in Python.

This will be a hands-on workshop and activities will cover:

  • An introduction to the GPU hardware model
  • Multithreading and the concept of the ‘Streaming Multiprocessor
  • GPU memory and launching CUDA kernels
  • CUDA C programming examples with vectors and matrices
  • Hints and tips to CUDA parallelise existing serial code
  • Optimising code
  • PyCUDA: CUDA programming for Python

Prerequisites

We recommend that attendees have a working knowledge of the Unix shell, some ability to program in C and Python and can compile C and Fortran codes.

This is NOT an introductory programming course. If you need to learn how to program, please attend one of the SWD1 programming courses (C, Fortran or Python options are available).

Duration

one day

Frequency

This workshop usually runs twice each academic year.