\chapter{Document Revision History} \label{chap:history} \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 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_master_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} construct (\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} construct (\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}