SHPC4002 High Performance Computing
Unit home page
SHPC4002 High Performance Computing - Unit information for 2016
High performance computing is an integral part of modern scientific and
engineering education and research. Most physical systems are explored through
simulation and modelling using high performance computing tools like parallel
computers. This unit introduces students to the essential tools and techniques
of high performance computing. The main objectives are to introduce students
to different frameworks of parallel and distributed computing that they can
use in their specific areas of interest. The students learn to program
multi-core processors as well as
clusters of personal computers using the widely used C and Fortran computer
languages. Students program practical problems from
different scientific disciplines and also work on individual or group
projects to consolidate their learning.
SHPC4002 introduces the key concepts of high performance computing in an
easy-paced manner. Initially the basic ideas in multi-core computer
architectures are explored through simple programming examples using
OpenMP. In particular, the emphasis will be on improving the performance of
the most compute-intensive parts of a program, loops. The lectures will
cover the spawning of multiple threads on multiple cores through
extensive examples. Next, the key problem in multi-core programming,
cache coherency will be explored thoroughly. Distributed memory architectures
and their programming through Message Passing Interface (MPI) will be discussed
in the second part of the unit. Finally, combining both OpenMP and MPI
for improving performance on a cluster of multicore processors will be covered.
Information available from here:
For most information regarding SHPC4002, please follow the web site of
|Computing Project 1
|Scientific Computation Project 1
|Computing Project 2
|Scientific Computation Project 2
|| 2 hours, November
Before undertaking this unit,
students are strongly encouraged to read:
- Solving multi-variable wave equation (Jeffrey Shragge)
- Solving multi-electron Schrodinger's Equation (Jingbo Wang)
- N-body simulations of the cosmic web of dark matter (Chris Power) - writing code to generate the initial density perturbations in the early Universe and code to evolve these perturbations using a simple particle mesh approach with fixed time stepping
- Creating N-body models of galaxies (Chris Power) - writing code to create N-body realisation of galaxies, sampling from distribution functions for particle positions and velocities - to be run with publicly available MPI code GADGET2
- Counting Graphs (Michael Small) - Motifs are connected sub-graphs of a fixed size within a complex network. In many settings (for example, metabolic networks and bioinformatics) the relative frequency of these various motifs are an important indicator of the underlying structure of the network. However, these things a extremely difficult and computationally expensive to estimate. Efficient algorithms are required.
- Quantifying Regularity (Michael Small) - Correlation dimension type measures, applied to images (and in particular medical CT or MRI images). can be used to quantify spatial regularity. Applied to a database of cystic fibrosis CT images these methods can be used to quantify and track developmental changes. Algorithm to robustly and regularly estimate a spatially dependent measure of spatial regularity are required.
- Using OpenMP: Portable Shared Memory Parallel Programming, by, B. Chapman, G. Jost, R. van der Paas, MIT Press, 2008.
- Parallel Programming in OpenMP, by, Rohit Chandra et al. (An electronic copy of this book is available from the Science Library).
- We will use lecture materials extensively from www.openmp.org, in particular Tim Mattson's lectures Introduction to OpenMP.
- I will inform you about course materials for MPI later.
||School of Computer Science & Software Engineering
The University of Western Australia
Crawley, Western Australia, 6009.
Phone: +61 8 9380 2716 - Fax: +61 8 9380 1089.
CRICOS provider code 00126G