ISO/IEC JTC1/SC22/WG5 N1873 OpenMP liaison report Matthijs van Waveren, 7 July 2011 I am still attending the OpenMP ARB meetings. The main development is the release of OpenMP 3.1, which will be done very soon. Today we have a vote on acceptance of the specifications. In parallel the OpenMP ARB is working on development of OpenMP 4.0, which will include language items as error handling, accelerator extensions, affinity extensions, and user defined reductions. The main changes of OpenMP 3.1 with regards to OpenMP 3.0 are: * The final and mergeable clauses were added to the task construct to support optimization of task data environments. Note that mergeable tasks are optional, and they are not being implemented by Oracle. * The taskyield construct was added to allow user defined task switching points. * The atomic construct 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 constqualified types for the firstprivate clause. * Data environment restrictions were changed to allow Fortran pointers in firstprivate and lastprivate. * New reduction operators min and max were added for C and C++. * The nesting restrictions in Section 2.10 on page 111 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 was added to support specialization of final task regions. * The nthreads-var ICV has been modified to be a list of the number of threads to use at each nested parallel region level. The value of this ICV is still set with the OMP_NUM_THREADS environment variable, but the algorithm for determining the number of threads used in a parallel region has been modified to handle a list. * The bind-var ICV has been added, which controls whether or not threads are bound to processors. The value of this ICV can be set with the OMP_PROC_BIND environment variable. * Descriptions of examples were expanded and clarified. * Replaced incorrect use of omp_integer_kind in Fortran interfaces with selected_int_kind(8).