COM4521 Parallel Computing with GPUs

Course Information

Accelerator architectures are discrete processing units which supplement a base processor with the objective of providing advanced performance at lower energy cost. Performance is gained by a design which favours a high number of parallel compute cores at the expense of imposing significant software challenges. This module looks at accelerated computing from multi-core CPUs to GPU accelerators with many TFlops of theoretical performance. The module will give insight into how to write high performance code with specific emphasis on GPU programming with NVIDIA CUDA GPUs. A key aspect of the module will be understanding what the implications of program code are on the underlying hardware so that it can be optimised.

This module is an on-demand version of Com4521 based on the 2021 year when I last delivered the course. The current undergraduate taught course is available on the modules public teaching page.

Course Material

Lectures are pre-recorded and are available on the COM4521 Parallel Computing with Graphical Processing Units Kaltura Channel or as downloadable pdfs on Google Drive. Each weeks practical activities (the labs) follow the ideas presented in the lectures so it is important that you follow the lecture and lab timetable below.

Week 01

Lecture 01 - Introduction

Lecture 02 - Introduction to C

Lab 01 - Introduction to Visual Studio and C Programming

Week 02

Lecture 03 - Memory

Lecture 04 - Optimisation

Lab 02 - Memory and Performance

Week 03

Lecture 05 - OpenMP

Lecture 06 - OpenMP Part II

Lab 03 - OpenMP

Week 04

Lecture 07 - GPU Architectures

Lecture 08 - Introduction to CUDA

Lab 04 - Introduction to CUDA

Week 05

Lecture 09 - CUDA Memory

Lab 5 - CUDA Memory

Week 6

Lecture 10 - CUDA Shared Memory

Lecture 11 - CUDA Performance

Lab 6 - Shared Memory

Week 7

Lecture 12 - Warp Level CUDA

Lecture 13 - Parallel Patterns

Lab 07 - Atomics and Primitives

Week 8

Lecture 14 and 15 - Performance Optimisation

Lab 08 - Profiling Example

Week 9

Lecture 16 - Sorting and Libraries

Lecture 17 - CUDA Streams

Lab 09 - Libraries and Streams

Week 10

Please Find below a list of previous invited guest lectures