Tim Mattson (Intel Corp.), Sanjiv Shah (Intel Corp.)
For High Performance Computing, OpenMP is the de facto
standard for writing parallel programs for shared-memory computers. Most HPC professionals have been
exposed to OpenMP, but only a small number have a deep understanding of how to best use OpenMP to write
highly optimized and correct programs.
In this tutorial, we start from a basic understanding of OpenMP and progress quickly to explore advanced
topics in OpenMP, in order to share the knowledge required to become a master OpenMP programmer.
The tutorial addresses three main topics: (1) hardware and compiler implementation issues and how they
impact program performance, (2) how to take advantage of the performance oriented constructs in the
OpenMP specifications, and (3) a programming discipline to increase the chances of writing correct
OpenMP programs.
Examples will be given to amplify each of the above points. We will collect these examples from real
programs crafted by master OpenMP programmers.
This tutorial is aimed to software developers interested in getting the most from OpenMP.
We assume that the attendees already have a basic understanding of OpenMP.
Outline
·
OpenMP overview
A two minute summary of OpenMP.
·
Theoretical background
Programming models, compute models and concurrency theory.
·
Shared memory architecures, OpenMP compilation and
runtime environments
What every OpenMP programmer should know about their hardware and software tools.
·
Performance
oriented constructs in the OpenMP API
Two issues: the schedule clause and tighter control of
synchronization.
·
Optimizing OpenMP
programs for Performance
Using what we covered so far to optimize performance.
·
How to write
correct OpenMP programs
Sequential equivalence and the use of tools to write programs
that consistently generate the right answer.
·
Classic OpenMP
algorithms
A collection of classic algorithms from the OpenMP literature.