- Advanced Parallel Programming with OpenMP
- Advanced Parallel Programming with MPI
- Hybrid Programming
- Debugging and Profiling Parallel Codes in a Cluster Environment
- Intro to CUDA
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.
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.
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.
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.
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.