You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PPC64[LE] and has `basic support for Cuda devices`_.
20
22
21
23
Standalone directives
22
24
=====================
@@ -35,7 +37,7 @@ Standalone directives
35
37
36
38
* #pragma omp target: :good:`Complete`.
37
39
38
-
* #pragma omp declare target: :partial:`Partial`. No full codegen support.
40
+
* #pragma omp declare target: :good:`Complete`.
39
41
40
42
* #pragma omp teams: :good:`Complete`.
41
43
@@ -64,5 +66,66 @@ Combined directives
64
66
65
67
* #pragma omp target teams distribute parallel for [simd]: :good:`Complete`.
66
68
67
-
Clang does not support any constructs/updates from upcoming OpenMP 5.0 except for `reduction`-based clauses in the `task` and `target`-based directives.
68
-
In addition, the LLVM OpenMP runtime `libomp` supports the OpenMP Tools Interface (OMPT) on x86, x86_64, AArch64, and PPC64 on Linux, Windows, and mac OS.
69
+
Clang does not support any constructs/updates from upcoming OpenMP 5.0 except
70
+
for `reduction`-based clauses in the `task` and `target`-based directives.
71
+
72
+
In addition, the LLVM OpenMP runtime `libomp` supports the OpenMP Tools
73
+
Interface (OMPT) on x86, x86_64, AArch64, and PPC64 on Linux, Windows, and mac OS.
74
+
ows, and mac OS.
75
+
76
+
.. _basic support for Cuda devices:
77
+
78
+
Cuda devices support
79
+
====================
80
+
81
+
Directives execution modes
82
+
--------------------------
83
+
84
+
Clang code generation for target regions supports two modes: the SPMD and
85
+
non-SPMD modes. Clang chooses one of these two modes automatically based on the
86
+
way directives and clauses on those directives are used. The SPMD mode uses a
87
+
simplified set of runtime functions thus increasing performance at the cost of
88
+
supporting some OpenMP features. The non-SPMD mode is the most generic mode and
89
+
supports all currently available OpenMP features. The compiler will always
90
+
attempt to use the SPMD mode wherever possible. SPMD mode will not be used if:
91
+
92
+
- The target region contains an `if()` clause that refers to a `parallel`
93
+
directive.
94
+
95
+
- The target region contains a `parallel` directive with a `num_threads()`
96
+
clause.
97
+
98
+
- The target region contains user code (other than OpenMP-specific
99
+
directives) in between the `target` and the `parallel` directives.
100
+
101
+
Data-sharing modes
102
+
------------------
103
+
104
+
Clang supports two data-sharing models for Cuda devices: `Generic` and `Cuda`
105
+
modes. The default mode is `Generic`. `Cuda` mode can give an additional
106
+
performance and can be activated using the `-fopenmp-cuda-mode` flag. In
107
+
`Generic` mode all local variables that can be shared in the parallel regions
108
+
are stored in the global memory. In `Cuda` mode local variables are not shared
109
+
between the threads and it is user responsibility to share the required data
110
+
between the threads in the parallel regions.
111
+
112
+
Features not supported or with limited support for Cuda devices
0 commit comments