2018-01-09 03:02:51 +08:00
.. raw :: html
<style type="text/css">
.none { background-color: #FFCCCC }
.partial { background-color: #FFFF99 }
.good { background-color: #CCFF99 }
</style>
.. role :: none
.. role :: partial
.. role :: good
==================
OpenMP Support
==================
Clang fully supports OpenMP 3.1 + some elements of OpenMP 4.5. Clang supports offloading to X86_64, AArch64 and PPC64[LE] devices.
Support for Cuda devices is not ready yet.
The status of major OpenMP 4.5 features support in Clang.
Standalone directives
=====================
* #pragma omp [for] simd: :good: `Complete` .
* #pragma omp declare simd: :partial: `Partial` . We support parsing/semantic
analysis + generation of special attributes for X86 target, but still
missing the LLVM pass for vectorization.
* #pragma omp taskloop [simd]: :good: `Complete` .
* #pragma omp target [enter|exit] data: :good: `Complete` .
* #pragma omp target update: :good: `Complete` .
2018-01-16 03:08:36 +08:00
* #pragma omp target: :good: `Complete` .
2018-01-09 03:02:51 +08:00
* #pragma omp declare target: :partial: `Partial` . No full codegen support.
* #pragma omp teams: :good: `Complete` .
* #pragma omp distribute [simd]: :good: `Complete` .
* #pragma omp distribute parallel for [simd]: :good: `Complete` .
Combined directives
===================
* #pragma omp parallel for simd: :good: `Complete` .
2018-01-17 03:22:49 +08:00
* #pragma omp target parallel: :good: `Complete` .
2018-01-09 03:02:51 +08:00
2018-01-17 03:22:49 +08:00
* #pragma omp target parallel for [simd]: :good: `Complete` .
2018-01-09 03:02:51 +08:00
2018-01-17 03:22:49 +08:00
* #pragma omp target simd: :good: `Complete` .
2018-01-09 03:02:51 +08:00
2018-01-17 03:22:49 +08:00
* #pragma omp target teams: :good: `Complete` .
2018-01-09 03:02:51 +08:00
* #pragma omp teams distribute [simd]: :good: `Complete` .
2018-01-17 03:22:49 +08:00
* #pragma omp target teams distribute [simd]: :good: `Complete` .
2018-01-09 03:02:51 +08:00
* #pragma omp teams distribute parallel for [simd]: :good: `Complete` .
2018-01-17 03:22:49 +08:00
* #pragma omp target teams distribute parallel for [simd]: :good: `Complete` .
2018-01-09 03:02:51 +08:00
Clang does not support any constructs/updates from upcoming OpenMP 5.0 except for `reduction` -based clauses in the `task` and `target` -based directives.
2018-01-22 23:27:45 +08:00
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.