Parallel Programming with OpenMP Training Course

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.

Requirements

  • An understanding of HPC Systems
  • Parallel programming experience

Audience

  • Software Engineers

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

Leave a Reply

Your email address will not be published. Required fields are marked *