HPC3: Computer architectures and shared memory parallel programming

Booking for this course is through the IT Training Unit. Click here to book

Workshop content

This workshop is designed for HPC users who already write or develop codes to give an overview of the hardware and infrastructure that code runs on and how design choices can affect how efficiently code runs. Following this introduction, the workshop will give an introduction to the OpenMP parallel programming model and give hands on practice developing and adapting code to run on shared memory machines. The second part of the workshop is designed for those users who already have experience of using (and perhaps developing) sequential code in C or Fortran and would like to examine the benefits of applying the OpenMP model to parallelise their code. No previous experience of developing parallel code is expected, but familiarity with Fortran or C would be very useful as would the ability to use Linux and the batch scheduler on the HPC service.

At the end of the workshop, attendees will be able to:

  • Understand the structure of a typical single core and multicore CPU

  • Understand the building blocks of a typical HPC cluster

  • Have an overview of how compilers create executable code from source code

  • Understand the concepts of memory bandwidth and NUMA (non-uniform memory architecture)

  • Recall the syntax of the OpenMP API

  • Determine parallel and serial regions of a code (ie. what can and can’t be parallelised)

  • Understand and apply the need for shared and private data

  • Avoid data access conflicts

  • Write, compile and run simple OpenMP programs


Attendees should have some experience of using HPC services, such as through attending the  HPC 1: Introduction to High Performance Computing at Leeds and be able to program in Fortran or C at an intermediate level (most of the teaching will use Fortran but examples will be in both languages). It is not an introductory programming workshop. You will be expected to know how to program in a modern programming language.


1 day


This course will usually run at least twice each academic year.

If you would like a bespoke version of this course run in your department then please contact us.


All research staff and students.