Introduction to GPUs#
Overview#
Welcome to the Introduction to GPU Programming course! This course has been designed to give you a practical foundation in GPU computing for scientific and technical applications. You will learn the essential concepts of GPU architectures, explore how to run code on modern accelerators, and develop hands-on skills in managing environments, running jobs on HPC systems, and optimising performance. The focus will be on applying these skills through guided exercises and projects in numerical modelling and simulation.
Course Objectives#
Understand the fundamental principles of GPU architectures and parallel programming models.
Configure and manage software environments for GPU computing using Spack.
Submit and manage GPU-enabled jobs on HPC systems with Slurm.
Diagnose performance bottlenecks using profiling tools, and apply strategies for performance optimisation.
Implement GPU-accelerated numerical models, such as a temperature diffusion solver.
Apply knowledge to a capstone project, extending Conway’s Game of Life to explore GPU performance, scalability, and custom extensions.
Pre-requisite Knowledge#
An account on ISCA
Attended Introduction to HPC or equivalent experience.
Attended Introduction to UNIX or equivalent experience.
Attended Introduction to Python or equivalent experience.
Resources#
The job submission scripts specifically configured for use on the University of Exeter ISCA HPC system are available here.
General-purpose job submission scripts, which can serve as a starting point for use on other HPC systems (with minor modifications required for this course), are available here.
The Python scripts used in this course can be downloaded here.
All supplementary files required for the course are available here.
The presentation slides for this course can be accessed here.