Compute Canada

Where can I learn details about OpenMP?

Please note: The FAQ pages at the HPCVL website are continuously being revised. Some pages might pertain to an older configuration of the system. Please let us know if you encounter problems or inaccuracies, and we will correct the entries.

As already pointed out, this FAQ is not an introduction to OpenMP programming. In fact, we barely scratch the surface of what can be done. OpenMP includes many directives and functions that warrant study before they can be used properly. It is necessary to point out that shared-memory programming has its pitfalls: hidden dependencies may lead to so-called "race conditions", and cache-effects such as "false sharing" can seriously degrade performance. Often, a detailed analysis of a parallel region or a loop is necessary to determine if and how it may be parallelized using OpenMP.

A good text book on OpenMP is:

Rohit Chandra, Leonardo Dagum, Dave Kohr, Dror Maydan, Jeff McDonald, and Ramesh Menon: Parallel Programming in OpenMP, Academic Press, San Diego, California, 2001; ISBN 1-55860-671-8

This text includes examples that are worked out in detail and explains concepts of shared-memory programming that might be unfamiliar to may users.

A good online tutorial for OpenMP shared-memory programming can be found at Lawrence Livermore National Laboratory.

There is a website devoted specifically to all things OpenMP, which is a good starting point for learning about it.

For Sun and Solaris specific questions, including CRE and Sun MPI, visit the Sun Documentation Site and use their Search Engine to look for "OpenMP".

HPCVL also organizes Workshops on a regular basis, and one of them is devoted to OpenMP programming. They are announce on our web site. We might see you there sometime soon.