Tutorial: Getting Up to Speed on OpenMP 4.0
Speaker: Ruud van der Pas, Oracle. 9:30am - 4:00pm PDT, August 20, 2015
Ruud van der Pas, a Distinguished Engineer in the Architecture and Performance Group, SPARC Microelectronics, Oracle, also a Co-author of the book "Using OpenMP" (published by MIT Press), will present an all day tutorial on OpenMP 4.0 for NERSC users. This is a training event focused on OpenMP only, which is an important component in using hybrid MPI/OpenMP programming model for getting applications ready for the NERSC Cori system.
Levels of the tutorial materials are: beginner 30%, intermediate 40%, and advanced 30%. Afternoon sessions are in general more advanced than the morning sessions.
Location and Registration
In recent years, OpenMP has made huge strides both in terms of functionality and endorsement by companies, research labs and universities across the globe. Unfortunately, many are not aware of these changes and don't realize OpenMP can be a suitable shared memory parallel programming model for their application as well. In particular, the myth that OpenMP is useful to parallelize loops only is very persistent, as well as the misconception it is restricted to Fortran only. Nothing could be further away from where OpenMP stands today. It fully supports C, C++ and Fortran and is widely supported in a huge variety of both commercial and open source compilers.
The main goal of this tutorial is therefore to bring attendees up to speed on OpenMP 4.0, the latest revision of the specifications. In this tutorial, the OpenMP language is mostly covered by suitably selected simple examples, illustrating a feature or key point to be made. Syntax details are only touched upon, since these can be looked up in the specifications. The threading and memory model are discussed first and in sufficient detail. Next, the main constructs and features are covered. The topics selected are sufficient to parallelize many applications.
With each topic, examples are given and where relevant, the rationale behind the constructs is discussed as well. Simple examples are the choice between the master and single construct, or the atomic construct versus a critical region. The goal is to help attendees decide whether a feature is useful for their specific case, what choice(s) they have and make them aware of the possible pitfalls. In the last part of this language overview more specialized features are covered. In particular, tasking, as well as the recently introduced support for accelerators like GPUs and thread affinity. The tutorial concludes with several performance examples. These have been selected to demonstrate how initial scalability hurdles were overcome.
|9:30 am - 9:35 am||Introduction, Helen He|
|9:30 am - 10:30 am||Getting Up to Speed on OpenMP, Part I|
|10:30 am - 10:45 am||Break|
|10:45 am - 12:30 pm||Getting Up to Speed on OpenMP, Part II|
|12:30 pm - 1:30 pm||Lunch|
|1:30 pm - 3:00 pm||"OpenMP Does Not Scale" <== Note the quotes here ;-)|
|3:00 pm - 3:15 pm||Mystery Guest|
|3:15 pm - 4:00 pm||Q (and some A)|