Skip to content

Commit

Permalink
[OPENMP] Current status of OpenMP support.
Browse files Browse the repository at this point in the history
Summary: Some info about supported features of OpenMP 4.5-5.0.

Reviewers: hfinkel, rsmith

Subscribers: kkwli0, Hahnfeld, cfe-commits

Differential Revision: https://reviews.llvm.org/D39457

llvm-svn: 322018
  • Loading branch information
alexey-bataev committed Jan 8, 2018
1 parent e61045f commit 8ede819
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
68 changes: 68 additions & 0 deletions clang/docs/OpenMPSupport.rst
@@ -0,0 +1,68 @@
.. 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`.

* #pragma omp target: :partial:`Partial`. No support for the `depend` clauses.

* #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`.

* #pragma omp target parallel: :partial:`Partial`. No support for the `depend` clauses.

* #pragma omp target parallel for [simd]: :partial:`Partial`. No support for the `depend` clauses.

* #pragma omp target simd: :partial:`Partial`. No support for the `depend` clauses.

* #pragma omp target teams: :partial:`Partial`. No support for the `depend` clauses.

* #pragma omp teams distribute [simd]: :good:`Complete`.

* #pragma omp target teams distribute [simd]: :partial:`Partial`. No support for the and `depend` clauses.

* #pragma omp teams distribute parallel for [simd]: :good:`Complete`.

* #pragma omp target teams distribute parallel for [simd]: :partial:`Partial`. No full codegen support.

Clang does not support any constructs/updates from upcoming OpenMP 5.0 except for `reduction`-based clauses in the `task` and `target`-based directives.

1 change: 1 addition & 0 deletions clang/docs/index.rst
Expand Up @@ -39,6 +39,7 @@ Using Clang as a Compiler
SourceBasedCodeCoverage
Modules
MSVCCompatibility
OpenMPSupport
ThinLTO
CommandGuide/index
FAQ
Expand Down

0 comments on commit 8ede819

Please sign in to comment.