2.5 OpenMP Technical Report 12

Technical Report (TR) 12 is the second preview for OpenMP 6.0.

New features listed in Appendix B of the OpenMP specification

Features deprecated in versions 5.2, 5.1 and 5.0 were removedN/ABackward compatibility
Full support for C23 was addedP
Full support for C++23 was addedP
_ALL suffix to the device-scope environment variablesPHost device number wrongly accepted
num_threads now accepts a listN
Supporting increments with abstract names in OMP_PLACESN
Extension of OMP_DEFAULT_DEVICE and new OMP_AVAILABLE_DEVICES environment varsN
New OMP_THREADS_RESERVE environment variableN
The decl attribute was added to the C++ attribute syntaxY
The OpenMP directive syntax was extended to include C 23 attribute specifiersY
All inarguable clauses take now an optional Boolean argumentN
For Fortran, locator list can be also function reference with data pointer resultN
Concept of assumed-size arrays in C and C++N
directive-name-modifier accepted in all clausesN
For Fortran, atomic with BLOCK construct and, for C/C++, with unlimited curly braces supportedN
For Fortran, atomic compare with storing the comparison resultN
New looprange clauseN
Ref-count change for use_device_ptr/use_device_addrN
Support for inductionsN
Implicit reduction identifiers of C++ classesN
Change of the map-type property from ultimate to defaultN
self modifier to map and self as defaultmap argumentN
Mapping of assumed-size arrays in C, C++ and FortranN
groupprivate directiveN
local clause to declare target directiveN
part_size allocator traitN
pin_device, preferred_device and target_access allocator traitsN
access allocator trait changesN
Extension of interop operation of append_args, allowing all modifiers of the init clauseN
interop clause to dispatchN
message and severity clauses to parallel directiveN
self clause to requires directiveN
no_openmp_constructs assumptions clauseN
reverse loop-transformation constructN
interchange loop-transformation constructN
fuse loop-transformation constructN
apply code to loop-transforming constructsN
omp_curr_progress_width identifierN
safesync clause to the parallel constructN
omp_get_max_progress_width runtime routineN
strict modifier keyword to num_threadsN
atomic permitted in a construct with order(concurrent)N
workdistribute directive for FortranNRenamed just after TR12; added in TR12 as coexecute
Fortran DO CONCURRENT as associated loop in a loop constructN
threadset clause in task-generating constructsN
nowait clause with reverse-offload target directivesN
Boolean argument to nowait and nogroup may be non constantN
memscope clause to atomic and flushN
omp_is_free_agent and omp_ancestor_is_free_agent routinesN
omp_target_memset and omp_target_memset_rect_async routinesN
Routines for obtaining memory spaces/allocators for shared/device memoryN
omp_get_memspace_num_resources routineN
omp_get_submemspace routineN
ompt_target_data_transfer and ompt_target_data_transfer_async values in ompt_target_data_op_t enumN
ompt_get_buffer_limits OMPT routineN

Other new TR 12 features

Canonical loop nest enclosed in (multiple) curly braces (C/C++) or BLOCK constructs (Fortran)N
Relaxed Fortran restrictions to the aligned clauseN
Mapping lambda capturesN
New omp_pause_stop_tool constant for omp_pause_resourceN