Course Code: openmp
Duration: 14 hours
Prerequisites:
  • An understanding of HPC Systems
  • Parallel programming experience

Audience

  • Software Engineers
Overview:

OpenMP (Open Multi-Processing) is an API for shared memory multiprocessing programming. With OpenMP, programmers are able to develop parallel applications for platforms from desktops to non-shared memory systems.

This instructor-led, live training (online or onsite) is aimed at software engineers who wish to develop parallel applications using OpenMP.

By the end of this training, participants will be able to:

  • Understand and use parallel programming with Fortran in OpenMP.
  • Calculate fractals in parallel to render multiple pixels and characters.
  • Implement vector programming with SIMD extensions for HPC systems.
  • Add parallel blocks for specifying shared memory parallelism.

Format of the Course

  • Interactive lecture and discussion.
  • Lots of exercises and practice.
  • Hands-on implementation in a live-lab environment.

Course Customization Options

  • To request a customized training for this course, please contact us to arrange.
Course Outline:

Introduction

Multi-Threading Programming

  • Syntax and constructs
  • Clauses and sections

Offloading Support

  • Directives and target data
  • If, device, and map clauses

Thread Safety and Sharing

  • Atomicity
  • Constructs, locks, and directives
  • Shared clauses

Preparing the Development Environment

  • Installing and configuring OpenMP
  • Installing and configuring VMWare
  • Setting up an HPC with VMWare

Parallel Programming in OpenMP

  • Creating a hello world code example and demonstration
  • Worksharing constructs
  • Working with for loops
  • Using sectional parallelism
  • Using fractals
  • Adding vectors

Vector Programming and SIMD Extensions

  • Vectorizing loops
  • Annotating user-defined functions
  • Using functions that support SIMD annotation
  • Generating a vector function
  • Registering vector return values

Fortran in OpenMP

  • Worksharing constructs
  • Synchronizing constructs
  • Using data scope attribute clauses and other clauses
  • Working with OpenMP-Runtime Library

Parallel Blocks

  • Specifying the number of threads
  • Executing parallel statement blocks
  • Distinguishing the running threads in a parallel block
  • Using omp critical directives

Summary and Conclusion

Sites Published:

United Arab Emirates - Parallel Programming with OpenMP

Qatar - Parallel Programming with OpenMP

Egypt - Parallel Programming with OpenMP

Saudi Arabia - Parallel Programming with OpenMP

South Africa - Parallel Programming with OpenMP

Brasil - Parallel Programming with OpenMP

Canada - Parallel Programming with OpenMP

中国 - Parallel Programming with OpenMP

香港 - Parallel Programming with OpenMP

澳門 - Parallel Programming with OpenMP

台灣 - Parallel Programming with OpenMP

USA - Parallel Programming with OpenMP

Österreich - Parallel Programming with OpenMP

Schweiz - Parallel Programming with OpenMP

Deutschland - Parallel Programming with OpenMP

Czech Republic - Parallel Programming with OpenMP

Denmark - Parallel Programming with OpenMP

Estonia - Parallel Programming with OpenMP

Finland - Parallel Programming with OpenMP

Greece - Parallel Programming with OpenMP

Magyarország - Parallel Programming with OpenMP

Ireland - Parallel Programming with OpenMP

Luxembourg - Parallel Programming with OpenMP

Latvia - Parallel Programming with OpenMP

España - Parallel Programming with OpenMP

Italia - Parallel Programming with OpenMP

Lithuania - Parallel Programming with OpenMP

Nederland - Parallel Programming with OpenMP

Norway - Parallel Programming with OpenMP

Portugal - Parallel Programming with OpenMP

România - Parallel Programming with OpenMP

Sverige - Parallel Programming with OpenMP

Türkiye - Parallel Programming with OpenMP

Malta - Parallel Programming with OpenMP

Belgique - Parallel Programming with OpenMP

France - Parallel Programming with OpenMP

日本 - Parallel Programming with OpenMP

Australia - Parallel Programming with OpenMP

Malaysia - Parallel Programming with OpenMP

New Zealand - Parallel Programming with OpenMP

Philippines - Parallel Programming with OpenMP

Singapore - Parallel Programming with OpenMP

Thailand - Parallel Programming with OpenMP

Vietnam - Parallel Programming with OpenMP

India - Parallel Programming with OpenMP

Argentina - Parallel Programming with OpenMP

Chile - Parallel Programming with OpenMP

Costa Rica - Parallel Programming with OpenMP

Ecuador - Parallel Programming with OpenMP

Guatemala - Parallel Programming with OpenMP

Colombia - Parallel Programming with OpenMP

México - Parallel Programming with OpenMP

Panama - Parallel Programming with OpenMP

Peru - Parallel Programming with OpenMP

Uruguay - Parallel Programming with OpenMP

Venezuela - Parallel Programming with OpenMP

Polska - Parallel Programming with OpenMP

United Kingdom - Parallel Programming with OpenMP

South Korea - Parallel Programming with OpenMP

Pakistan - Parallel Programming with OpenMP

Sri Lanka - Parallel Programming with OpenMP

Bulgaria - Parallel Programming with OpenMP

Bolivia - Parallel Programming with OpenMP

Indonesia - Parallel Programming with OpenMP

Kazakhstan - Parallel Programming with OpenMP

Moldova - Parallel Programming with OpenMP

Morocco - Parallel Programming with OpenMP

Tunisia - Parallel Programming with OpenMP

Kuwait - Parallel Programming with OpenMP

Oman - Parallel Programming with OpenMP

Slovakia - Parallel Programming with OpenMP

Kenya - Parallel Programming with OpenMP

Nigeria - Parallel Programming with OpenMP

Botswana - Parallel Programming with OpenMP

Slovenia - Parallel Programming with OpenMP

Croatia - Parallel Programming with OpenMP

Serbia - Parallel Programming with OpenMP

Bhutan - Parallel Programming with OpenMP

Nepal - Parallel Programming with OpenMP

Uzbekistan - Parallel Programming with OpenMP