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================== 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 36* #pragma omp target: :good:`Complete`. 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 46Combined directives 47=================== 48 49* #pragma omp parallel for simd: :good:`Complete`. 50 51* #pragma omp target parallel: :good:`Complete`. 52 53* #pragma omp target parallel for [simd]: :good:`Complete`. 54 55* #pragma omp target simd: :good:`Complete`. 56 57* #pragma omp target teams: :good:`Complete`. 58 59* #pragma omp teams distribute [simd]: :good:`Complete`. 60 61* #pragma omp target teams distribute [simd]: :good:`Complete`. 62 63* #pragma omp teams distribute parallel for [simd]: :good:`Complete`. 64 65* #pragma omp target teams distribute parallel for [simd]: :good:`Complete`. 66 67Clang does not support any constructs/updates from upcoming OpenMP 5.0 except for `reduction`-based clauses in the `task` and `target`-based directives. 68In 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