Accessibility statement

Advanced High Performance Computing - PHY00041M

« Back to module search

  • Department: Physics
  • Module co-ordinator: Dr. Richard Evans
  • Credit value: 10 credits
  • Credit level: M
  • Academic year of delivery: 2021-22
    • See module specification for other years: 2022-23

Related modules

Co-requisite modules

  • None

Prohibited combinations

  • None

Module will run

Occurrence Teaching period
A Spring Term 2021-22

Module aims

The aim of this module is to develop your knowledge of High Performance Computing (HPC) in physics and parallel programming skills. The module focuses on advanced parallel programming using Graphics Processing Units (GPUs) and multicore processors and how to match programming methods to the underlying hardware. You will also learn how to take a problem in physics and devise, implement and test a HPC software solution. This module requires previous programming experience in a high performance language (Fortran or C or C++).

Module learning outcomes

At the end of this module successful students will be able to:

  • Design efficient coding solutions to a variety of numerical problems
  • Create a parallel program for an MP machine using threading, message-passing,  and GPU acceleration techniques
  • Apply HPC techniques to solve scientific problems
  • Analyse a scientific problem to determine an appropriate parallelisation strategy
  • Assess the performance and scalability of a parallel code

Module content

Subject content

GPU Programming (GPGPU) and Machine learning

  • High Performance Computing with C++
  • GPU hardware and data transfers
  • Custom compute Kernels and optimisation
  • Introduction to Machine learning

Advanced parallel programming

  • Parallel algorithm design
  • Topology aware parallel programming
  • Parallel Random Number Generation
  • Advanced vectorisation and data linearization
  • Advanced parallel programming with Hybrid OpenMP/MPI/GPGPU
  • Parallel data input and output

HPC software lifecycle and validation

  • Advanced version control
  • Collaborative software development
  • Software development models and structured programming
  • Software testing and validation


Task Length % of module mark
Essay : Advanced High Performance Computing Assignment
N/A 100

Special assessment rules


Additional assessment information

The module will be assessed by a final assignment set at the end of Term 2 featuring an advanced parallel programming challenge where you will analyse a computational problem, devise a suitable parallelisation strategy and implement a parallel code to solve the problem.


Task Length % of module mark
Essay : Advanced High Performance Computing Assignment
N/A 100

Module feedback

Our policy on how you receive feedback for formative and summative purposes is contained in our Department Handbook.

Indicative reading

Full colour copies of the notes will be available on-line after each lecture.

Introduction to High Performance Computing for Scientists and Engineers by Georg Hager and Gerhard Wellein (Chapman and Hall / CRC 2010) **

Writing Scientific Software: A Guide to Good Style by S. Oliveira and D.E. Stewart (Cambridge University Press, 2006)

The information on this page is indicative of the module that is currently on offer. The University is constantly exploring ways to enhance and improve its degree programmes and therefore reserves the right to make variations to the content and method of delivery of modules, and to discontinue modules, if such action is reasonably considered to be necessary by the University. Where appropriate, the University will notify and consult with affected students in advance about any changes that are required in line with the University's policy on the Approval of Modifications to Existing Taught Programmes of Study.