This draft will serve as the basis of an official 3.1 update of the specification, which is expected to be ratified in time for the International Workshop on OpenMP (IWOMP) 2011 in Chicago. All interested users and implementers are invited to review the comment draft and to provide feedback through this OpenMP Forum. The comment period ends May 1, 2011.
The 3.1 version is intended as a minor release that will not break existing, correct OpenMP applications. However, it does include several new features, most notably the addition of predefined min and max operators for C and C++, and extensions to the atomic construct that allow the value of the shared variable that the construct updates to be captured or written without being read. It also includes extensions to the OpenMP tasking model that support optimization of its use.
Please post your comments in this forum by creating a new topic.
Appendix F of the draft spec lists the differences between 3.0 and the 3.1 draft:
Version 3.0 to 3.1 Differences
- The final and mergeable clauses (see Section 2.7.1 on page 59) were added to the task construct to support optimization of task data environments.
- The taskyield construct (see Section 2.7.2 on page 62) was added to allow user- defined task switching points.
- The atomic construct (see Section 2.8.5 on page 71) was extended to include read, write, and capture forms, and an update clause was added to apply the already existing form of the atomic construct.
- Data environment restrictions were changed to allow intent(in) and const- qualified types for the firstprivate clause (see Section 126.96.36.199 on page 97).
- New reduction operators '''min''' and '''max''' were added for C and C++ (see Section 188.8.131.52 on page 101 and page 104)
- The nesting restrictions in Section 2.10 on page 109 were clarified to disallow closely-nested OpenMP regions within an atomic region. This allows an atomic region to be consistently defined with other OpenMP regions so that they include all the code in the atomic construct.
- The omp_in_final runtime library routine (see Section 3.2.20 on page 138) was added to support specialization of final or included task regions.
- Descriptions of examples (see Appendix A on page 159) were expanded and clarified.
- Incorrect use of omp_integer_kind in Fortran interfaces (see Appendix D on page 325) was corrected.