CS402 15 CATS (7.5 ECTS) Term 2
Option - MEng CS and DM, MSc High-End Scientific Computing, MSc Computer Science, MSc Data Analytics
The module provides a solid foundation in High Performance Computing (HPC) and its role in science and engineering. After introducing the major scientific application areas and basic concepts of parallel computing, it outlines the hardware design of modern HPC platforms and the parallel programming models that they support. The principal methods of measuring and characterising application and hardware performance are then covered, with particular reference to complex scientific- and business-based HPC codes. The final topic is the Computational Grid, where the fundamental issues of administration, scheduling, code portability and data management are explored.
At the end of the module, a student will have an understanding of
- The role of HPC in science and engineering.
- The most commonly used HPC platforms and parallel programming models.
- The means by which to measure, analyse and assess the performance of HPC applications and their supporting hardware.
- Mechanisms for evaluating the suitability of different HPC solutions to common problems found in Computational Science.
- The role of administration, scheduling, code portability and data management in an HPC environment, with particular reference to Grid Computing.
- The potential benefits and pitfalls of Grid Computing.
- Fundamental concepts in High Performance Computing
- Shared memory programming (OpenMP)
- Message passing programming (MPI)
- Parallel decomposition
- Hardware, compilers and performance programming
- Performance measurement and estimation
- High performance networking
- Computation grids and escience
- Peter Pacheco, Introduction to Parallel Programming, Morgan Kaufmann Publishers, 2011
- Michael J. Quinn, Parallel programming in C with MPI and OpenMP, McGraw-Hill Higher Education, 2004
- William Gropp, Using MPI: portable parallel programming with the message-passing interface, MIT press, 1999
- Further reading: Introduce the Graph 500
- Further Reading: A Note on the Zipf Distribution of Top500 Supercomputers
- Further Reading: Vectorizing C Compilers - How Good Are They?
- Further Reading: Further Reading in High Performance Compilers for Parallel Computing
Two hour examination (70%) One assignment including a programming and analysis exercise (30%)
20 one-hour lectures, 10 one-hour lab sessions.