The OpenMP 4.0 API Specification is released with Significant New Standard Features

The OpenMP 4.0 API specifications supports the programming of accelerators, SIMD programming, and better optimization using thread affinity

Champaign, Illinois – July 26, 2013 – The OpenMP Consortium has released the OpenMP 4.0 API, a major upgrade of the OpenMP standard language specifications. Besides several major enhancements, this release provides a new mechanism to describe regions of code where data and/or computation should be moved to another computing device.

“The OpenMP 4.0 API is a major advance that adds two new forms of parallelism in the form of device constructs and SIMD constructs “, stated Bronis R. de Supinski, Chair of the OpenMP Language Committee. “It also includes several significant extensions for the loop-based and task-based forms of parallelism already supported in the OpenMP 3.1 API.”

Standard for parallel programming extends its reach

With this release, the OpenMP API, the de-facto standard for parallel programming on shared memory systems, continues to extend its reach beyond pure HPC to include DSPs, real time systems, and accelerators. The OpenMP API aims to provide high-level parallel language support for a wide range of applications, from automotive and aeronautics to biotech, automation, robotics and financial analysis.

New features included in the OpenMP 4.0 API specifications:

•    Support for accelerators. The OpenMP4.0 specification effort included significant participation by all the major vendors in order to support a wide variety of compute devices. The OpenMP API provides mechanisms to describe regions of code where data and/or computation should be moved to another computing device. Several prototypes for the accelerator proposal have already been implemented.

•    SIMD constructs to vectorize both serial as well as parallelized loops. With the advent of SIMD units in all major processor chips, portable support for accessing them is essential. The OpenMP 4.0 API provides mechanisms to describe when multiple iterations of the loop can be executed concurrently using SIMD instructions and to describe how to create versions of functions that can be invoked across SIMD lanes.

•    Error handling. The OpenMP 4.0 API defines error handling capabilities to improve the resiliency and stability of OpenMP applications in the presence of system-level, runtime-level, and user-defined errors. Features to abort parallel OpenMP execution cleanly have been defined, based on conditional cancellation and user-defined cancellation points.

•    Thread affinity. The OpenMP 4.0 API provides mechanisms to define where to execute OpenMP threads. Platform-specific data and algorithm-specific properties are separated, offering a deterministic behavior and simplicity in use. The advantages for the user are better locality, less false sharing and more memory bandwidth.

•    Tasking extensions. The OpenMP 4.0 API provides several extensions to its task-based parallelism support. Tasks can be grouped to support deep task synchronization and task groups can be aborted to reflect completion of cooperative tasking activities such as search. Task-to-task synchronization is now supported through the specification of task dependency.

•    Support for Fortran 2003. The Fortran 2003 standard adds many modern computer language features. Having these features in the specification allows users to parallelize Fortran 2003 compliant programs. This includes interoperability of Fortran and C, which is one of the most popular features in Fortran 2003.

•    User-defined reductions. Previously, the OpenMP API only supported reductions with base language operators and intrinsic procedures. With the OpenMP 4.0 API, user-defined reductions are now also supported.

•    Sequentially consistent atomics. A clause has been added to allow a programmer to enforce sequential consistency when a specific storage location is accessed atomically.

Collaborative work

“This release represents collaborative work by many of the brightest in industry, research, and academia, and it builds on the consensus of 26 members. We strive to deliver high-level parallelism that is portable across three widely-implemented common General Purpose languages, that is productive for HPC and consumers, and that delivers highly competitive performance.”, says Michael Wong, CEO of the OpenMP ARB. “I want to congratulate all the members for coming together to create such a momentous advancement in parallel programming, under such tight constraints and industry challenges. After this release, the OpenMP API specifications will move immediately forward to the next release to bring even more usable parallelism to everyone.”

About the OpenMP API
The OpenMP Application Program Interface (API) is a multi-platform shared-memory parallel programming model for the C, C++ and Fortran programming languages. Jointly defined by a group of major computer hardware and software vendors and the user community, the OpenMP API is a portable, scalable model that gives shared-memory parallel programmers a simple and flexible interface for developing parallel applications for platforms ranging from multicore systems and SMPs, to embedded systems.
 Incorporated in 1997, The OpenMP ARB is the non-profit corporation that oversees the OpenMP specification and produces and approves new versions of the specification. Further information can be found at