diff --git a/openmp/docs/SupportAndFAQ.rst b/openmp/docs/SupportAndFAQ.rst index 545dd89189c8..6b8f0d2f72b0 100644 --- a/openmp/docs/SupportAndFAQ.rst +++ b/openmp/docs/SupportAndFAQ.rst @@ -1,4 +1,93 @@ -Support And FAQ -=============== +Support, Getting Involved, and FAQ +================================== + +Please do not hesitate to reach out to us via openmp-dev@lists.llvm.org or join +one of our :ref:`regular calls `. Some common questions are answered in +the :ref:`faq`. + +.. _calls: + +Calls +----- + +OpenMP in LLVM Technical Call +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Development updates on OpenMP (and OpenACC) in the LLVM Project, including Clang, optimization, and runtime work. +- Join `OpenMP in LLVM Technical Call `__. +- Time: Weekly call on every Wednesday 7:00 AM Pacific time. +- Meeting minutes are `here `__. +- Status tracking `page `__. +OpenMP in Flang Technical Call +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- Development updates on OpenMP and OpenACC in the Flang Project. +- Join `OpenMP in Flang Technical Call `_ +- Time: Weekly call on every Thursdays 8:00 AM Pacific time. +- Meeting minutes are `here `__. +- Status tracking `page `__. + + +.. _faq: + +FAQ +--- + +.. note:: + The FAQ is a work in progress and most of the expected content is not + yet available. While you can expect changes, we always welcome feedback and + additions. Please contact, e.g., through ``openmp-dev@lists.llvm.org``. + + +Q: How to contribute a patch to the webpage or any other part? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +All patches go through the regular `LLVM review process +`_. + + +.. _build_offload_capable_compiler: + +Q: How to build an OpenMP offload capable compiler? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To build an *effective* OpenMP offload capable compiler we recommend a two +stage build. The first stage Clang does not require to be offload capable but +all backends that are targeted by OpenMP need to be enabled. By default, Clang +will be build with all backends enabled. This initial (stage 1) Clang is used +to create a second Clang compiler that is offload capable as well as the +:ref:`device runtime libraries ` that will be linked into the +offloaded code to provide OpenMP runtime support on the device. + +Generic information about building LLVM is available `here +`__. The CMake options for the +second stage Clang should include: + +- `LIBOMPTARGET_NVPTX_CUDA_COMPILER=$STAGE1/bin/clang` to use the stage one + compiler for the device runtime compilation. +- `LIBOMPTARGET_NVPTX_ENABLE_BCLIB=ON` to enable efficient device runtimes in + bitcode format. + +If your build machine is not the target machine or automatic detection of the +available GPUs failed, you should also set: + +- `CLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_XX` where `XX` is the architecture of your GPU, e.g, 80. +- `LIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=YY` where `YY` is the numeric compute capacity of your GPU, e.g., 75. + +.. note:: + The compiler that generates the offload code should be the same (version) as + the compiler that build the OpenMP device runtimes. The OpenMP host runtime + can be build by a different compiler. + +.. _advanced_builds: https://llvm.org//docs/AdvancedBuilds.html + + + +Q: Does OpenMP offloading support work in pre-packaged LLVM releases? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +For now, the answer is most likely *no*. Please see :ref:`build_offload_capable_compiler`. + +Q: Does OpenMP offloading support work in packages distributed as part of my OS? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +For now, the answer is most likely *no*. Please see :ref:`build_offload_capable_compiler`. diff --git a/openmp/docs/design/Overview.rst b/openmp/docs/design/Overview.rst index 6753267d58d2..06c0ac930c30 100644 --- a/openmp/docs/design/Overview.rst +++ b/openmp/docs/design/Overview.rst @@ -2,6 +2,11 @@ OpenMP in LLVM --- Design Overview ================================== +Resources +--------- + +- OpenMP Booth @ SC19: "OpenMP clang and flang Development" https://youtu.be/6yOa-hRi63M + .. toctree:: :glob: diff --git a/openmp/docs/design/Runtimes.rst b/openmp/docs/design/Runtimes.rst index 9c9d4037cfed..61491060ea04 100644 --- a/openmp/docs/design/Runtimes.rst +++ b/openmp/docs/design/Runtimes.rst @@ -19,6 +19,8 @@ LLVM/OpenMP Target Host Runtime (``libomptarget``) LLVM/OpenMP Target Host Runtime Plugins (``libomptarget.rtl.XXXX``) ------------------------------------------------------------------- +.. _device_runtime: + LLVM/OpenMP Target Device Runtime (``libomptarget-ARCH-SUBARCH.bc``) -------------------------------------------------------------------- diff --git a/openmp/docs/index.rst b/openmp/docs/index.rst index 3cc39b224d82..a7bd280d1f81 100644 --- a/openmp/docs/index.rst +++ b/openmp/docs/index.rst @@ -77,13 +77,16 @@ please refer to :doc:`remarks/OptimizationRemarks`. remarks/OptimizationRemarks -Support & Frequently Asked Questions (FAQ) -========================================== +Support, Getting Involved, and Frequently Asked Questions (FAQ) +=============================================================== Dealing with OpenMP can be complicated. For help with the setup of an OpenMP (offload) capable compiler toolchain, its usage, and common problems, consult the :doc:`Support and FAQ ` page. +We also encourage everyone interested in OpenMP in LLVM to :doc:`get involved +`. + .. toctree:: :hidden: diff --git a/openmp/docs/optimizations/OpenMPOpt.rst b/openmp/docs/optimizations/OpenMPOpt.rst index fc1b1a763ff1..6606cb9ccd23 100644 --- a/openmp/docs/optimizations/OpenMPOpt.rst +++ b/openmp/docs/optimizations/OpenMPOpt.rst @@ -3,3 +3,11 @@ OpenMP-Aware Optimizations OpenMPOpt --------- + + +Resources +--------- + +- 2020 LLVM Developers’ Meeting: "(OpenMP) Parallelism-Aware Optimizations" https://youtu.be/gtxWkeLCxmU +- 2019 EuroLLVM Developers’ Meeting: "Compiler Optimizations for (OpenMP) Target Offloading to GPUs" https://youtu.be/3AbS82C3X30 + diff --git a/openmp/docs/optimizations/OpenMPUnawareOptimizations.rst b/openmp/docs/optimizations/OpenMPUnawareOptimizations.rst index e764fa823af5..72ccc0355273 100644 --- a/openmp/docs/optimizations/OpenMPUnawareOptimizations.rst +++ b/openmp/docs/optimizations/OpenMPUnawareOptimizations.rst @@ -1,2 +1,9 @@ OpenMP-Unaware Optimizations ============================ + + +Resources +--------- + +- 2018 LLVM Developers’ Meeting: "Optimizing Indirections, using abstractions without remorse" https://youtu.be/zfiHaPaoQPc +- 2019 LLVM Developers’ Meeting: "The Attributor: A Versatile Inter-procedural Fixpoint Iteration Framework" https://youtu.be/CzWkc_JcfS0