Multithread-/Multicore-Programming with OpenMP

Who should attend?

Software engineers who want to develop multithread-applications in a platform independent way without having to deal with explicit thread programming. This course is particularly suitable in situations where an existing sequential application should be parallelised for the use in a multicore system while its general architecture must not be modified.

Pre-requisites:

A good working knowledge of C and a basic knowledge of multithreading.
(Important note: this course does not support the Fortran API of OpenMP!)

Duration:

1 day

Course Description

This course shows how platform independent and portable multithread/multicore applications can be developed using OpenMP without having to deal with explicit thread programming. It explains how existing application code, which has been designed for sequential execution, can be parallelised without having to change its general software architecture.

 


 

Contents

Loop Parallelisation

  • The directive parallel_for
  • Thread locale variables
  • Private variables
  • Reduction
  • Scheduling strategies
  • Conditional parallelisation

Synchronisation

  • Atomic
  • Critical regions
  • Locks
  • Barriers
  • Ordered Execution
  • Data consistency between threads

Miscellaneous

  • Sections
  • Orphaned directives
  • Nested parallel regions
  • Dynamic thread number adjustment
  • Time measurement

Practical Exercises