Advanced Computational Physics - PHY00031M

« Back to module search

  • Department: Physics
  • Module co-ordinator: Prof. Matt Probert
  • Credit value: 20 credits
  • Credit level: M
  • Academic year of delivery: 2019-20

Related modules

Pre-requisite modules

  • None

Co-requisite modules

  • None

Prohibited combinations


Module will run

Occurrence Teaching cycle
A Autumn Term 2019-20 to Spring Term 2019-20

Module aims

The aim of this module is to introduce you to the key ideas of High Performance Computing (HPC) in physics. The first half will show how the historical developments in HPC have come about, how these impact on current technologies, how best to utilize these technologies for numerically intensive calculations, and what future developments are likely. The second half of the module focuses on applications of HPC to scientific problems, and aims to show how to take a problem in physics and devise, implement and test a HPC software solution.

This module presumes that you already have a basic programming ability in (at least one of) Fortran or C or C++. We will NOT be teaching the basics of programming - this is a practical module in which your programming skills will be developed with a focus on speed of execution, both in serial and parallel programming. 
 

Module learning outcomes

Subject content

Term 1 - HPC

Hardware

  • Introduction to hardware for a typical computer
  • Introduction to networks

Software

  • Benchmarking
  • Computer languages
  • Floating point numbers
  • Introduction to programming
  • Use of tools in programming
  • Use of software profiling

Coding

  • Optimizing a serial program
  • Introduction to parallel programming - how to think parallel
  • Writing a parallel program using OpenMP
  • Introduction to GPU programming
  • Writing a parallel program using MPI
  • Example applications

Summary

  • Current state-of- the-art supercomputers
  • Future possibilities

Term 2 - HPC Applications

HPC software lifecycle and validation

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

Advanced parallel programming

  • Topology aware parallel programming
  • Parallel Random Number Generation
  • GPU Programming (GPGPU)
  • Advanced parallel programming with Hybrid OpenMP/MPI/GPGPU

Applications

  • Parallel algorithm design and spin and molecular dynamics
  • Parallel data input and output and Big Data
  • N-body simulations and long range interactions
  • Finite element and finite difference modelling and Computational Fluid Dynamics
  • Multiscale modelling and climate simulations
  • Parallel Monte Carlo and particle tracking

Academic and graduate skills

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

  • Describe the different types of HPC hardware and make informed decisions as to what will be best in any particular situation
  • Use simple profiling tools to identify hotspots in a code and develop strategies for overcoming the hotspots
  • Design efficient coding solutions to a variety of numerical problems
  • Create a parallel program for an MP machine using message-passing techniques
  • Apply HPC techniques to solve scientific problems;
  • Analyse a scientific problem to determine an appropriate parallel strategy;
  • Analyse a HPC algorithm to determine how the computational resources it requires will scale with the size of the problem, and the number of parallel processes employed;
  • Design an appropriate verification set for a given implementation of a HPC method.

Module content

Assessment

The module will be assessed by practical challenges, and by two assignments, set at the end of Term 1 and Term 2. The practical challenges enable you to practise the different skills required to successfully complete the Term 1 assignment. The major component of the Term 1 assignment will require writing and testing a parallel program to solve a particular set problem. The Term 2 assignment will feature 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..

Assessment

Task Length % of module mark
Essay/coursework
Continuous Assesment: HPC Applications Assignments
N/A 12
Essay/coursework
Continuous Assesment: HPC Assignments
N/A 12
Essay/coursework
Essay: HPC Applications Assignment
N/A 38
Essay/coursework
Essay: HPC Assignment
N/A 38

Special assessment rules

None

Reassessment

Task Length % of module mark
Essay/coursework
Essay: HPC Applications Assignment
N/A 38
Essay/coursework
Essay: HPC Assignment
N/A 38

Module feedback

Feedback to students: The marked assignments are returned to student, indicating where marks have been lost, made mistakes and/or where improvements could be made.

Indicative reading

Reading List

For each lecture, students will be provided with a complete set of handouts and students will be expected to annotate these with additional comments arising from the lecture. Full colour copies of the notes will also 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.