blob: f34049473f825049941a858dee6cc35317824545 [file] [log] [blame]
Alexey Bataev8ede8192018-01-08 19:02:51 +00001.. raw:: html
2
3 <style type="text/css">
4 .none { background-color: #FFCCCC }
5 .partial { background-color: #FFFF99 }
6 .good { background-color: #CCFF99 }
7 </style>
8
9.. role:: none
10.. role:: partial
11.. role:: good
12
13==================
14OpenMP Support
15==================
16
17Clang fully supports OpenMP 3.1 + some elements of OpenMP 4.5. Clang supports offloading to X86_64, AArch64 and PPC64[LE] devices.
18Support for Cuda devices is not ready yet.
19The status of major OpenMP 4.5 features support in Clang.
20
21Standalone directives
22=====================
23
24* #pragma omp [for] simd: :good:`Complete`.
25
26* #pragma omp declare simd: :partial:`Partial`. We support parsing/semantic
27 analysis + generation of special attributes for X86 target, but still
28 missing the LLVM pass for vectorization.
29
30* #pragma omp taskloop [simd]: :good:`Complete`.
31
32* #pragma omp target [enter|exit] data: :good:`Complete`.
33
34* #pragma omp target update: :good:`Complete`.
35
Alexey Bataevbbe81f22018-01-15 19:08:36 +000036* #pragma omp target: :good:`Complete`.
Alexey Bataev8ede8192018-01-08 19:02:51 +000037
38* #pragma omp declare target: :partial:`Partial`. No full codegen support.
39
40* #pragma omp teams: :good:`Complete`.
41
42* #pragma omp distribute [simd]: :good:`Complete`.
43
44* #pragma omp distribute parallel for [simd]: :good:`Complete`.
45
46Combined directives
47===================
48
49* #pragma omp parallel for simd: :good:`Complete`.
50
Alexey Bataev96753022018-01-16 19:22:49 +000051* #pragma omp target parallel: :good:`Complete`.
Alexey Bataev8ede8192018-01-08 19:02:51 +000052
Alexey Bataev96753022018-01-16 19:22:49 +000053* #pragma omp target parallel for [simd]: :good:`Complete`.
Alexey Bataev8ede8192018-01-08 19:02:51 +000054
Alexey Bataev96753022018-01-16 19:22:49 +000055* #pragma omp target simd: :good:`Complete`.
Alexey Bataev8ede8192018-01-08 19:02:51 +000056
Alexey Bataev96753022018-01-16 19:22:49 +000057* #pragma omp target teams: :good:`Complete`.
Alexey Bataev8ede8192018-01-08 19:02:51 +000058
59* #pragma omp teams distribute [simd]: :good:`Complete`.
60
Alexey Bataev96753022018-01-16 19:22:49 +000061* #pragma omp target teams distribute [simd]: :good:`Complete`.
Alexey Bataev8ede8192018-01-08 19:02:51 +000062
63* #pragma omp teams distribute parallel for [simd]: :good:`Complete`.
64
Alexey Bataev96753022018-01-16 19:22:49 +000065* #pragma omp target teams distribute parallel for [simd]: :good:`Complete`.
Alexey Bataev8ede8192018-01-08 19:02:51 +000066
67Clang does not support any constructs/updates from upcoming OpenMP 5.0 except for `reduction`-based clauses in the `task` and `target`-based directives.
Jonas Hahnfeld40f24842018-01-22 15:27:45 +000068In 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.