Outline and Aims:

The aim of this module is to give an introduction into modern techniques of High-Performance Computing. The emphasis is on a balanced mix between the necessary theoryand practical examples. At the end students will be able to apply modern HPC techniques to implement and solve a wide range of typical PDE problems on advanced computing platforms.

Intended Learning Outcomes:

On successful completion of the course the student should be able to:

Choose the right HPC technologies and parallel software libraries for a given problem;
	Write fast algorithms for CPUs and GPUs;
	Be able to use parallel sparse-matrix techniques, linear and iterative solvers;
	Apply a range of preconditioning techniques;
	Develop a computational simulation from the initial PDE up to the solver and post-processing step.
Teaching and Learning Methodology:

The course consists of approximately 30 lecture hours.

In addition to timetabled lecture hours, it is expected that students engage in self-study in order to master the material. This can take the form, for example, of practicing example questions and coding, and further reading in textbooks and online.

Indicative Syllabus:

Part 1: HPC Technologies (6 hours)

Design of HPC Systems
	Parallelization Technologies,
	Python for High-Performance Computing
Part 2: An introduction to many-core technologies via OpenCL (6 hours)

Basics of many-core processing
	Differences between CPUs and GPUs
	The OpenCL Programming Model
	Design of OpenCL kernels
Part 3: Sparse matrices and linear algebra (6 hours)

Data storage schemes for sparse matrices
	Sparse Matrix Vector Products
	Sparse LU Decomposition
	Iterative solvers
	Efficient implementation of sparse matrix operations in OpenCL
Part 4: Many particle simulations (6 hours)

Basis of particle simulations
	Acceleration of particle simulations
	Implementation in OpenCL
Part 5: Spectral methods (6 hours)

Basic ideas of spectral methods (Fourier and Chebychev type methods)
	Spectral differentiation matrices
	Implementing spectral methods to solve wave problems