Introduction to OpenMP Programming Model¶
Introduction to OpenMP Programming Model¶
Participants from this course will learn Multicore (shared memory) CPU programming using the OpenMP programming model, such as parallel region, environmental routines, and data sharing. Furthermore, understanding the multicore shared memory architecture and how parallel threads blocks are used to parallelise the computational task. Since we deal with multicores and parallel threads, proper parallel work sharing and the synchronisation of the parallel calls are to be studied in detail. Finally, participants will also learn to use the OpenMP programming model to accelerate linear algebra (routines) and iterative solvers on the Multicore CPU. Participants will learn theories first and implement the OpenMP programming model with mentors’ guidance later in the hands-on tutorial part.
Prerequisites
Good working knowledge of C/C++ and/or FORTRAN is needed.
No prior parallel programming experience is required.
Software setup
The lesson
Learning outcomes
After this course, participants will be able to:
Understanding the shared memory architecture
Unified Memory Access (UMA) and Non-Unified Memory Access (NUMA)
Hybrid distributed shared memory architecture
Implement the OpenMP programming model
Parallel region
Environment routines
Data sharing
Efficient handling of OpenMP constructs
Work sharing
Synchronisation constructs
Single Instruction Multiple Data (SIMD) directive
Apply the OpenMP programming knowledge to parallelise examples from science and engineering:
Iterative solvers from science and engineering
Vector multiplication, vector addition, etc.