PX4257.5 High Performance Computing in Physics
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 aims
To continue your training in the use of computers by exploring the use of supercomputers. The module should teach how to write scalable, portable programs for parallel computer systems and explore how largescale physics problems are tackled.
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. Modern cache architectures and CPU pipelining. Avoiding expensive and repeated operations. Compiler optimisation flags. Profiling with gprof.
Introduction to parallel computing. Modern HPC hardware and parallelisation strategies. Applications in Physics, super problems need supercomputers.
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. Pointtopoint and collective communication. Synchronous vs asynchronous communication. MPI communicators and topologies.
GPU programming. CUDA vs OpenCL. Kernels and hostdevice 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 manycore architectures. Mixed mode OpenMP+MPI programming.
Learning outcomes
By the end of the module, students should be able to:
 Use visualisation libraries and desktop visualisation tools; be able to write a scientific application with a graphical user interface, using a toolkit
 Write a parallel program using sharedmemory or message passing constructs, for physics applications
 Explain the concepts underlying Grid computing and escience, and discuss their general areas of applicability.
Indicative reading list
R Chandra et al, Parallel Programming in OpenMP (Morgan Kaufmann, 2000)
P Pacheco, Parallel Programming with MPI (Morgan Kaufmann, 1996)
M Quinn, Parallel Programming in C with MPI and OpenMP (McGrawHill, 2003)
D Kirk and W Hwu, Programming Massively Parallel Processors (Elsevier, 2010)
View reading list on Talis Aspire
Subject specific skills
Skills in computermodelling, reasoning, thinking. Knowledge of mathematics and physics
Transferable skills
Analytical, communication, computing and general IT, problemsolving, selfstudy
Study time
Type  Required 

Lectures  15 sessions of 1 hour (20%) 
Demonstrations  5 sessions of 2 hours (13%) 
Private study  50 hours (67%) 
Total  75 hours 
Private study description
Working through lecture notes, formulating problems, writing and testing code, discussing with others taking the module, preparing and submitting coursework
Costs
No further costs have been identified for this module.
You do not need to pass all assessment components to pass the module.
Assessment group A1
Weighting  Study time  

Coding assignments  100%  
Test computing skills 
Feedback on assessment
General feedback addressing common issues arising out of assignments will be given in lectures. Feedback on individual submissions will be given electronically via a web page with customised content for each student.
Courses
This module is Optional for:

TMAAG1PE Master of Advanced Study in Mathematical Sciences
 Year 1 of G1PE Master of Advanced Study in Mathematical Sciences
 Year 1 of G1PE Master of Advanced Study in Mathematical Sciences
 Year 1 of G1PE Master of Advanced Study in Mathematical Sciences
 Year 1 of TMAAG1P9 Postgraduate Taught Interdisciplinary Mathematics
 Year 1 of TMAAG1P0 Postgraduate Taught Mathematics
 Year 1 of TMAAG1PC Postgraduate Taught Mathematics (Diploma plus MSc)
 Year 1 of TPXAF344 Postgraduate Taught Modelling of Heterogeneous Systems
 Year 2 of TPXAF345 Postgraduate Taught Modelling of Heterogeneous Systems (PGDip)
 Year 4 of UPXAF304 Undergraduate Physics (BSc MPhys)
 Year 4 of UPXAF303 Undergraduate Physics (MPhys)
This module is Option list A for:
 Year 1 of TMAAG1P0 Postgraduate Taught Mathematics
 Year 3 of UMAAG100 Undergraduate Mathematics (BSc)
 Year 4 of UMAAG101 Undergraduate Mathematics with Intercalated Year
This module is Option list B for:
 Year 1 of TPXAF345 Postgraduate Taught Modelling of Heterogeneous Systems (PGDip)
 Year 4 of UPXAFG33 Undergraduate Mathematics and Physics (BSc MMathPhys)
 Year 4 of UPXAFG31 Undergraduate Mathematics and Physics (MMathPhys)
This module is Option list C for:

UMAAG105 Undergraduate Master of Mathematics (with Intercalated Year)
 Year 3 of G105 Mathematics (MMath) with Intercalated Year
 Year 5 of G105 Mathematics (MMath) with Intercalated Year

UMAAG103 Undergraduate Mathematics (MMath)
 Year 3 of G103 Mathematics (MMath)
 Year 4 of G103 Mathematics (MMath)

UMAAG106 Undergraduate Mathematics (MMath) with Study in Europe
 Year 3 of G106 Mathematics (MMath) with Study in Europe
 Year 4 of G106 Mathematics (MMath) with Study in Europe