GPU Programming (Prof Karen Bradshaw)

Although graphics processing units (GPUs) are well known for their use in rendering images, their power for general parallel computing has only been explored in the past few years. With the increased availability of parallel frameworks, programming models, and development tools, however, GPUs have developed into flexible processors that typically outperform CPUs in the parallel computation of many problems.

This course covers the fundamentals of parallel computing using both OpenACC and the CUDA parallel programming model. OpenACC pragmas are introduced first as these enable acceleration of sequential code with only minor modifications, on both GPUs and multi-core CPUs.

The remainder of the course focuses on basic CUDA commands and syntax, the use of CUDA libraries, and relevant optimizations specific to the architecture of the GPUs being used. Practical labs focusing on applications in graphics, simulations, physics, and other topics complement the programming concepts and techniques introduced in the lectures.


Competence in C/C++ programming and an independent work ethic are vital as the module is based on multiple hands-on assignments to understand the concepts.

Last Modified: Mon, 03 May 2021 11:18:08 SAST