Course/Event Essentials
Training Content and Scope
Other Information
Almost all modern computers now have a shared-memory architecture with multiple CPUs connected to the same physical memory, for example multicore laptops or large multi-processor compute servers. This course covers OpenMP, the industry standard for shared-memory programming, which enables serial programs to be parallelised easily using compiler directives. Users of desktop machines can use OpenMP on its own to improve program performance by running on multiple cores; users of parallel supercomputers can use OpenMP in conjunction with MPI to better exploit the shared-memory capabilities of the compute nodes. This course contains an introduction to the fundamental concepts of the shared variables model, followed by the syntax and semantics of OpenMP and how it can be used to parallelise real programs.
The course covers the following topics:
- Basic concepts of shared memory: threads, tasks, shared/private data, synchronisation.
- Concepts of OpenMP: parallel regions, shared/private variables, parallel loops, reductions
- OpenMP parallel regions and associated clauses
- OpenMP worksharing directives, scheduling of parallel loops
- OpenMP synchronisation: barriers, critical sections, atomics, locks.
- OpenMP tasks
- Additional features of OpenMP: nesting, orphaning, threadprivate globals, OpenMP 4.0/4.5 feature
- OpenMP tricks, tips and gotchas.
- OpenMP implementations
- Memory models.
This self-service course includes a series of Lecture videos (with transcript and slides downloadable) which you can work through at your own pace and in your own time.
Hands-on practical programming exercises are included, with the option of working in either Fortran or C.
Access to ARCHER2 provided for participants to build and run the exercises.