Shared Memory Programming with OpenMP

Course/Event Essentials

Event/Course Start
Event/Course End
Event/Course Format
Online
Self-paced (asynchronous)

Venue Information

Country: United Kingdom
Venue Details: Click here

Training Content and Scope

Scientific Domain
Technical Domain
Level of Instruction
Intermediate
Sector of the Target Audience
Research and Academia
Industry
HPC Profile of Target Audience
Application Developers
Language of Instruction

Other Information

Organiser
Event/Course Description

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.