Alexey Bataev | 8ede819 | 2018-01-08 19:02:51 +0000 | [diff] [blame] | 1 | .. 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 | ================== |
| 14 | OpenMP Support |
| 15 | ================== |
| 16 | |
| 17 | Clang fully supports OpenMP 3.1 + some elements of OpenMP 4.5. Clang supports offloading to X86_64, AArch64 and PPC64[LE] devices. |
| 18 | Support for Cuda devices is not ready yet. |
| 19 | The status of major OpenMP 4.5 features support in Clang. |
| 20 | |
| 21 | Standalone 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 Bataev | bbe81f2 | 2018-01-15 19:08:36 +0000 | [diff] [blame] | 36 | * #pragma omp target: :good:`Complete`. |
Alexey Bataev | 8ede819 | 2018-01-08 19:02:51 +0000 | [diff] [blame] | 37 | |
| 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 | |
| 46 | Combined directives |
| 47 | =================== |
| 48 | |
| 49 | * #pragma omp parallel for simd: :good:`Complete`. |
| 50 | |
Alexey Bataev | 9675302 | 2018-01-16 19:22:49 +0000 | [diff] [blame] | 51 | * #pragma omp target parallel: :good:`Complete`. |
Alexey Bataev | 8ede819 | 2018-01-08 19:02:51 +0000 | [diff] [blame] | 52 | |
Alexey Bataev | 9675302 | 2018-01-16 19:22:49 +0000 | [diff] [blame] | 53 | * #pragma omp target parallel for [simd]: :good:`Complete`. |
Alexey Bataev | 8ede819 | 2018-01-08 19:02:51 +0000 | [diff] [blame] | 54 | |
Alexey Bataev | 9675302 | 2018-01-16 19:22:49 +0000 | [diff] [blame] | 55 | * #pragma omp target simd: :good:`Complete`. |
Alexey Bataev | 8ede819 | 2018-01-08 19:02:51 +0000 | [diff] [blame] | 56 | |
Alexey Bataev | 9675302 | 2018-01-16 19:22:49 +0000 | [diff] [blame] | 57 | * #pragma omp target teams: :good:`Complete`. |
Alexey Bataev | 8ede819 | 2018-01-08 19:02:51 +0000 | [diff] [blame] | 58 | |
| 59 | * #pragma omp teams distribute [simd]: :good:`Complete`. |
| 60 | |
Alexey Bataev | 9675302 | 2018-01-16 19:22:49 +0000 | [diff] [blame] | 61 | * #pragma omp target teams distribute [simd]: :good:`Complete`. |
Alexey Bataev | 8ede819 | 2018-01-08 19:02:51 +0000 | [diff] [blame] | 62 | |
| 63 | * #pragma omp teams distribute parallel for [simd]: :good:`Complete`. |
| 64 | |
Alexey Bataev | 9675302 | 2018-01-16 19:22:49 +0000 | [diff] [blame] | 65 | * #pragma omp target teams distribute parallel for [simd]: :good:`Complete`. |
Alexey Bataev | 8ede819 | 2018-01-08 19:02:51 +0000 | [diff] [blame] | 66 | |
| 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. |
Jonas Hahnfeld | 40f2484 | 2018-01-22 15:27:45 +0000 | [diff] [blame] | 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. |