Advanced Parallel Programming with OpenMP

This element of the module follows on from the “Introduction to OpenMP” Course by completing the OpenMP 3.1 syntax. In particular the course covers detail at synchronisation and tasks, as well as considering nested parallelism. Attendees are encouraged to bring their own serial code to work on in the practical sessions.

Advanced Parallel Programming with MPI

MPI (Message Passing Interface) is the de facto standard for parallel programming, defining how concurrent processes can communicate and hence work together to complete a given task in a shorter time.

This course follows the “Introduction to MPI” and will cover some of the more advanced features of MPI, such as Cartesian topologies, as well as returning to the topics of MPI derived data types, before looking at the topic of MPI-IO, which allows multiple processors to read and write files in parallel. The course combines both theory and practical exercises.

Hybrid Programming

This course demonstrates how combining the two paradigms of OpenMP and MPI can be beneficial, and how best to achieve more efficient codes. The course combines both theory and practical exercises.

Debugging and Profiling Parallel Codes in a Cluster Environment

This course follows on from the Introduction to Debugging, Profiling, and Optimising Serial Codes element utilising a number of tools to assist in the debugging and profiling of parallel codes in a cluster environment. A range of typical bugs will be explored with practical examples on how to locate and eliminate them using the graphical debugger, Allinea DDT.

The participant will learn how to profile a number of parallel codes in order to discover hot spots and communication patterns using the graphical profiler Scalasca, and explore a range of optimisation strategies to improve the performance of a number of parallel codes including code restructuring and compiler optimisations using the Intel compilers.

Intro to CUDA

This 2 day course provides an introduction to programming NVIDIA GPUs using CUDA.  It is aimed at people who want to learn to write their own CUDA code.  Noting that it is typically not necessary to learn CUDA in order to use GPU accelerated packages.


If you would like to know more or discuss a project idea, get in touch.

Get in touch