Vijay Tatkar's Blog

All | Benchmarks | Business | General | Hardware | Linux/Unix | Performance | Software | Solaris | Sun | Sun Studio
« Try NetBeans 6.1 | Main | Sun unleashes Quad-c... »
20080513 Tuesday May 13, 2008

OpenMP 3.0 APIs released
The final specifications for the new version of OpenMP (version 3.0) have now been published and uploaded to the official OpenMP site (here)
The draft was open to review from October through January; the completed version is now official.

What is OpenMP?
The OpenMP Application Program Interface (API) supports multi-platform shared-memory parallel programming in C/C++ and Fortran. OpenMP is a portable, scalable model with a simple and flexible interface for developing parallel applications on platforms from the desktop to the supercomputer. The core elements of OpenMP are the constructs for thread creation, work load distribution (work sharing), data environment management, thread synchronization, user level runtime routines and environment variables. These are expressed as directives in Fortran and as #pragmas in C and C++
This is a multivendor, multiple platform vendor-driven industry standard. Members include Sun, AMD, Intel, Cray, Fujitsu, HP, IBM, NEC, PGI and SGI as vendors (permanent members) and auxilliary members such as ASC/LLNL,  cOMPunity,  EPCC,  NASA, RWTH Aachen University.
You can get more info on OpenMP at this official site (here). You can also read a more detailed description at this Wikipedia site.
The first standard came out in October 1997; an update (v2.0) in 2000 (for Fortran) and 2002(for C, C++)  and a combined languages revision (v2.5) in 2005.
There is also a SPEC standard benchmark, called SPEC OMP, that represents typical industry application/usage of OpenMP. Sun has dominated SPEC submissions on the lower end of the scale (less 8,16 nodes).

Whats New in OpenMP3.0?
There are several new features in OMP 3.0. A short enumeration of these:

Uses of OpenMP3.0
The OpenMP model (shared memory programming) is often debated vs the MPI (message passing interface) model (a distributed, cluster programming model), which is also a vendor-driven industry standard. Both are aspects of  the parallel programming model, which aim at extracting parallelism from an existing application. OpenMP is an incremental model that works at the high-level language level, whereas MPI is a low-level and difficult to use. This section in the Wikipedia has an interesting set of Pros and Cons contrasted between OMP and MPI. The MPI model grew in popularity in the past decade because clusters became easier to buy and assemble and the increasing power of the x86 single-node servers ensured that such clusters could be built cheaply and still deliver good performance. However, now with the multi-core revolution upon us, there is fresh interest in making each of these "nodes" parallelizable as well and so there is fresh interest in OpenMP.
Of course, time will tell, which paradigm, or any derivative of these will ultimately see large-scale adoption. In the meantime vendors are busy working to ensure that they have good, high performing OpenMP implementations that can be used to exploit the increasing number of cores in a single node.
Sun, of course, has been in this game from Day 1. We've had compilers that have supported every OMP standard, immediately after it came out (and no later than any other vendor).
The same will be true with OMP3.0; we are working on getting an implementation of this out very soon now.



Posted by tatkar ( May 13 2008, 09:58:20 AM PDT ) Permalink Comments [0]
Like this post?  del.icio.us  bookmark it   |   submit to dig digg.com digg it   |   slashdot slashdot it   |   technorati Technorati it

Trackback URL: http://blogs.sun.com/tatkar/entry/openmp_3_0_apis_released
Comments:

Post a Comment:

Name:
E-Mail:
URL:

Your Comment:

HTML Syntax: NOT allowed

Who Am I?

Calendar

RSS Feeds

Search

Links

Presentations

Navigation

Referers