IBM® XL C/C++
for Linux®,
V10.1, supports the OpenMP API Version
3.0 specification. The XL C/C++ implementation
is based on IBM's interpretation of the OpenMP Application Program
Interface Draft 3.0 Public Comment.
The main differences between Version 2.5 and Version 3.0 are:
- Addition of task level parallelization. The new OpenMP constructs TASK and TASKWAIT give
users the ability to parallelize irregular algorithms, such as pointer
chasing or recursive algorithms for which the existing OpenMP constructs
were not adequate.
- for loops can now contain var values
of unsigned int and pointer type
as well as signed int.
- Stack size control. You can now control the
size of the stack for threads created by the OMP runtime library using
the new environment variable OMP_STACKSIZE.
- Users can give hints to the desired behavior
of waiting threads using new environment variables OMP_WAIT_POLICY and OMP_SET_POLICY.
- Storage reuse. Some restrictions on the PRIVATE clause
have been removed. A list item that appears in the reduction clause
of a parallel construct can now also appear in a private clause
on a work-sharing construct.
- Scheduling. A new SCHEDULE attribute, auto,
allows the compiler and runtime system to control scheduling.
- Consecutive loop constructs with STATIC schedule
can now use nowait.
- Nesting support - a COLLAPSE clause has been
added to the DO, FOR, PARALLEL
FOR, and PARALLEL DO directives to
allow parallelization of perfect loop nests. This means that multiple
loops in a nest can be parallelized.
- THREADPRIVATE directives
can now apply to variables at class scope in addition to file and
block scope.
- Parallelization of iterator loops of
canonical form including those with random access iterators.
For more information, see: