mirror of
https://github.com/OpenMP/Examples.git
synced 2025-04-03 13:21:33 +01:00
495 lines
23 KiB
TeX
495 lines
23 KiB
TeX
\cchapter{Document Revision History}{history}
|
|
\label{chap:history}
|
|
|
|
%=====================================
|
|
\section{Changes from 5.2.2 to 6.0}
|
|
\label{sec:history_522_to_60}
|
|
|
|
\begin{itemize}
|
|
\item General changes:
|
|
\begin{itemize}
|
|
\item Added a set of structured LaTeX environments for specifying
|
|
language-dependent text. This allows extracting language-specific
|
|
content of the Examples document. Refer to the content of
|
|
\examplesblob{v6.0/Contributions.md} for details.
|
|
\end{itemize}
|
|
|
|
\item Added the following examples for the 6.0 features:
|
|
\begin{itemize}
|
|
\item \kcode{omp::decl} attribute for declarative directives in C/C++
|
|
(\specref{sec:attributes})
|
|
\item \kcode{transparent} clause on the \kcode{task} construct to enable dependences
|
|
between non-sibling tasks (\specref{subsec:depend_trans_task})
|
|
\item Task dependences for \kcode{taskloop} construct
|
|
(\specref{sec:taskloop_depend})
|
|
\item \kcode{num_threads} clause that appears inside \kcode{target} region
|
|
(\specref{subsec:target_teams_num_teams})
|
|
\item \kcode{nowait} clause with argument on the \kcode{target} construct to control deferment
|
|
of target task (\specref{subsec:async_target_nowait_arg})
|
|
\item Traits for specifying devices (\specref{sec:device_env_traits})
|
|
\item \kcode{apply} clause with modifier argument to
|
|
support selective loop transformations
|
|
(\specref{sec:apply_clause})
|
|
\item Reduction on private variables in a \kcode{parallel} region
|
|
(\specref{subsec:priv_reduction})
|
|
\item \kcode{induction} clause (\specref{subsec:induction})
|
|
and user-defined induction (\specref{subsec:user-defined-induction})
|
|
\item \kcode{init_complete} clause for \kcode{scan} directive to
|
|
support initialization phase in scan operation
|
|
(\specref{sec:scan})
|
|
\item \kcode{assume} construct with \kcode{no_openmp} and \kcode{no_parallelism} clauses (\specref{sec:assumption})
|
|
\item \kcode{num_threads} clause with a list
|
|
(\specref{subsec:icv_nthreads})
|
|
\item \kcode{dispatch} construct to control variant substitution
|
|
for a procedure call (\specref{sec:dispatch})
|
|
\end{itemize}
|
|
|
|
\item Other changes:
|
|
\begin{itemize}
|
|
\item Changed attribute specifier as a directive form from C++ only to C/C++
|
|
(\specref{chap:directive_syntax})
|
|
\item Added missing \bcode{include <omp.h>} in Example \example{atomic.4.c}
|
|
and \bcode{use omp_lib} in Example \example{atomic.4.f90}
|
|
(\specref{sec:atomic_hint})
|
|
\item Fixed the function declaration order for variant functions in
|
|
Examples \example{selector_scoring.[12].c} and Fortran pointer
|
|
initialization in Example \example{selector_scoring.2.f90}
|
|
(\specref{subsec:context_selector_scoring})
|
|
\item Replaced the deprecated use of \plc{combiner-exp}
|
|
in \kcode{declare reduction} directive with \kcode{combiner} clause
|
|
(\specref{subsec:UDR} and \specref{sec:Updated Examples})
|
|
\item Fixed the initialization of Fortran pointers
|
|
in Example \example{cancellation.2.f90} and changed to
|
|
use \kcode{atomic write} for performing atomic writes
|
|
(\specref{sec:cancellation})
|
|
\item Added missing \kcode{declare target} directive for external procedure
|
|
called inside \kcode{target} region in Example
|
|
\example{requires.1.f90} (\specref{sec:requires})
|
|
\end{itemize}
|
|
|
|
\end{itemize}
|
|
|
|
%=====================================
|
|
\section{Changes from 5.2.1 to 5.2.2}
|
|
\label{sec:history_521_to_522}
|
|
|
|
\begin{itemize}
|
|
\item To improve the style of the document, a set of macros was introduced
|
|
and consistently used for language keywords, names, concepts, and user codes
|
|
in the text description of the document. Refer to the content of
|
|
\examplesblob{v5.2.2/Contributions.md}
|
|
for details.
|
|
|
|
\item Added the following examples:
|
|
\begin{itemize}
|
|
\item Orphaned and nested \kcode{loop} constructs (\specref{sec:loop})
|
|
\item \kcode{all} variable category for the \kcode{defaultmap} clause
|
|
(\specref{sec:defaultmap})
|
|
\item \kcode{target update} construct using a custom mapper
|
|
(\specref{subsec:target_update_mapper})
|
|
\item \kcode{indirect} clause for indirect procedure calls in a
|
|
\kcode{target} region (\specref{subsec:indirect})
|
|
\item \kcode{omp_target_memcpy_async} routine with depend object
|
|
(\specref{subsec:target_mem_and_device_ptrs})
|
|
\item Synchronization hint for atomic operation (\specref{sec:atomic_hint})
|
|
\item Implication of passing shared variable to a procedure
|
|
in Fortran (\specref{sec:fort_shared_var})
|
|
\item Assumption directives for providing additional information
|
|
about program properties (\specref{sec:assumption})
|
|
\item Mapping behavior of scalars, pointers, references (C++) and associate names
|
|
(Fortran) when unified shared memory is required
|
|
(\specref{sec:requires})
|
|
\item \kcode{begin declare variant} paired with \kcode{end declare variant}
|
|
example to show use of nested declare variant
|
|
directives (\specref{subsec:declare_variant})
|
|
\item Explicit scoring in context selectors
|
|
(\specref{subsec:context_selector_scoring})
|
|
\end{itemize}
|
|
|
|
\item Miscellaneous changes:
|
|
\begin{itemize}
|
|
\item Included a general statement in Introduction about the number of
|
|
threads used throughout the examples document (\specref{sec:examples})
|
|
\item Clarified the mapping of virtual functions in \kcode{target} regions
|
|
(\specref{sec:virtual_functions})
|
|
\item Added missing \kcode{declare target} directive for procedures
|
|
called inside \kcode{target} region in \example{Examples}
|
|
\example{declare_mapper.1.f90} (\specref{sec:declare_mapper}),
|
|
\example{target_reduction.*.f90} (\specref{subsec:target_reduction}),
|
|
and \example{target_task_reduction.*.f90}
|
|
(\specref{subsec:target_task_reduction})
|
|
\item Added missing \kcode{end target} directive in
|
|
\example{Example declare_mapper.3.f90}
|
|
(\specref{sec:declare_mapper})
|
|
\item Removed example for \kcode{flush} without a list from Synchronization
|
|
since the example is confusing and the use of \kcode{flush} is already
|
|
covered in other examples
|
|
(\specref{chap:synchronization})
|
|
\item \docref{declare variant Directive} and \docref{Metadirective} sections were moved to
|
|
subsections in the new \docref{Context-based Variant Selection} section,
|
|
with a section introduction on context selectors.
|
|
(\specref{sec:context_based_variants})
|
|
\item Fixed a typo (`\kcode{for}' $\rightarrow$ `\kcode{do}') in
|
|
\example{Example metadirective.4.f90}
|
|
(\specref{subsec:metadirective})
|
|
\end{itemize}
|
|
|
|
\end{itemize}
|
|
|
|
%=====================================
|
|
\section{Changes from 5.2 to 5.2.1}
|
|
\label{sec:history_52_to_521}
|
|
|
|
\begin{itemize}
|
|
\item General changes:
|
|
\begin{itemize}
|
|
\item Updated source metadata tags for all examples to use an improved form
|
|
(see \examplesblob{v5.2.1/Contributions.md})
|
|
\item Explicitly included the version tag \verlabel[pre\_]{3.0} in those
|
|
examples that did not contain a version tag previously
|
|
\end{itemize}
|
|
|
|
\item Added the following examples for the 5.2 features:
|
|
\begin{itemize}
|
|
\item \kcode{uses_allocators} clause for the use of allocators in
|
|
\kcode{target} regions (\specref{sec:allocators})
|
|
\end{itemize}
|
|
\item Added the following examples for the 5.1 features:
|
|
\begin{itemize}
|
|
\item The \kcode{inoutset} dependence type (\specref{subsec:task_concurrent_depend})
|
|
\item Atomic compare and capture (\specref{sec:cas})
|
|
\end{itemize}
|
|
\item Added the following examples for the 5.0 features:
|
|
\begin{itemize}
|
|
\item \kcode{declare target} directive with \kcode{device_type(nohost)}
|
|
clause (\specref{subsec:declare_target_device_type})
|
|
\item \kcode{omp_pause_resource} and \kcode{omp_pause_resource_all}
|
|
routines (\specref{sec:pause_resource})
|
|
\end{itemize}
|
|
|
|
\item Miscellaneous fixes:
|
|
\begin{itemize}
|
|
\item Cast to implementation-defined enum type \kcode{omp_event_handle_t}
|
|
now uses \bcode{uintptr_t} (not \bcode{void *}) in
|
|
\example{Example task_detach.2.c}
|
|
(\specref{sec:task_detachment})
|
|
\item Moved Fortran \kcode{requires} directive into program main (\ucode{rev_off}),
|
|
the program unit, in \example{Example target_reverse_offload.7.f90}
|
|
(\specref{subsec:target_reverse_offload})
|
|
\item Fixed an inconsistent use of mapper in \example{Example target_mapper.3.f90}
|
|
(\specref{sec:declare_mapper})
|
|
\item Added a missing semicolon at end of \ucode{XOR1} class definition in
|
|
\example{Example declare_target.2a.cpp}
|
|
(\specref{subsec:declare_target_class})
|
|
\item Fixed the placement of \kcode{declare simd} directive in
|
|
\example{Examples linear_modifier.*.f90} (\specref{sec:linear_modifier})
|
|
and added a general statement about where a Fortran declarative
|
|
directive can appear (\specref{chap:directive_syntax})
|
|
\item Fixed mismatched argument list in \example{Example fort_sa_private.5.f}
|
|
(\specref{sec:fort_sa_private})
|
|
\item Moved the placement of \kcode{declare target enter}
|
|
directive after function declaration
|
|
(\specref{subsec:target_task_reduction})
|
|
\item Fixed an incorrect use of \kcode{omp_in_parallel} routine in
|
|
\example{Example metadirective.4}
|
|
(\specref{subsec:metadirective})
|
|
\item Fixed an incorrect value for \kcode{at} clause
|
|
(\specref{subsec:error})
|
|
\end{itemize}
|
|
|
|
\end{itemize}
|
|
|
|
%=====================================
|
|
\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 \kcode{allocators} construct for Fortran \bcode{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 \kcode{end} directive for strictly structured
|
|
block in Fortran (\specref{sec:fortran_free_format_comments})
|
|
\item \kcode{filter} clause on \kcode{masked} construct (\specref{sec:masked})
|
|
\item \kcode{omp_all_memory} reserved locator for specifying task dependences
|
|
(\specref{subsec:depend_undefer_task})
|
|
\item Behavior of Fortran allocatable variables in \kcode{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 \kcode{tile} construct
|
|
(\specref{sec:incomplete_tiles})
|
|
\item Fortran associate names and selectors in \kcode{target} region
|
|
(\specref{sec:associate_target})
|
|
\item \kcode{allocate} directive for variable declarations and
|
|
\kcode{allocate} clause on \kcode{task} constructs
|
|
(\specref{sec:allocators})
|
|
\item Controlling concurrency and reproducibility with \kcode{order} clause
|
|
(\specref{sec:reproducible_modifier})
|
|
\end{itemize}
|
|
|
|
\item Added other examples:
|
|
\begin{itemize}
|
|
\item Using lambda expressions with \kcode{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 \kcode{metadirective} directive
|
|
(\specref{subsec: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 \kcode{master} construct example with equivalent \kcode{masked} construct example (\specref{sec:masked})
|
|
\item Primary thread is now used to describe thread number 0 in the current team
|
|
\item \kcode{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 \kcode{omp_lock_hint_*} constants have been renamed \kcode{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 \bcode{BLOCK} ...
|
|
\bcode{END BLOCK} as a structured block
|
|
(\specref{sec:fortran_free_format_comments})
|
|
\item \kcode{omp_target_is_accessible} API routine
|
|
(\specref{sec:pointer_mapping})
|
|
\item Fortran allocatable array mapping in \kcode{target} regions (\specref{sec:fort_allocatable_array_mapping})
|
|
\item \kcode{begin declare target} (with
|
|
\kcode{end declare target}) directive
|
|
(\specref{subsec:declare_target_class})
|
|
\item \kcode{tile} construct (\specref{sec:tile})
|
|
\item \kcode{unroll} construct (\specref{sec:unroll})
|
|
\item Reduction with the \kcode{scope} construct
|
|
(\specref{subsec:reduction_scope})
|
|
\item \kcode{metadirective} directive with dynamic \kcode{condition} selector
|
|
(\specref{subsec:metadirective})
|
|
\item \kcode{interop} construct (\specref{sec:interop})
|
|
\item Environment display with the \kcode{omp_display_env} routine
|
|
(\specref{subsec:display_env})
|
|
\item \kcode{error} directive (\specref{subsec:error})
|
|
\end{itemize}
|
|
|
|
\item Included additional examples for the 5.0 features:
|
|
\begin{itemize}
|
|
\item \kcode{collapse} clause for non-rectangular loop nest
|
|
(\specref{sec:collapse})
|
|
\item \kcode{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 \kcode{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 \kcode{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 \verlabel{\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 \kcode{defaultmap} clause
|
|
(\specref{sec:defaultmap})
|
|
\item Transferring noncontiguous data with the \kcode{target update} directive in Fortran (\specref{sec:array-shaping})
|
|
\item \kcode{conditional} modifier for the \kcode{lastprivate} clause (\specref{sec:lastprivate})
|
|
\item \kcode{task} modifier for the \kcode{reduction} clause (\specref{subsec:task_reduction})
|
|
\item Reduction on combined target constructs (\specref{subsec:target_reduction})
|
|
\item Task reduction with \kcode{target} constructs
|
|
(\specref{subsec:target_task_reduction})
|
|
\item \kcode{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 \kcode{ref}, \kcode{val}, \kcode{uval} modifiers for \kcode{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 \kcode{teams} construct for host execution (\specref{sec:host_teams})
|
|
\item \kcode{loop} and \kcode{teams loop} constructs specify loop iterations that can execute concurrently
|
|
(\specref{sec:loop})
|
|
\item Task data affinity is indicated by \kcode{affinity} clause of \kcode{task} construct
|
|
(\specref{sec: task_affinity})
|
|
\item Display thread affinity with \kcode{OMP_DISPLAY_AFFINITY} environment variable or \kcode{omp_display_affinity()} API routine
|
|
(\specref{sec:affinity_display})
|
|
\item \kcode{taskwait} with dependences (\specref{subsec:taskwait_depend})
|
|
\item \kcode{mutexinoutset} task dependences (\specref{subsec:task_dep_mutexinoutset})
|
|
\item Multidependence Iterators (in \kcode{depend} clauses) (\specref{subsec:depend_iterator})
|
|
\item Combined constructs: \kcode{parallel master taskloop} and \kcode{parallel master taskloop simd}
|
|
(\specref{sec:parallel_masked_taskloop})
|
|
\item Reverse Offload through \kcode{ancestor} modifier of \kcode{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 \kcode{declare mapper} directive (\specref{sec:declare_mapper})
|
|
\item Acquire and Release Semantics Synchronization: Memory ordering
|
|
clauses \kcode{acquire}, \kcode{release}, and \kcode{acq_rel} were added
|
|
to flush and atomic constructs
|
|
(\specref{sec:acquire_and_release_semantics})
|
|
\item \kcode{depobj} construct provides dependence objects for subsequent use in \kcode{depend} clauses
|
|
(\specref{sec:depobj})
|
|
\item \kcode{reduction} clause for \kcode{task} construct (\specref{subsec:task_reduction})
|
|
\item \kcode{reduction} clause for \kcode{taskloop} construct (\specref{subsec:taskloop_reduction})
|
|
\item \kcode{reduction} clause for \kcode{taskloop simd} construct (\specref{subsec:taskloop_reduction})
|
|
\item Memory Allocators for making OpenMP memory requests with traits (\specref{sec:allocators})
|
|
\item \kcode{requires} directive specifies required features of implementation (\specref{sec:requires})
|
|
\item \kcode{declare variant} directive - for function variants
|
|
(\specref{subsec:declare_variant})
|
|
\item \kcode{metadirective} directive - for directive variants
|
|
(\specref{subsec:metadirective})
|
|
\item \kcode{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 \kcode{map(tofrom)} for scalar variables
|
|
in a number of examples to comply with
|
|
the change of the default behavior for scalar variables from
|
|
\kcode{map(tofrom)} to \kcode{firstprivate} in the 4.5 specification
|
|
\item Added the following new examples:
|
|
|
|
\begin{itemize}
|
|
\item \kcode{linear} clause in loop constructs (\specref{sec:linear_in_loop})
|
|
\item \kcode{priority} clause for \kcode{task} construct (\specref{sec:task_priority})
|
|
\item \kcode{taskloop} construct (\specref{sec:taskloop})
|
|
\item \plc{directive-name} modifier in multiple \kcode{if} clauses on
|
|
a combined construct (\specref{subsec:target_if})
|
|
\item unstructured data mapping (\specref{sec:target_enter_exit_data})
|
|
\item \kcode{link} clause for \kcode{declare target} directive
|
|
(\specref{subsec:declare_target_link})
|
|
\item asynchronous target execution with \kcode{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 \kcode{proc_bind} clause (\specref{sec:affinity})
|
|
\item the \kcode{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 \kcode{target} construct (\specref{sec:target})
|
|
\item array sections in device constructs (\specref{sec:array_sections})
|
|
\item \kcode{target data} construct (\specref{sec:target_data})
|
|
\item \kcode{target update} construct (\specref{sec:target_update})
|
|
\item \kcode{declare target} directive (\specref{sec:declare_target})
|
|
\item \kcode{teams} constructs (\specref{sec:teams})
|
|
\item asynchronous execution of a \kcode{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}
|