xref: /llvm-project/openmp/docs/index.rst (revision 5c0f98cd2aeb01f73348338cd1b129e3506a02b0)
130e818dbSJohannes Doerfert.. title:: Welcome to the documentation of OpenMP in LLVM!
21c4c2148SJoseph Huber
330e818dbSJohannes Doerfert.. note::
430e818dbSJohannes Doerfert   This document is a work in progress and most of the expected content is not
530e818dbSJohannes Doerfert   yet available. While you can expect changes, we always welcome feedback and
6a140f434Stlattner   additions. Please post on the `Discourse forums (Runtimes -
7a140f434Stlattner   OpenMP) <https://discourse.llvm.org/c/runtimes/openmp/35>`__..
81c4c2148SJoseph Huber
930e818dbSJohannes Doerfert.. toctree::
1030e818dbSJohannes Doerfert   :hidden:
1130e818dbSJohannes Doerfert   :maxdepth: 1
1230e818dbSJohannes Doerfert
1330e818dbSJohannes Doerfert   LLVM/OpenMP Documentation <self>
1430e818dbSJohannes Doerfert
1530e818dbSJohannes Doerfert
1630e818dbSJohannes DoerfertLLVM/OpenMP Design & Overview
171c4c2148SJoseph Huber=============================
181c4c2148SJoseph Huber
1930e818dbSJohannes DoerfertOpenMP impacts various parts of the LLVM project, from the frontends (`Clang
2030e818dbSJohannes Doerfert<https://clang.llvm.org/docs/OpenMPSupport.html>`_ and Flang), through
2130e818dbSJohannes Doerfertmiddle-end :ref:`optimizations <llvm_openmp_optimizations>`, up to the
2230e818dbSJohannes Doerfertmultitude of available :ref:`OpenMP runtimes <openmp_runtimes>`.
231c4c2148SJoseph Huber
2430e818dbSJohannes DoerfertA high-level overview of OpenMP in LLVM can be found :doc:`here <design/Overview>`.
2530e818dbSJohannes Doerfert
2630e818dbSJohannes Doerfert.. toctree::
2730e818dbSJohannes Doerfert   :hidden:
2830e818dbSJohannes Doerfert   :maxdepth: 1
2930e818dbSJohannes Doerfert
3030e818dbSJohannes Doerfert   design/Overview
3130e818dbSJohannes Doerfert
3283ddfa0dSJoel E. DennyOpenACC Support
3383ddfa0dSJoel E. Denny===============
3483ddfa0dSJoel E. Denny
3583ddfa0dSJoel E. Denny:doc:`OpenACC support <openacc/Overview>` is under development for
3683ddfa0dSJoel E. Dennyboth Flang and Clang.  For this purpose, LLVM's OpenMP runtimes are
3783ddfa0dSJoel E. Dennybeing extended to serve as OpenACC runtimes.  In some cases, Clang
3883ddfa0dSJoel E. Dennysupports :doc:`OpenMP extensions <openacc/OpenMPExtensions>` to make
3983ddfa0dSJoel E. Dennythe additional functionality also available in OpenMP applications.
4083ddfa0dSJoel E. Denny
4183ddfa0dSJoel E. Denny.. toctree::
4283ddfa0dSJoel E. Denny   :hidden:
4383ddfa0dSJoel E. Denny   :maxdepth: 1
4483ddfa0dSJoel E. Denny
4583ddfa0dSJoel E. Denny   openacc/Overview
4630e818dbSJohannes Doerfert
4730e818dbSJohannes DoerfertLLVM/OpenMP Optimizations
4830e818dbSJohannes Doerfert=========================
4930e818dbSJohannes Doerfert
5030e818dbSJohannes DoerfertLLVM, since `version 11 <https://releases.llvm.org/download.html#11.0.0>`_ (12 Oct
5130e818dbSJohannes Doerfert2020), has an :doc:`OpenMP-Aware optimization pass <optimizations/OpenMPOpt>`
5230e818dbSJohannes Doerfertas well as the ability to :doc:`perform "scalar optimizations" across OpenMP region
5330e818dbSJohannes Doerfertboundaries <optimizations/OpenMPUnawareOptimizations>`.
5430e818dbSJohannes Doerfert
5530e818dbSJohannes DoerfertIn-depth discussion of the topic can be found :doc:`here <optimizations/Overview>`.
5630e818dbSJohannes Doerfert
5730e818dbSJohannes Doerfert.. toctree::
5830e818dbSJohannes Doerfert   :hidden:
5930e818dbSJohannes Doerfert   :maxdepth: 1
6030e818dbSJohannes Doerfert
6130e818dbSJohannes Doerfert   optimizations/Overview
6230e818dbSJohannes Doerfert
6330e818dbSJohannes DoerfertLLVM/OpenMP Optimization Remarks
6430e818dbSJohannes Doerfert================================
6530e818dbSJohannes Doerfert
6630e818dbSJohannes DoerfertLLVM has an elaborate ecosystem around `analysis and optimization remarks
6730e818dbSJohannes Doerfert<https://llvm.org/docs/Remarks.html>`_ issues during
6830e818dbSJohannes Doerfertcompilation. The remarks can be enabled from the clang frontend `[1]`_ `[2]`_
6930e818dbSJohannes Doerfertin various formats `[3]`_ `[4]`_ to be used by tools, i.a., `opt-viewer` or
7030e818dbSJohannes Doerfert`llvm-opt-report` (dated).
7130e818dbSJohannes Doerfert
7230e818dbSJohannes DoerfertThe OpenMP optimizations in LLVM have been developed with remark support as a
7330e818dbSJohannes Doerfertpriority. For a list of OpenMP specific remarks and more information on them,
7430e818dbSJohannes Doerfertplease refer to :doc:`remarks/OptimizationRemarks`.
7530e818dbSJohannes Doerfert
7630e818dbSJohannes Doerfert
7730e818dbSJohannes Doerfert.. _`[1]`: https://clang.llvm.org/docs/UsersManual.html#options-to-emit-optimization-reports
7830e818dbSJohannes Doerfert.. _`[2]`: https://clang.llvm.org/docs/ClangCommandLineReference.html#diagnostic-flags
7930e818dbSJohannes Doerfert.. _`[3]`: https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-foptimization-record-file
8030e818dbSJohannes Doerfert.. _`[4]`: https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang1-fsave-optimization-record
8130e818dbSJohannes Doerfert
8230e818dbSJohannes Doerfert+ `[1]`_ https://clang.llvm.org/docs/UsersManual.html#options-to-emit-optimization-reports
8330e818dbSJohannes Doerfert+ `[2]`_ https://clang.llvm.org/docs/ClangCommandLineReference.html#diagnostic-flags
8430e818dbSJohannes Doerfert+ `[3]`_ https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-foptimization-record-file
8530e818dbSJohannes Doerfert+ `[4]`_ https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang1-fsave-optimization-record
8630e818dbSJohannes Doerfert
8730e818dbSJohannes Doerfert
8830e818dbSJohannes Doerfert.. toctree::
8930e818dbSJohannes Doerfert   :hidden:
9030e818dbSJohannes Doerfert   :maxdepth: 1
9130e818dbSJohannes Doerfert
9230e818dbSJohannes Doerfert   remarks/OptimizationRemarks
9330e818dbSJohannes Doerfert
94*5c0f98cdSAnton RydahlOpenMP Command-Line Argument Reference
95*5c0f98cdSAnton Rydahl======================================
96*5c0f98cdSAnton RydahlIn addition to the
97*5c0f98cdSAnton Rydahl`Clang command-line argument reference <https://clang.llvm.org/docs/ClangCommandLineReference.html>`_
98*5c0f98cdSAnton Rydahlwe also recommend the OpenMP
99*5c0f98cdSAnton Rydahl:doc:`command-line argument reference <CommandLineArgumentReference>`
100*5c0f98cdSAnton Rydahlpage that offers a detailed overview of options specific to OpenMP. It also
101*5c0f98cdSAnton Rydahlcontains a list of OpenMP offloading related command-line arguments.
102*5c0f98cdSAnton Rydahl
103*5c0f98cdSAnton Rydahl
104*5c0f98cdSAnton Rydahl.. toctree::
105*5c0f98cdSAnton Rydahl   :hidden:
106*5c0f98cdSAnton Rydahl   :maxdepth: 1
107*5c0f98cdSAnton Rydahl
108*5c0f98cdSAnton Rydahl   CommandLineArgumentReference
10930e818dbSJohannes Doerfert
110227c8ff1SJohannes DoerfertSupport, Getting Involved, and Frequently Asked Questions (FAQ)
111227c8ff1SJohannes Doerfert===============================================================
11230e818dbSJohannes Doerfert
11330e818dbSJohannes DoerfertDealing with OpenMP can be complicated. For help with the setup of an OpenMP
11430e818dbSJohannes Doerfert(offload) capable compiler toolchain, its usage, and common problems, consult
11530e818dbSJohannes Doerfertthe :doc:`Support and FAQ <SupportAndFAQ>` page.
11630e818dbSJohannes Doerfert
117227c8ff1SJohannes DoerfertWe also encourage everyone interested in OpenMP in LLVM to :doc:`get involved
118227c8ff1SJohannes Doerfert<SupportAndFAQ>`.
119227c8ff1SJohannes Doerfert
12030e818dbSJohannes Doerfert
12130e818dbSJohannes Doerfert.. toctree::
12230e818dbSJohannes Doerfert   :hidden:
12330e818dbSJohannes Doerfert   :maxdepth: 1
12430e818dbSJohannes Doerfert
12530e818dbSJohannes Doerfert   SupportAndFAQ
1261c4c2148SJoseph Huber
1271c4c2148SJoseph HuberRelease Notes
1281c4c2148SJoseph Huber=============
1291c4c2148SJoseph Huber
13030e818dbSJohannes DoerfertThe current (in-progress) release notes can be found :doc:`here <ReleaseNotes>` while
13130e818dbSJohannes Doerfertrelease notes for releases, starting with LLVM 12, will be available on `the
13230e818dbSJohannes DoerfertDownload Page <https://releases.llvm.org/download.html>`_.
13330e818dbSJohannes Doerfert
1341c4c2148SJoseph Huber
1351c4c2148SJoseph Huber.. toctree::
1361c4c2148SJoseph Huber   :hidden:
13730e818dbSJohannes Doerfert   :maxdepth: 1
1381c4c2148SJoseph Huber
13930e818dbSJohannes Doerfert   In-Progress ReleaseNotes <ReleaseNotes>
140