blob: 0af518270c210b229bdf6fc678c05bc8586e5255 [file] [log] [blame]
Jinxin Yang80c99952019-05-24 00:13:521# Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
Hongyon Suauthai6f7b4fa2018-05-16 14:28:542# OpenMP 4.5 Specifications
3
Jinxin Yang80c99952019-05-24 00:13:5242 omp-directive -> sentinel directive-name [clause[ [,] clause]...]
Hongyon Suauthai6f7b4fa2018-05-16 14:28:5452.1.1 sentinel -> !$omp | c$omp | *$omp
62.1.2 sentinel -> !$omp
Jinxin Yang80c99952019-05-24 00:13:527
8# directive-name
92.5 parallel -> PARALLEL [parallel-clause[ [,] parallel-clause]...]
10 parallel-clause -> if-clause |
11 num-threads-clause |
12 default-clause |
13 private-clause |
14 firstprivate-clause |
15 shared-clause |
16 copyin-clause |
17 reduction-clause |
18 proc-bind-clause
19
202.7.1 do -> DO [do-clause[ [,] do-clause]...]
21 do-clause -> private-clause |
22 firstprivate-clause |
23 lastprivate-clause |
24 linear-clause |
25 reduction-clause |
26 schedule-clause |
27 collapse-clause |
28 ordered-clause
29
302.7.1 end-do -> END DO [nowait-clause]
31
322.7.2 sections -> SECTIONS [sections-clause[ [,] sections-clause]...]
33 sections-clause -> private-clause |
34 firstprivate-clause |
35 lastprivate-clause |
36 reduction-clause
37
382.7.2 end-sections -> END SECTIONS [nowait-clause]
39
402.7.3 single -> SINGLE [single-clause[ [,] single-clause]...]
41 single-clause -> private-clause |
42 firstprivate-clause
43
442.7.3 end-single -> END SINGLE [end-single-clause[ [,] end-single-clause]...]
45 end-single-clause -> copyprivate-clause |
46 nowait-clause
47
482.7.4 workshare -> WORKSHARE
49
502.7.4 end-workshare -> END WORKSHARE [nowait-clause]
51
522.8.1 simd -> SIMD [simd-clause[ [,] simd-clause]...]
53 simd-clause -> safelen-clause |
54 simdlen-clause |
55 linear-clause |
56 aligned-clause |
57 private-clause |
58 lastprivate-clause |
59 reduction-clause |
60 collapse-clause
61
622.8.2 declare-simd -> DECLARE SIMD [(proc-name)] [declare-simd-clause[ [,] declare-simd-clause]...]
63 declare-simd-clause -> simdlen-clause |
64 linear-clause |
65 aligned-clause |
66 uniform-clause |
67 inbranch-clause |
68 notinbranch-clause
69
702.8.3 do-simd -> DO SIMD [do-simd-clause[ [,] do-simd-clause]...]
71 do-simd-clause -> do-clause |
72 simd-clause
73
742.8.4 end-do-simd -> END DO SIMD [nowait-clause]
75
762.9.1 task -> TASK [task-clause[ [,] task-clause]...]
77 task-clause -> if-clause |
78 final-clause |
79 untied-clause |
80 default-clause |
81 mergeable-clause |
82 private-clause |
83 firstprivate-clause |
84 shared-clause |
85 depend-clause |
86 priority-clause
87
882.9.2 taskloop -> TASKLOOP [taskloop-clause[ [,] taskloop-clause]...]
89 taskloop-clause -> if-clause |
90 shared-clause |
91 private-clause |
92 firstprivate-clause |
93 lastprivate-clause |
94 default-clause |
95 grainsize-clause |
96 num-tasks-clause |
97 collapse-clause |
98 final-clause |
99 priority-clause |
100 untied-clause |
101 mergeable-clause |
102 nogroup-clause
103
1042.9.3 taskloop-simd -> TASKLOOP SIMD [taskloop-simd-clause[ [,] taskloop-simd-clause]...]
105 taskloop-simd-clause -> taskloop-clause |
106 simd-clause
107
Hongyon Suauthai6f7b4fa2018-05-16 14:28:541082.9.4 taskyield -> TASKYIELD
Jinxin Yang80c99952019-05-24 00:13:52109
1102.10.1 target-data -> TARGET DATA target-data-clause[ [ [,] target-data-clause]...]
111 target-data-clause -> if-clause |
112 device-clause |
113 map-clause |
114 use-device-ptr-clause
115
1162.10.2 target-enter-data -> TARGET ENTER DATA [ target-enter-data-clause[ [,] target-enter-data-clause]...]
117 target-enter-data-clause -> if-clause |
118 device-clause |
119 map-clause |
120 depend-clause |
121 nowait-clause
122
1232.10.3 target-exit-data -> TARGET EXIT DATA [ target-exit-data-clause[ [,] target-exit-data-clause]...]
124 target-exit-data-clause -> if-clause |
125 device-clause |
126 map-clause |
127 depend-clause |
128 nowait-clause
129
1302.10.4 target -> TARGET [target-clause[ [,] target-clause]...]
131 target-clause -> if-clause |
132 device-clause |
133 private-clause |
134 firstprivate-clause |
135 map-clause |
136 is-device-ptr-clause |
137 defaultmap-clause |
138 nowait-clause |
139 depend-clause
140
1412.10.5 target-update -> TARGET UPDATE target-update-clause[ [ [,] target-update-clause]...]
142 target-update-clause -> motion-clause |
143 if-clause |
144 device-clause |
145 nowait-clause |
146 depend-clause
147 motion-clause -> to-clause |
148 from-clause
149
1502.10.6 declare-target -> DECLARE TARGET (extended-list)
1512.10.6 declare-target -> DECLARE TARGET [declare-target-clause[ [,] declare-target-clause]...]
152 declare-target-clause -> to-clause |
153 link-clause
154
1552.10.7 teams -> TEAMS [teams-clause[ [,] teams-clause]...]
156 teams-clause -> num-teams-clause |
157 thread-limit-clause |
158 default-clause |
159 private-clause |
160 firstprivate-clause |
161 shared-clause |
162 reduction-clause
163
1642.10.8 distribute -> DISTRIBUTE [distribute-clause[ [,] distribute-clause]...]
165 distribute-clause -> private-clause |
166 firstprivate-clause |
167 lastprivate-clause |
168 collapse-clause |
169 dist-schedule-clause
170
1712.10.9 distribute-simd -> DISTRIBUTE SIMD [distribute-simd-clause[ [,] distribute-simd-clause]...]
172 distribute-simd-clause -> distribute-clause |
173 simd-clause
174
1752.10.10 distribute-parellel-do ->
176 DISTRIBUTE PARALLEL DO [distribute-parallel-do-clause[ [,] distribute-parallel-do-clause]...]
177 distribute-parallel-do-clause -> distribute-clause |
178 parallel-do-clause
179
1802.10.11 distribute-parallel-do-simd ->
181 DISTRIBUTE PARALLEL DO SIMD [distribute-parallel-do-simd-clause[ [,] distribute-parallel-do-simd-clause]...]
182 distribute-parallel-do-simd-clause -> distribute-clause |
183 parallel-do-simd-clause
184
1852.11.1 parallel-do -> PARALLEL DO [parallel-do-clause[ [,] parallel-do-clause]...]
186 parallel-do-clause -> parallel-clause |
187 do-clause
188
1892.11.1 end-parallel-do -> END PARALLEL DO
190
1912.11.2 parallel-sections -> PARALLEL SECTIONS [parallel-sections-clause[ [,] parallel-sections-clause]...]
192 parallel-sections-clause -> parallel-clause |
193 sections-clause
194
1952.11.2 end-parallel-sections -> END PARALLEL SECTIONS
196
1972.11.3 parallel-workshare -> PARALLEL WORKSHARE [parallel-workshare-clause[ [,] parallel-workshare-clause]...]
198 parallel-workshare-clause -> parallel-clause
199
2002.11.3 end-parallel-workshare -> END PARALLEL WORKSHARE
201
2022.11.4 parallel-do-simd -> PARALLEL DO SIMD [parallel-do-simd-clause[ [,] parallel-do-simd-clause]...]
203 parallel-do-simd-clause -> parallel-clause |
204 do-simd-clause
205
2062.11.4 end-parallel-do-simd -> END PARALLEL DO SIMD
207
2082.11.5 target-parallel -> TARGET PARALLEL [target-parallel-clause[ [,] target-parallel-clause]...]
209 target-parallel-clause -> target-clause |
210 parallel-clause
211
2122.11.6 target-parallel-do -> TARGET PARALLEL DO [target-parallel-do-clause[ [,] target-parallel-do-clause]...]
213 target-parallel-do-clause -> target-clause |
214 parallel-do-clause
215
2162.11.7 target-parallel-do-simd ->
217 TARGET PARALLEL DO SIMD [target-parallel-do-simd-clause[ [,] target-parallel-do-simd-clause]...]
218 target-parallel-do-simd-clause -> target-clause |
219 parallel-do-simd-clause
220
2212.11.8 target-simd -> TARGET SIMD [target-simd-clause[ [,] target-simd-clause]...]
222 target-simd-clause -> target-clause |
223 simd-clause
224
2252.11.9 target-teams -> TARGET TEAMS [target-teams-clause[ [,] target-teams-clause]...]
226 target-teams-clause -> target-clause |
227 teams-clause
228
2292.11.10 teams-distribute -> TEAMS DISTRIBUTE [teams-distribute-clause[ [,] teams-distribute-clause]...]
230 teams-distribute-clause -> teams-clause |
231 distribute-clause
232
2332.11.11 teams-distribute-simd ->
234 TEAMS DISTRIBUTE SIMD [teams-distribute-simd-clause[ [,] teams-distribute-simd-clause]...]
235 teams-distribute-simd-clause -> teams-clause |
236 distribute-simd-clause
237
2382.11.12 target-teams-distribute ->
239 TARGET TEAMS DISTRIBUTE [target-teams-distribute-clause[ [,] target-teams-distribute-clause]...]
240 target-teams-distribute-clause -> target-clause |
241 teams-distribute-clause
242
2432.11.13 target-teams-distribute-simd ->
244 TARGET TEAMS DISTRIBUTE SIMD [target-teams-distribute-simd-clause[ [,] target-teams-distribute-simd-clause]...]
245 target-teams-distribute-simd-clause -> target-clause |
246 teams-distribute-simd-clause
247
2482.11.14 teams-distribute-parallel-do ->
249 TEAMS DISTRIBUTE PARALLEL DO [teams-distribute-parallel-do-clause[ [,] teams-distribute-parallel-do-clause]...]
250 teams-distribute-parallel-do-clause -> teams-clause |
251 distribute-parallel-do-clause
252
Jinxin Yangd25c9422019-05-08 21:05:442532.11.15 target-teams-distribute-parallel-do ->
Jinxin Yang80c99952019-05-24 00:13:52254 TARGET TEAMS DISTRIBUTE PARALLEL DO [target-teams-distribute-parallel-do-clause[ [,] target-teams-distribute-parallel-do-clause]...]
255 target-teams-distribute-parallel-do-clause -> target-clause |
256 teams-distribute-parallel-do-clause
257
Jinxin Yangd25c9422019-05-08 21:05:442582.11.16 teams-distribute-parallel-do-simd ->
Jinxin Yang80c99952019-05-24 00:13:52259 TEAMS DISTRIBUTE PARALLEL DO SIMD [teams-distribute-parallel-do-simd-clause[ [,] teams-distribute-parallel-do-simd-clause]...]
260 teams-distribute-parallel-do-simd-clause -> teams-clause |
261 distribute-parallel-do-simd-clause
262
Hongyon Suauthai6f7b4fa2018-05-16 14:28:542632.11.17 target-teams-distribute-parallel-do-simd ->
Jinxin Yang80c99952019-05-24 00:13:52264 TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD [target-teams-distribute-parallel-do-simd-clause[ [,] target-teams-distribute-parallel-do-simd-clause]...]
265 target-teams-distribute-parallel-do-simd-clause -> target-clause |
266 teams-distribute-parallel-do-simd-clause
267
Hongyon Suauthai6f7b4fa2018-05-16 14:28:542682.13.1 master -> MASTER
Jinxin Yang80c99952019-05-24 00:13:52269
2702.13.2 critical -> CRITICAL [(name) [HINT(hint-expr)]]
271
2722.13.2 end-critical -> END CRITICAL [(name)]
273
Hongyon Suauthai6f7b4fa2018-05-16 14:28:542742.13.3 barrier -> BARRIER
Jinxin Yang80c99952019-05-24 00:13:52275
Hongyon Suauthai6f7b4fa2018-05-16 14:28:542762.13.4 taskwait -> TASKWAIT
Jinxin Yang80c99952019-05-24 00:13:52277
Hongyon Suauthai6f7b4fa2018-05-16 14:28:542782.13.5 taskgroup -> TASKGROUP
Jinxin Yang80c99952019-05-24 00:13:52279
2802.13.6 atomic -> ATOMIC [seq_cst[,]] READ | WRITE | UPDATE | CAPTURE [[,]seq_cst]
2812.13.6 atomic -> ATOMIC [seq_cst]
282
2832.13.7 flush -> FLUSH [(variable-name-list)]
284
2852.13.8 ordered -> ORDERED ordered-construct-clause [[[,] ordered-construct-clause]...]
286 ordered-construct-clause -> depend-clause
287
2882.14.1 cancel -> CANCEL construct-type-clause [ [,] if-clause]
289 construct-type-clause -> PARALLEL |
290 SECTIONS |
291 DO |
292 TASKGROUP
293
2942.14.2 cancellation-point -> CANCELLATION POINT construct-type-clause
295
2962.15.2 threadprivate -> THREADPRIVATE (variable-name-list)
297
2982.16 declare-reduction -> DECLARE REDUCTION (reduction-identifier : type-list : combiner)
Hongyon Suauthai6f7b4fa2018-05-16 14:28:54299
300# Clauses
Jinxin Yang80c99952019-05-24 00:13:523012.5 proc-bind-clause -> PROC_BIND (MASTER | CLOSE | SPREAD)
302
3032.5 num-threads-clause -> NUM_THREADS (scalar-int-expr)
304
3052.7.1 schedule-clause -> SCHEDULE ([sched-modifier] [, sched-modifier]:]
306 kind[, chunk_size])
307
Hongyon Suauthai6f7b4fa2018-05-16 14:28:543082.7.1 kind -> STATIC | DYNAMIC | GUIDED | AUTO | RUNTIME
Jinxin Yang80c99952019-05-24 00:13:52309
Hongyon Suauthai6f7b4fa2018-05-16 14:28:543102.7.1 sched-modifier -> MONOTONIC | NONMONOTONIC | SIMD
Jinxin Yang80c99952019-05-24 00:13:52311
Hongyon Suauthai6f7b4fa2018-05-16 14:28:543122.7.1 chunk_size -> scalar-int-expr
Jinxin Yang80c99952019-05-24 00:13:52313
3142.7.1 collapse-clause -> COLLAPSE (scalar-constant)
315
3162.7.1 ordered-clause -> ORDERED [(scalar-constant)]
317
3182.7.1 nowait-clause -> NOWAIT
319
3202.8.1 aligned-clause -> ALIGNED (variable-name-list[ : scalar-constant])
321
3222.8.1 safelen-clause -> SAFELEN (scalar-constant)
323
3242.8.1 simdlen-clause -> SIMDLEN (scalar-contant)
325
3262.8.2 uniform-clause -> UNIFORM (dummy-arg-name-list)
327
3282.8.2 inbranch-clause -> INBRANCH
329
3302.8.2 notinbranch-clause -> NOTINBRANCH
331
3322.13.9 depend-clause -> DEPEND (((IN | OUT | INOUT) : variable-name-list) |
333 SOURCE |
334 SINK : vec)
335 vec -> iterator [+/- scalar-int-expr],..., iterator[...]
336
3372.9.2 num-tasks-clause -> NUM_TASKS (scalar-int-expr)
338
3392.9.2 grainsize-clause -> GRAINSIZE (scalar-int-expr)
340
3412.9.2 nogroup-clause -> NOGROUP
342
3432.9.2 untied-clause -> UNTIED
344
3452.9.2 priority-clause -> PRIORITY (scalar-int-expr)
346
3472.9.2 mergeable-clause -> MERGEABLE
348
3492.9.2 final-clause -> FINAL (scalar-int-expr)
350
3512.10.1 use-device-ptr-clause -> USE_DEVICE_PTR (variable-name-list)
352
3532.10.1 device-clause -> DEVICE (scalar-integer-expr)
354
3552.10.4 is-device-ptr-clause -> IS_DEVICE_PTR (variable-name-list)
356
3572.10.5 to-clause -> TO (variable-name-list)
358
3592.10.5 from-clause -> FROM (variable-name-list)
360
3612.10.6 link-clause -> LINK (variable-name-list)
362
3632.10.7 num-teams-clause -> NUM_TEAMS (scalar-integer-expr)
364
3652.10.7 thread-limit-clause -> THREAD_LIMIT (scalar-integer-expr)
366
3672.10.8 dist-schedule-clause -> DIST_SCHEDULE (STATIC [ , chunk_size])
368
3692.12 if-clause -> IF ([ directive-name-modifier :] scalar-logical-expr)
370
3712.15.3.1 default-clause -> DEFAULT (PRIVATE | FIRSTPRIVATE | SHARED | NONE)
372
3732.15.3.2 shared-clause -> SHARED (variable-name-list)
374
3752.15.3.3 private-clause -> PRIVATE (variable-name-list)
376
3772.15.3.4 firstprivate-clause -> FIRSTPRIVATE (variable-name-list)
378
3792.15.3.5 lastprivate-clause -> LASTPRIVATE (variable-name-list)
380
3812.15.3.6 reduction-clause -> REDUCTION (reduction-identifier: variable-name-list)
382 reduction-identifier -> + | - | * | .AND. | .OR. | .EQV. | .NEQV. |
383 MAX | MIN | IAND | IOR | IEOR
384
3852.15.3.7 linear-clause -> LINEAR (linear-list[ : linear-step])
386 linear-list -> list | modifier(list)
387 modifier -> REF | VAL | UVAL
388
3892.15.4.1 copyin-clause -> COPYIN (variable-name-list)
390
3912.15.4.2 copyprivate-clause -> COPYPRIVATE (variable-name-list)
392
3932.15.5.1 map -> MAP ([ [ALWAYS[,]] (TO | FROM | TOFROM | ALLOC | RELEASE |
Hongyon Suauthai6f7b4fa2018-05-16 14:28:54394 DELETE) : ] variable-name-list)
Jinxin Yang80c99952019-05-24 00:13:52395
3962.15.5.2 defaultmap -> DEFAULTMAP (TOFROM:SCALAR)