From 89d2f3fefb0ae6dd4eb76f25009aa15735f09ed4 Mon Sep 17 00:00:00 2001 From: Tobias Burnus <tburnus@baylibre.com> Date: Thu, 8 Aug 2024 17:23:38 +0200 Subject: [PATCH] libgomp.texi: Update implementation status table for OpenMP TR13 libgomp/ChangeLog: * libgomp.texi (OpenMP Technical Report 13): Renamed from 'OpenMP Technical Report 12'; updated for TR13 changes. --- libgomp/libgomp.texi | 120 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 102 insertions(+), 18 deletions(-) diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi index 081e22510a5d..fe25d879788b 100644 --- a/libgomp/libgomp.texi +++ b/libgomp/libgomp.texi @@ -169,7 +169,7 @@ See also @ref{OpenMP Implementation Status}. * OpenMP 5.0:: Feature completion status to 5.0 specification * OpenMP 5.1:: Feature completion status to 5.1 specification * OpenMP 5.2:: Feature completion status to 5.2 specification -* OpenMP Technical Report 12:: Feature completion status to second 6.0 preview +* OpenMP Technical Report 13:: Feature completion status to third 6.0 preview @end menu The @code{_OPENMP} preprocessor macro and Fortran's @code{openmp_version} @@ -391,7 +391,7 @@ to address of matching mapped list item per 5.1, Sect. 2.21.7.2 @tab N @tab @item @code{destroy} clause with destroy-var argument on @code{depobj} @tab Y @tab @item Deprecation of no-argument @code{destroy} clause on @code{depobj} - @tab N @tab + @tab N/A @tab undeprecated in OpenMP 6 @item @code{linear} clause syntax changes and @code{step} modifier @tab Y @tab @item Deprecation of minus operator for reductions @tab N @tab @item Deprecation of separating @code{map} modifiers without comma @tab N @tab @@ -448,20 +448,24 @@ to address of matching mapped list item per 5.1, Sect. 2.21.7.2 @tab N @tab @end multitable -@node OpenMP Technical Report 12 -@section OpenMP Technical Report 12 +@node OpenMP Technical Report 13 +@section OpenMP Technical Report 13 -Technical Report (TR) 12 is the second preview for OpenMP 6.0. +Technical Report (TR) 13 is the third preview for OpenMP 6.0. @unnumberedsubsec New features listed in Appendix B of the OpenMP specification @multitable @columnfractions .60 .10 .25 -@item Features deprecated in versions 5.2, 5.1 and 5.0 were removed +@item Features deprecated in versions 5.0, 5.1 and 5.2 were removed @tab N/A @tab Backward compatibility @item Full support for C23 was added @tab P @tab @item Full support for C++23 was added @tab P @tab +@item Full support for Fortran 2023 was added @tab P @tab @item @code{_ALL} suffix to the device-scope environment variables @tab P @tab Host device number wrongly accepted @item @code{num_threads} now accepts a list @tab N @tab +@item Abstract names added for @code{OMP_NUM_THREADS}, + @code{OMP_THREAD_LIMIT} and @code{OMP_TEAMS_THREAD_LIMIT} + @tab N @tab @item Supporting increments with abstract names in @code{OMP_PLACES} @tab N @tab @item Extension of @code{OMP_DEFAULT_DEVICE} and new @code{OMP_AVAILABLE_DEVICES} environment vars @tab N @tab @@ -470,28 +474,51 @@ Technical Report (TR) 12 is the second preview for OpenMP 6.0. @tab Y @tab @item The OpenMP directive syntax was extended to include C 23 attribute specifiers @tab Y @tab +@item Support for pure directives in Fortran's @code{do concurrent} @tab N @tab @item All inarguable clauses take now an optional Boolean argument @tab N @tab @item For Fortran, @emph{locator list} can be also function reference with data pointer result @tab N @tab @item Concept of @emph{assumed-size arrays} in C and C++ @tab N @tab @item @emph{directive-name-modifier} accepted in all clauses @tab N @tab +@item Argument-free version of @code{depobj} including added @code{init} clause + @tab N @tab +@item Undeprecate omitting the argument to the @code{depend} clause of + the argument version of the @code{depend} construct @tab Y @tab @item For Fortran, atomic with BLOCK construct and, for C/C++, with unlimited curly braces supported @tab N @tab +@item For Fortran, atomic with pointer comparison @tab N @tab +@item For Fortran, atomic with enum and enumeration types @tab N @tab @item For Fortran, atomic compare with storing the comparison result @tab N @tab @item New @code{looprange} clause @tab N @tab -@item Ref-count change for @code{use_device_ptr}/@code{use_device_addr} +@item For Fortran, handling polymorphic types in data-sharing-attribute + clauses @tab P @tab @code{private} not supported +@item For Fortran, rejecting polymorphic types in data-mapping clauses + @tab N @tab not diagnosed (and mostly unsupported) +@item New @code{taskgraph} construct including @emph{saved} modifier and + @code{replayable} clause @tab N @tab +@item @code{default} clause on the @code{target} directive @tab N @tab +@item Ref-count change for @code{use_device_ptr} and @code{use_device_addr} @tab N @tab @item Support for inductions @tab N @tab +@item Deprecation of the combiner expression in the @code{declare_reduction} + argument @tab N @tab @item Implicit reduction identifiers of C++ classes @tab N @tab +@item New @code{init_complete} clause to the @code{scan} directive + @tab N @tab +@item @code{ref} modifier to the @code{map} clause @tab N @tab @item Change of the @emph{map-type} property from @emph{ultimate} to @emph{default} @tab N @tab @item @code{self} modifier to @code{map} and @code{self} as @code{defaultmap} argument @tab N @tab @item Mapping of @emph{assumed-size arrays} in C, C++ and Fortran @tab N @tab +@item @code{delete} as delete-modifier not as map type @tab N @tab +@item @code{release} map-type modifier in @code{declare_mapper} @tab N @tab +@item For Fortran, the @code{automap} modifier to the @code{enter} clause + of @code{declare_target} @tab N @tab @item @code{groupprivate} directive @tab N @tab @item @code{local} clause to @code{declare target} directive @tab N @tab @item @code{part_size} allocator trait @tab N @tab @@ -499,54 +526,111 @@ Technical Report (TR) 12 is the second preview for OpenMP 6.0. allocator traits @tab N @tab @item @code{access} allocator trait changes @tab N @tab -@item Extension of @code{interop} operation of @code{append_args}, allowing all - modifiers of the @code{init} clause +@item New @code{partitioner} value to @code{partition} allocator trait @tab N @tab +@item Semicolon-separated list to @code{uses_allocators} @tab N @tab +@item New @code{uid} trait for target devices and for + @code{OMP_AVAILABLE_DEVICES} and @code{OMP_DEFAULT_DEVICE} @tab N @tab +@item Extension of @code{interop} operation of @code{append_args}, allowing + all modifiers of the @code{init} clause @tab N @tab +@item For @code{adjust_args}, new @code{need_device_addr} clause and + handling variadic arguments @tab N @tab @item @code{interop} clause to @code{dispatch} @tab N @tab +@item Scope requirement changes for @code{declare_target} @tab N @tab @item @code{message} and @code{severity} clauses to @code{parallel} directive @tab N @tab -@item @code{self} clause to @code{requires} directive @tab N @tab +@item @code{self_maps} clause to @code{requires} directive @tab N @tab @item @code{no_openmp_constructs} assumptions clause @tab N @tab -@item @code{reverse} loop-transformation construct @tab N @tab -@item @code{interchange} loop-transformation construct @tab N @tab -@item @code{fuse} loop-transformation construct @tab N @tab +@item Restriction for @code{ordered} regarding loop-transforming directives + @tab N @tab @item @code{apply} code to loop-transforming constructs @tab N @tab -@item @code{omp_curr_progress_width} identifier @tab N @tab +@item Non-constant values in the @code{sizes} clause @tab N @tab +@item @code{fuse} loop-transformation construct @tab N @tab +@item @code{interchange} loop-transformation construct @tab N @tab +@item @code{reverse} loop-transformation construct @tab N @tab +@item @code{split} loop-transformation construct @tab N @tab +@item @code{stipe} loop-transformation construct @tab N @tab +@item @code{tile} permitting association of grid and inter-tile loops @tab N @tab +@item @code{strict} modifier keyword to @code{num_threads} @tab N @tab @item @code{safesync} clause to the @code{parallel} construct @tab N @tab +@item @code{omp_curr_progress_width} identifier @tab N @tab @item @code{omp_get_max_progress_width} runtime routine @tab N @tab -@item @code{strict} modifier keyword to @code{num_threads} @tab N @tab +@item Lifted restrictions on @code{order(concurrent)} and, hence, the + @code{loop} construct @tab N @tab @item @code{atomic} permitted in a construct with @code{order(concurrent)} @tab N @tab -@item @code{workdistribute} directive for Fortran @tab N - @tab Renamed just after TR12; added in TR12 as @code{coexecute} +@item @code{workdistribute} directive for Fortran @tab N @tab @item Fortran DO CONCURRENT as associated loop in a @code{loop} construct @tab N @tab @item @code{threadset} clause in task-generating constructs @tab N @tab +@item New @code{priority} clause to @code{target}, @code{target_enter_data}, + @code{target_data}, @code{ŧarget_exit_data} and @code{target_update} + @tab N @tab +@item New @code{device_type} clause to the @code{target} directive. + @tab N @tab +@item @code{target_data} as composite construct @tab N @tab @item @code{nowait} clause with reverse-offload @code{target} directives @tab N @tab +@item Extended @emph{prefer-type} modifier to @code{init} clause @tab N @tab @item Boolean argument to @code{nowait} and @code{nogroup} may be non constant @tab N @tab @item @code{memscope} clause to @code{atomic} and @code{flush} @tab N @tab +@item New @code{transparent} clause for multi-generational task-dependence graphs + @tab N @tab +@item Added rule for compound-directive names, permitting many more combinations + @tab N @tab @item @code{omp_is_free_agent} and @code{omp_ancestor_is_free_agent} routines @tab N @tab +@item @code{omp_get_device_from_uid} and @code{omp_get_uid_from_device} routines + @tab N @tab +@item @code{omp_get_device_num_teams}, @code{omp_set_device_num_teams}, + @code{omp_get_device_teams_thread_limit}, and + @code{omp_set_device_teams_thread_limit} routines @tab N @tab @item @code{omp_target_memset} and @code{omp_target_memset_rect_async} routines @tab N @tab +@item Fortran version of the interop runtime routines @tab N @tab @item Routines for obtaining memory spaces/allocators for shared/device memory @tab N @tab @item @code{omp_get_memspace_num_resources} routine @tab N @tab @item @code{omp_get_submemspace} routine @tab N @tab +@item @code{omp_get_memspace_pagesize} routine @tab N @tab +@item @code{omp_init_mempartitioner}, @code{omp_destroy_mempartitioner}, + @code{omp_init_mempartition}, @code{omp_destroy_mempartition}, + @code{omp_mempartition_set_part}, @code{omp_mempartition_get_user_data} + routines @tab N @tab +@item Deprecation of the @code{target_data_op}, @code{target}, + @code{target_map} and @code{target_submit} callbacks and as values that + @code{set_callback} must return @tab N @tab @item @code{ompt_target_data_transfer} and @code{ompt_target_data_transfer_async} values in @code{ompt_target_data_op_t} enum @tab N @tab +@item The values @code{ompt_target_data_transfer_to_device}, + @code{ompt_target_data_transfer_from_device}, + @code{ompt_target_data_transfer_to_device_async} and + @code{ompt_target_data_transfer_from_device_async} of the @code{target_data_op} + OMPT type were deprecated @tab N @tab @item @code{ompt_get_buffer_limits} OMPT routine @tab N @tab + +@c From the deprecation list, unless listed above. + +@item Deprecation of omitting the optional white space to separate adjacent + keywords in the directive-name in Fortran @tab N @tab +@item Deprecation of the Fortran include file @code{omp_lib.h} + @tab N @tab @end multitable -@unnumberedsubsec Other new TR 12 features +@unnumberedsubsec Other new TR 13 features @multitable @columnfractions .60 .10 .25 +@item Multi-word directives now use underscore by default @tab N @tab @item Canonical loop nest enclosed in (multiple) curly braces (C/C++) or BLOCK constructs (Fortran) @tab N @tab @item Relaxed Fortran restrictions to the @code{aligned} clause @tab N @tab @item Mapping lambda captures @tab N @tab @item New @code{omp_pause_stop_tool} constant for omp_pause_resource @tab N @tab +@item Multi-word directive names are now permitted with underscore @tab N @tab +@item In Fortran (fixed + free), space between directive names is mandatory + @tab N @tab +@item @code{map(release: ...)} on @code{target} and @code{target_data} (map-type + decay changes) @tab N @tab post-TR13 item @end multitable -- GitLab