2.5 OpenMP Technical Report 13

Technical Report (TR) 13 is the third preview for 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 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 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
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
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
Argument-free version of depobj including added 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
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 directiveN
Ref-count change for use_device_ptr and use_device_addrN
Support for inductionsN
Deprecation of the combiner expression in the declare_reduction argumentN
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
Update of the map-type decay for mapping and declare_mapperN
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 traitN
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 uid trait for target devices and for OMP_AVAILABLE_DEVICES and OMP_DEFAULT_DEVICEN
Extension of interop operation of append_args, allowing all modifiers of the init clauseN
For adjust_args, new need_device_addr clause and handling variadic argumentsN
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 code 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
stipe 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
workdistribute directive for FortranN
Fortran DO CONCURRENT as associated loop in a loop constructN
threadset clause in task-generating constructsN
New priority clause to target, target_enter_data, target_data, ŧarget_exit_data and target_updateN
New device_type clause to the target directive.N
target_data as composite constructN
nowait clause with reverse-offload target directivesN
Extended prefer-type modifier to init clauseN
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
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_rect_async routinesN
Fortran version of the interop runtime routinesN
Routines for obtaining memory spaces/allocators for shared/device memoryN
omp_get_memspace_num_resources routineN
omp_get_submemspace routineN
omp_get_memspace_pagesize 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
Deprecation of omitting the optional white space to separate adjacent keywords in the directive-name in FortranN
Deprecation of the Fortran include file omp_lib.hN

Other new TR 13 features

Multi-word directives now use underscore by defaultN
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
Multi-word directive names are now permitted with underscoreN
In Fortran (fixed + free), space between directive names is mandatoryN