This module will address the rapid increase, in recent years, of computer simulations and data analysis on high performance computers, for research in all fields of scientific computing.
- ability to formulate, implement, and evaluate an appropriate high-performance computer algorithm to tackle a task in scientific research.
- concepts of message passing programming constructs, and their utility in scientific programming applications.
- ability to write a parallel program using message passing constructs, for scientific applications.
- Introduction to Parallel Programming. Super problems need super-computers. Parallel programming. Array constructs and how they represent physical fields. Optimising scientific calculations for high performance. Parallelisation strategies. Compiler directives.
- Program development. Writing programs more easily, and with fewer errors. Adopting a structured approach. Using syntax-aware program editors and makefiles. Using interactive development environments. Program testing and debugging.
- Advanced parallelization. Harnessing the power of many distributed computers. Distributed memory architectures and cluster computing. Message passing using the MPI standard. Point-to-point and collective communication. Large-scale scientific problems tackled by the single-program-multiple-data paradigm. How to measure the performance of a scientific program on a cluster computer.
A good working knowledge of a scientific programming language (either Fortran- 95/2003 or C), as taught, for example, in PX250 Fortran Programming for Scientists, will be a pre-requisite.