2.5 OpenMP 6.0

New features listed in Appendix B of the OpenMP specification

Features deprecated in versions 5.0, 5.1 and 5.2 were removedN/ABackward compatibility
Full support for C23 was addedP
Full support for C++23 was addedP
Full support for Fortran 2023 was addedP
_ALL suffix to the device-scope environment variablesPHost device number wrongly accepted
num_threads clause now accepts a listN
Abstract names added for OMP_NUM_THREADS, OMP_THREAD_LIMIT and OMP_TEAMS_THREAD_LIMITN
Supporting increments with abstract names in OMP_PLACESN
Extension of OMP_DEFAULT_DEVICE and new OMP_AVAILABLE_DEVICES environment varsN
New uid trait for target devices and for OMP_AVAILABLE_DEVICES and OMP_DEFAULT_DEVICEN
New OMP_THREADS_RESERVE environment variableN
The decl attribute was added to the C++ attribute syntaxY
The OpenMP directive syntax was extended to include C23 attribute specifiersY
Support for pure directives in Fortran’s do concurrentN
All inarguable clauses take now an optional Boolean argumentN
The adjust_args clause was extended to specify the argument by position and supports variadic argumentsN
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
Extension of interop operation of append_args, allowing all modifiers of the init clauseY
New argument-free version of depobj with repeatable clauses and the init clauseN
Undeprecate omitting the argument to the depend clause of the argument version of the depend constructY
For Fortran, atomic with BLOCK construct and, for C/C++, with unlimited curly braces supportedN
For Fortran, atomic with pointer comparisonN
For Fortran, atomic with enum and enumeration typesN
For Fortran, atomic compare with storing the comparison resultN
Canonical loop sequences and new looprange clauseN
For Fortran, handling polymorphic types in data-sharing-attribute clausesPprivate not supported
For Fortran, rejecting polymorphic types in data-mapping clausesNnot diagnosed (and mostly unsupported)
New taskgraph construct including saved modifier and replayable clauseN
default clause on the target directive and accepting variable categoriesN
Semantic change regarding the reference count update with use_device_ptr and use_device_addrN
Support for inductionsN
Reduction over private variables with reduction clauseN
Implicit reduction identifiers of C++ classesN
New init_complete clause to the scan directiveN
ref modifier to the map clauseN
New storage map-type modifier; context-dependent alloc and release are aliasesN
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
delete as delete-modifier not as map typeN
For Fortran, the automap modifier to the enter clause of declare_targetN
groupprivate directiveN
local clause to declare_target directiveN
part_size allocator trait for interleaved allocator partitionsN
pin_device, preferred_device and target_access allocator traitsN
access allocator trait changesN
New partitioner value to partition allocator traitN
Semicolon-separated list to uses_allocatorsN
New need_device_addr modifier to adjust_args clauseN
interop clause to dispatchN
Scope requirement changes for declare_targetN
message and severity clauses to parallel directiveN
self_maps clause to requires directiveY
no_openmp_constructs assumptions clauseN
Restriction for ordered regarding loop-transforming directivesN
apply clause to loop-transforming constructsN
Non-constant values in the sizes clauseN
fuse loop-transformation constructN
interchange loop-transformation constructN
reverse loop-transformation constructN
split loop-transformation constructN
stripe loop-transformation constructN
tile permitting association of grid and inter-tile loopsN
strict modifier keyword to num_threadsN
safesync clause to the parallel constructN
omp_curr_progress_width identifierN
omp_get_max_progress_width runtime routineN
Lifted restrictions on order(concurrent) and, hence, the loop constructN
atomic permitted in a construct with order(concurrent)N
Lifted restrictions on not-strictly-nested regions with order(concurrent)N
workdistribute directive for FortranN
Fortran DO CONCURRENT as associated loop in a loop constructN
New task_iteration directive inside taskloopN
threadset clause in task-generating constructsN
New priority clause to target, target_enter_data, target_data, target_exit_data and target_updateN
New device_type clause to the target directiveN
target_data as composite constructN
nowait clause with reverse-offload target directivesN
Extended prefer-type modifier to init clauseY
Boolean argument to nowait and nogroup may be non constantN
memscope clause to atomic and flushN
New transparent clause for multi-generational task-dependence graphsN
The cancel construct now completes tasks with unfulfilled eventsN
omp_fulfill_event routine was restricted regarding fulfillment of event variablesN
Added rule for compound-directive names, permitting many more combinationsN
omp_is_free_agent and omp_ancestor_is_free_agent routinesN
omp_get_device_from_uid and omp_get_uid_from_device routinesY
omp_get_device_num_teams, omp_set_device_num_teams, omp_get_device_teams_thread_limit, and omp_set_device_teams_thread_limit routinesN
omp_target_memset and omp_target_memset_async routinesN
Fortran version of the interop runtime routinesY
Routines for obtaining memory spaces/allocators for shared/device memoryN
omp_get_memspace_num_resources routineN
omp_get_memspace_pagesize routineN
omp_get_submemspace routineN
omp_init_mempartitioner, omp_destroy_mempartitioner, omp_init_mempartition, omp_destroy_mempartition, omp_mempartition_set_part, omp_mempartition_get_user_data routinesN
Deprecation of the target_data_op, target, target_map and target_submit callbacks and as values that set_callback must returnN
ompt_target_data_transfer and ompt_target_data_transfer_async values in ompt_target_data_op_t enumN
The values ompt_target_data_transfer_to_device, ompt_target_data_transfer_from_device, ompt_target_data_transfer_to_device_async and ompt_target_data_transfer_from_device_async of the target_data_op OMPT type were deprecatedN
ompt_get_buffer_limits OMPT routineN

Deprecated features, unless listed above

Deprecation of omitting the optional white space to separate adjacent keywords in the directive-name in Fortran (fixed and free source form)N
Deprecation of the combiner expression in the declare_reduction argumentN
Deprecation of the Fortran include file omp_lib.hN

Other new OpenMP 6.0 features

Multi-word directives now use underscore by defaultN
Relaxed Fortran restrictions to the aligned clauseN
Mapping lambda capturesN
New omp_pause_stop_tool constant for omp_pause_resourceN
In Fortran (fixed and free source form), spaces between directive names are mandatoryN
Update of the map-type decay for mapping and declare_mapperN