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