Skip to main content Skip to navigation

PX457-15 High Performance Computing

Undergraduate Level 4
Module leader
Nicholas Hine
Credit value
Module duration
15 weeks
100% coursework
Study location
University of Warwick main campus, Coventry
Introductory description

The module will address the increased use of computer simulation and data analysis on high performance computers in all fields of computational physics and other sciences. Computing skills are greatly valued across science and beyond and we encourage students to go as far as they can to develop such skills.

Module web page

Module aims

To explain the methods used in computer simulations and data analysis on high performance computers, for research in all fields of computational physics and other sciences.

Outline syllabus

This is an indicative module outline only to give an indication of the sort of topics that may be covered. Actual sessions held may differ.

Programming for efficiency. What does a compiler do that an interpreter cannot? The mechanics of linking C and Python. Modern cache architectures and CPU pipelining. Avoiding expensive and repeated operations. Compiler optimisation flags.

Introduction to parallel computing. Modern HPC hardware and parallelisation strategies. Analysing algorithms and codes to identify opportunities for parallelism.

Shared memory programming. The OpenMP standard. Parallelisation using compiler directives. Threading and variable types. Loop and sections constructs. Program correctness and reproducibility. Scheduling and false sharing as factors influencing performance.

Distributed memory programming. The MPI standard for message passing. Point-to-point and collective communication. Synchronous vs asynchronous communication. MPI communicators and topologies.
GPU programming. CUDA vs OpenCL. Kernels and host-device communication. Shared and constant memory, synchronicity and performance. GPU coding restrictions.

Limitations to parallel performance. Strong vs weak scaling. Amdahl’s law. Network contention in modern many-core architectures. Mixed mode OpenMP+MPI programming.

“Big Data” in physics: handling very large datasets. Examples derived from astronomy and particle physics.

Learning outcomes

By the end of the module, students should be able to:

  • Identify and correct common inefficiencies in both serial scientific computer codes
  • Write a parallel program using shared-memory or message passing constructs in a physics context, and to write a simple GPU accelerated program
  • Choose an appropriate programming paradigm and identify sources of performance bottlenecks and parallelisation errors in parallel computer programs and understand how these relate to the computer architecture
  • Process very large datasets with appropriate tools, and use machine-learning to efficiently extract simple functional forms describing sparse data
Indicative reading list

R Chandra et. al,. Parallel Programming in OpenMP , Morgan Kaufmann, P Pacheco, Parallel Programming with MPI Morgan Kaufmann
M Quinn, Parallel Programming in C with MPI and OpenMP McGraw-Hill
D Kirk and W Hwu, Programming Massively Parallel Processors Elsevier

View reading list on Talis Aspire

Subject specific skills

Knowledge of mathematics and physics. Skills in modelling, reasoning, thinking.

Transferable skills

Analytical, communication, problem-solving, self-study

Study time

Type Required
Lectures 30 sessions of 1 hour (20%)
Private study 120 hours (80%)
Total 150 hours
Private study description

Working through lecture notes, formulating problems, writing and testing code, discussing with others taking the module, preparing and submitting coursework


No further costs have been identified for this module.

You must pass all assessment components to pass the module.

Assessment group A
Weighting Study time
Assessed Computing Assignments 100%

Submission of Computer Codes

Feedback on assessment

Personal tutor, group feedback


This module is Optional for:

  • Year 1 of TMAA-G1P0 Postgraduate Taught Mathematics
  • Year 1 of TMAA-G1PC Postgraduate Taught Mathematics (Diploma plus MSc)
  • Year 1 of TESA-H1B1 Postgraduate Taught Predictive Modelling and Scientific Computing
  • Year 4 of UPXA-F303 Undergraduate Physics (MPhys)

This module is Option list A for:

  • UMAA-G100 Undergraduate Mathematics (BSc)
    • Year 3 of G100 Mathematics
    • Year 3 of G100 Mathematics
    • Year 3 of G100 Mathematics
  • Year 3 of UMAA-G103 Undergraduate Mathematics (MMath)
  • Year 4 of UMAA-G101 Undergraduate Mathematics with Intercalated Year

This module is Option list B for:

  • UPXA-FG31 Undergraduate Mathematics and Physics (MMathPhys)
    • Year 4 of FG31 Mathematics and Physics (MMathPhys)
    • Year 4 of FG31 Mathematics and Physics (MMathPhys)

This module is Option list C for:

  • UMAA-G105 Undergraduate Master of Mathematics (with Intercalated Year)
    • Year 4 of G105 Mathematics (MMath) with Intercalated Year
    • Year 5 of G105 Mathematics (MMath) with Intercalated Year
  • UMAA-G103 Undergraduate Mathematics (MMath)
    • Year 3 of G103 Mathematics (MMath)
    • Year 3 of G103 Mathematics (MMath)
    • Year 4 of G103 Mathematics (MMath)
    • Year 4 of G103 Mathematics (MMath)
  • Year 4 of UMAA-G106 Undergraduate Mathematics (MMath) with Study in Europe