\cchapter{Document Revision History}{history} \label{chap:history} %===================================== \section{Changes from 5.1 to 5.2} \label{sec:history_51_to_52} \begin{itemize} \item General changes: \begin{itemize} \item Included a description of the semantics for OpenMP directive syntax (see \specref{chap:directive_syntax}) \item Reorganized the Introduction Chapter and moved the Feature Deprecation Chapter to Appendix~\ref{chap:deprecated_features} \item Included a list of examples that were updated for feature deprecation and replacement in each version (see Appendix~\ref{sec:Updated Examples}) \item Added Index entries \end{itemize} \item Updated the examples for feature deprecation and replacement in OpenMP 5.2. See Table~\ref{tab:Deprecated Features} and Table~\ref{tab:Updated Examples 5.2} for details. \item Added the following examples for the 5.2 features: \begin{itemize} \item Mapping class objects with virtual functions (\specref{sec:virtual_functions}) \item \scode{allocators} construct for Fortran \code{allocate} statement (\specref{sec:allocators}) \item Behavior of reallocation of variables through OpenMP allocator in Fortran (\specref{sec:allocators}) \end{itemize} \item Added the following examples for the 5.1 features: \begin{itemize} \item Clarification of optional \code{end} directive for strictly structured block in Fortran (\specref{sec:fortran_free_format_comments}) \item \scode{filter} clause on \scode{masked} construct (\specref{sec:masked}) \item \scode{omp_all_memory} reserved locator for specifying task dependences (\specref{subsec:depend_undefer_task}) \item Behavior of Fortran allocatable variables in \code{target} regions (\specref{sec:fort_allocatable_array_mapping}) \item Device memory routines in Fortran (\specref{subsec:target_mem_and_device_ptrs}) \item Partial tiles from \scode{tile} construct (\specref{sec:incomplete_tiles}) \item Fortran associate names and selectors in \code{target} region (\specref{sec:associate_target}) \item \scode{allocate} directive for variable declarations and \scode{allocate} clause on \scode{task} constructs (\specref{sec:allocators}) \item Controlling concurrency and reproducibility with \code{order} clause (\specref{sec:reproducible_modifier}) \end{itemize} \item Added other examples: \begin{itemize} \item Using lambda expressions with \scode{target} constructs (\specref{sec:lambda_expressions}) \item Target memory and device pointer routines (\specref{subsec:target_mem_and_device_ptrs}) \item Examples to illustrate the ordering properties of the \plc{flush} operation (\specref{sec:mem_model}) \item User selector in the \code{metadirective} directive (\specref{sec:metadirective}) \end{itemize} \end{itemize} %===================================== \section{Changes from 5.0.1 to 5.1} \label{sec:history_501_to_51} \begin{itemize} \item General changes: \begin{itemize} \item Replaced \code{master} construct example with equivalent \code{masked} construct example (\specref{sec:masked}) \item Primary thread is now used to describe thread number 0 in the current team \item \code{primary} thread affinity policy is now used to specify that every thread in the team is assigned to the same place as the primary thread (\specref{subsec:affinity_primary}) \item The \scode{omp_lock_hint_*} constants have been renamed \scode{omp_sync_hint_*} (\specref{sec:critical}, \specref{sec:locks}) \end{itemize} \item Added the following new chapters: \begin{itemize} \item Deprecated Features (on page~\pageref{chap:deprecated_features}) \item Directive Syntax (\specref{chap:directive_syntax}) \item Loop Transformations (\specref{chap:loop_transformations}) \item OMPT Interface (\specref{chap:ompt_interface}) \end{itemize} \item Added the following examples for the 5.1 features: \begin{itemize} \item OpenMP directives in C++ \plc{attribute} specifiers (\specref{sec:attributes}) \item Directive syntax adjustment to allow Fortran \code{BLOCK} ... \code{END}~\code{BLOCK} as a structured block (\specref{sec:fortran_free_format_comments}) \item \code{omp\_target\_is\_accessible} API routine (\specref{sec:pointer_mapping}) \item Fortran allocatable array mapping in \code{target} regions (\specref{sec:fort_allocatable_array_mapping}) \item \code{begin}~\code{declare}~\code{target} (with \code{end}~\code{declare}~\code{target}) directive (\specref{subsec:declare_target_class}) \item \code{tile} construct (\specref{sec:tile}) \item \code{unroll} construct (\specref{sec:unroll}) \item Reduction with the \code{scope} construct (\specref{subsec:reduction_scope}) \item \code{metadirective} directive with dynamic \code{condition} selector (\specref{sec:metadirective}) \item \code{interop} construct (\specref{sec:interop}) \item Environment display with the \scode{omp_display_env} routine (\specref{subsec:display_env}) \item \code{error} directive (\specref{subsec:error}) \end{itemize} \item Included additional examples for the 5.0 features: \begin{itemize} \item \code{collapse} clause for non-rectangular loop nest (\specref{sec:collapse}) \item \code{detach} clause for tasks (\specref{sec:task_detachment}) \item Pointer attachment for a structure member (\specref{sec:structure_mapping}) \item Host and device pointer association with the \scode{omp_target_associate_ptr} routine (\specref{sec:target_associate_ptr}) \item Sample code on activating the tool interface (\specref{sec:ompt_start}) \end{itemize} \item Added other examples: \begin{itemize} \item The \scode{omp_get_wtime} routine (\specref{subsec:get_wtime}) \end{itemize} \end{itemize} %===================================== \section{Changes from 5.0.0 to 5.0.1} \label{sec:history_50_to_501} \begin{itemize} \item Added version tags (\code{\small{}omp\_}\plc{x.y}) in example labels and the corresponding source codes for all examples that feature OpenMP 3.0 and later. \item Included additional examples for the 5.0 features: \begin{itemize} \item Extension to the \code{defaultmap} clause (\specref{sec:defaultmap}) \item Transferring noncontiguous data with the \code{target}~\code{update} directive in Fortran (\specref{sec:array-shaping}) \item \code{conditional} modifier for the \code{lastprivate} clause (\specref{sec:lastprivate}) \item \code{task} modifier for the \code{reduction} clause (\specref{subsec:task_reduction}) \item Reduction on combined target constructs (\specref{subsec:target_reduction}) \item Task reduction with \code{target} constructs (\specref{subsec:target_task_reduction}) \item \code{scan} directive for returning the \emph{prefix sum} of a reduction (\specref{sec:scan}) \end{itemize} \item Included additional examples for the 4.x features: \begin{itemize} \item Dependence for undeferred tasks (\specref{subsec:depend_undefer_task}) \item \code{ref}, \code{val}, \code{uval} modifiers for \code{linear} clause (\specref{sec:linear_modifier}) \end{itemize} \item Clarified the description of pointer mapping and pointer attachment in \specref{sec:pointer_mapping}. \item Clarified the description of memory model examples in \specref{sec:mem_model}. \end{itemize} \section{Changes from 4.5.0 to 5.0.0} \label{sec:history_45_to_50} \begin{itemize} \item Added the following examples for the 5.0 features: \begin{itemize} \item Extended \code{teams} construct for host execution (\specref{sec:host_teams}) \item \code{loop} and \code{teams}~\code{loop} constructs specify loop iterations that can execute concurrently (\specref{sec:loop}) \item Task data affinity is indicated by \code{affinity} clause of \code{task} construct (\specref{sec: task_affinity}) \item Display thread affinity with \code{OMP\_DISPLAY\_AFFINITY} environment variable or \code{omp\_display\_affinity()} API routine (\specref{sec:affinity_display}) \item \code{taskwait} with dependences (\specref{subsec:taskwait_depend}) \item \code{mutexinoutset} task dependences (\specref{subsec:task_dep_mutexinoutset}) \item Multidependence Iterators (in \code{depend} clauses) (\specref{subsec:depend_iterator}) \item Combined constructs: \code{parallel}~\code{master}~\code{taskloop} and \code{parallel}~\code{master}~\code{taskloop}~\code{simd} (\specref{sec:parallel_masked_taskloop}) \item Reverse Offload through \plc{ancestor} modifier of \code{device} clause. (\specref{subsec:target_reverse_offload}) \item Pointer Mapping - behavior of mapped pointers (\specref{sec:pointer_mapping}) %Example_target_ptr_map* \item Structure Mapping - behavior of mapped structures (\specref{sec:structure_mapping}) %Examples_target_structure_mapping.tex target_struct_map* \item Array Shaping with the \plc{shape-operator} (\specref{sec:array-shaping}) \item The \code{declare}~\code{mapper} directive (\specref{sec:declare_mapper}) \item Acquire and Release Semantics Synchronization: Memory ordering clauses \code{acquire}, \code{release}, and \code{acq\_rel} were added to flush and atomic constructs (\specref{sec:acquire_and_release_semantics}) \item \code{depobj} construct provides dependence objects for subsequent use in \code{depend} clauses (\specref{sec:depobj}) \item \code{reduction} clause for \code{task} construct (\specref{subsec:task_reduction}) \item \code{reduction} clause for \code{taskloop} construct (\specref{subsec:taskloop_reduction}) \item \code{reduction} clause for \code{taskloop}~\code{simd} construct (\specref{subsec:taskloop_reduction}) \item Memory Allocators for making OpenMP memory requests with traits (\specref{sec:allocators}) \item \code{requires} directive specifies required features of implementation (\specref{sec:requires}) \item \code{declare}~\code{variant} directive - for function variants (\specref{sec:declare_variant}) \item \code{metadirective} directive - for directive variants (\specref{sec:metadirective}) \item \code{OMP\_TARGET\_OFFLOAD} Environment Variable - controls offload behavior (\specref{sec:target_offload}) \end{itemize} \item Included the following additional examples for the 4.x features: \begin{itemize} \item more taskloop examples (\specref{sec:taskloop}) \item user-defined reduction (UDR) (\specref{subsec:UDR}) %NEW 5.0 %\item \code{target} \code{enter} and \code{exit} \code{data} unstructured data constructs (\specref{sec:target_enter_exit_data}) %Example_target_unstructured_data.* ? \end{itemize} \end{itemize} \section{Changes from 4.0.2 to 4.5.0} \begin{itemize} \item Reorganized into chapters of major topics \item Included file extensions in example labels to indicate source type \item Applied the explicit \code{map(tofrom)} for scalar variables in a number of examples to comply with the change of the default behavior for scalar variables from \code{map(tofrom)} to \code{firstprivate} in the 4.5 specification \item Added the following new examples: \begin{itemize} \item \code{linear} clause in loop constructs (\specref{sec:linear_in_loop}) \item \code{priority} clause for \code{task} construct (\specref{sec:task_priority}) \item \code{taskloop} construct (\specref{sec:taskloop}) \item \plc{directive-name} modifier in multiple \code{if} clauses on a combined construct (\specref{subsec:target_if}) \item unstructured data mapping (\specref{sec:target_enter_exit_data}) \item \code{link} clause for \code{declare}~\code{target} directive (\specref{subsec:declare_target_link}) \item asynchronous target execution with \code{nowait} clause (\specref{sec:async_target_exec_depend}) \item device memory routines and device pointers (\specref{subsec:target_mem_and_device_ptrs}) \item doacross loop nest (\specref{sec:doacross}) \item locks with hints (\specref{sec:locks}) \item C/C++ array reduction (\specref{subsec:reduction}) \item C++ reference types in data sharing clauses (\specref{sec:cpp_reference}) \end{itemize} \end{itemize} \section{Changes from 4.0.1 to 4.0.2} \begin{itemize} \item Names of examples were changed from numbers to mnemonics \item Added SIMD examples (\specref{sec:SIMD}) \item Applied miscellaneous fixes in several source codes \item Added the revision history \end{itemize} \section{Changes from 4.0 to 4.0.1} Added the following new examples: \begin{itemize} \item the \code{proc\_bind} clause (\specref{sec:affinity}) \item the \code{taskgroup} construct (\specref{sec:taskgroup}) \end{itemize} \section{Changes from 3.1 to 4.0} \begin{itemize} \item Beginning with OpenMP 4.0, examples were placed in a separate document from the specification document. \item Version 4.0 added the following new examples: \begin{itemize} \item task dependences (\specref{sec:task_depend}) \item \code{target} construct (\specref{sec:target}) \item array sections in device constructs (\specref{sec:array_sections}) \item \code{target}~\code{data} construct (\specref{sec:target_data}) \item \code{target}~\code{update} construct (\specref{sec:target_update}) \item \code{declare}~\code{target} directive (\specref{sec:declare_target}) \item \code{teams} constructs (\specref{sec:teams}) \item asynchronous execution of a \code{target} region using tasks (\specref{subsec:async_target_with_tasks}) \item device runtime routines (\specref{sec:device}) \item Fortran ASSOCIATE construct (\specref{sec:associate}) \item cancellation constructs (\specref{sec:cancellation}) \end{itemize} \end{itemize}