Shared Memory Programming With OpenMP

Description

In recent years, a “multi-core revolution” has taken place, affecting virtually any computer from large SMP machines in supercomputing facilities down to smart phones. To exploit the enhanced capabilities of such systems as a programmer, it is necessary to learn the basic principles of shared-memory parallel programming, also termed “multi-threading”. The use of multi-threading has the potential to speed up virtually any application even on a single-core system due to greater responsiveness and more efficient use of modern CPU's and memory.

In this course, we offer an introduction to the OpenMP compiler directives which enable the conversion of serial programs to parallel through the addition of “local compilation flags” to the code. This is arguably the easiest way of multi-threading as it combines flexibility and power with conceptual simplicity. The course is directed at scientists and engineers who want to use multi-threading techniques in their applications to make use of the enhanced resources offered by shared-memory parallel computers. No prior knowledge of parallel programming is required, but some background in the C or Fortran languages is assumed. The course includes short practical lab sessions to give participants an opportunity for some hands-on experience. These sessions will be conducted on dedicated resources at HPCVL.

Instructor: Hartmut Schmider, HPCVL, Queen's University.

Prerequisites: Basic Fortran or C programming.