forked from OpenMP/Examples
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathHistory.tex
More file actions
294 lines (252 loc) · 14.4 KB
/
History.tex
File metadata and controls
294 lines (252 loc) · 14.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
\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}