Sponsored by the SIAM Activity Group on Supercomputing


SIAM Short Course on OpenMP in Action

II. Short Course Organizer
Tim Mattson, Intel Corporation

III. Associated SIAM Conference:
SIAM Conference on Parallel Processing for Scientific Computing
February 22-24, 2006
San Francisco, California
Sir Francis Drake Hotel
(Short course to be held at the same hotel on February 21, 2006)

IV. Rationale
OpenMP is the standard API for programming shared memory computers. With the advent of multi-core processors,  parallel systems will become ubiquitous becoming standard even in basic laptops.  Hence, a wider pool of programmers will need to become comfortable with the programming environments used for writing parallel programs.  Since most of these multi-core systems will have shared memory, this means OpenMP will become an essential tool for scientific programmers

V. Instructor(s):
Tim Mattson
Senior Research Scientist, Intel Corporation

Tim Mattson earned a PhD. for his work on quantum molecular scattering theory (UCSC, 1985).  This was followed by a Post-doc at Caltech where he worked on the Caltech/JPL hypercubes.  Since then, he has held a number of commercial and academic positions with high performance computers as the common thread. Application areas have included mathematics libraries, exploration geophysics, computational chemistry, molecular biology, and bioinformatics. Dr. Mattson joined Intel in 1993. Among his many roles at Intel, he was applications manager for the ASCI teraFLOPS project, helped create OpenMP, founded the Open Cluster Group (OSCAR), and launched Intel’s programs in computing for the Life Sciences. Currently, Dr. Mattson is conducting research on abstractions that bridge across parallel system design, parallel programming environments, and application software. This work builds on his recent book on Design Patterns in Parallel Programming (written with Professors Beverly Sanders and Berna Massingill and published by Addison Wesley). The patterns provide the “human angle” and help keep his research focused on technologies that help general programmers solve real problems.

VI. Course Description
We will begin with a brief overview of OpenMP. Our goal will be to convey the overall structure and meaning of OpenMP plus any specific constructs we will use later in the tutorial. The discussion will break down into the following distinct segments:

  • Thread Creation
  • Worksharing constructs
  • Data environment management
  • Synchronization
  • Runtime library routines

We have found that this order of presentation is an extremely effective progression for bringing students up to speed with OpenMP in the minimum amount of time. OpenMP is applicable to a wide range of parallel algorithms. But practicing programmers most often use a small number of approaches when using OpenMP. We will discuss these approaches using the formalism of design patterns to make explicit the subtle nuances of OpenMP usage that experts take for granted.  We will also discuss some of the main considerations in getting good performance with OpenMP as well as make participants aware of the most common problems and pitfalls.

Finally, we will tie the two parts of the tutorial together by discussing case studies of OpenMP in action. Of the large number of cases we have available to discuss, we will select ones that are particularly creative and explore some of the more interesting aspects of OpenMP.

VII. Level of the Material
60% beginner - material accessible to any attendee who has the recommended background
40% intermediate - material accessible to an attendee with the background provided by the course
0% advanced - material that requires further study by an attendee outside the course

VIII. Target Audience
Software developers interested in developing a deeper understanding of how to use OpenMP. We expect that most attendees will have some familiarity with OpenMP, but we’ll cover enough of the basics so even beginners will be able follow the full range of material in the tutorial.

IX. Recommended Background
We assume the attendees are comfortable reading either Fortran or C. No prior experience with OpenMP or any other parallel programming API is required.

X. Course Outline
Context: Parallel Computing and OpenMP, 5 minutes

The key elements of OpenMP version 2.5:

  • Thread Creation, 10 minutes
  • Worksharing constructs, 15 mintues
  • Data environment management, 15 minutes
  • Synchronization,  15 minutes
  • Runtime library routines, 5 minutes

Capturing “Expert knowledge” with Design Patterns

  • What are design patterns? 5 minutes
  • High level look at the key design patterns in OpenMP, 10 minutes

How do experts use OpenMP … the key patterns:

  • Loop Level Parallelism, 20 minutes
  • SPMD, 20 minutes
  • Other important but less common patterns, 15 minutes

Case Studies (as many as time allows), 30 minutes

  • Performance Optimization
  • fine grained synchronization
  • OpenMP in recursive algorithms


DHTML Menus by http://www.milonic.com/