GPU Programming

GPUs have evolved from a fixed pipeline graphics processing hardware into powerful programmable co-processing units capable of performing general purpose computing (sometimes referred to as GPGPU or General Purpose Computing on GPUs). In comparison with traditional CPU systems a GPU is capable of far higher (theoretical) peak performance within a smaller power window and as such many of the Top 500 supercomputers use GPU architectures.

This course will introduce the background of GPU hardware and common methods for programming GPUs. It will also introduce optimisation of GPU programs.

This course is free to all academics.

Intended learning outcomes

On completion of this course students should be able to:

  • Understand the GPU hardware.
  • Understand and use common methods for programming GPUs.
  • Optimise GPU applications.
  • Use GPU programming directives.
  • Use GPU libraries.


Students should be familiar with C, C++ or Fortran


Details are subject to change, but start, end and break times will stay the same.

Day 1

  • 09.30 LECTURE: Introduction.
  • 09.45 LECTURE: GPU Architecture.
  • 10.15 LECTURE: Programming GPUs with CUDA.
  • 11.00 PRACTICAL: Your first CUDA code.
  • 12.15 BREAK: Lunch
  • 13.15 LECTURE: GPU Optimisation.
  • 13.45 PRACTICAL: Optimising a CUDA Application.
  • 16.30 Close.

Day 2

  • 09.30 LECTURE: Programming GPUs with OpenCL.
  • 10.00 LECTURE: Programming GPUs with Directives.
  • 10.45 LECTURE: GPU Libraries.
  • 11.15 PRACTICAL: Choice of practical.
    • OpenCL
    • Direcives
    • GPU Libraries
  • 12.15 BREAK: Lunch.
  • 13.15 Choice of practical (cont.).
  • 16.30 Close.


Please use the registration page to register for ARCHER courses.


If you have any questions please contact the ARCHER Helpdesk.