From de41b137ddb68b5172f1ab042b0b0b495afbb490 Mon Sep 17 00:00:00 2001 From: Joseph Huber Date: Thu, 7 Nov 2024 13:35:29 -0800 Subject: [PATCH] [Offload] Provide a CMake cache file to easily build offloading (#115074) Summary: This patch adds a cache file that will automatically enable openpm, offload, and all the fancy GPU libraries. --- offload/cmake/caches/Offload.cmake | 12 ++++++++++++ openmp/docs/SupportAndFAQ.rst | 18 +++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 offload/cmake/caches/Offload.cmake diff --git a/offload/cmake/caches/Offload.cmake b/offload/cmake/caches/Offload.cmake new file mode 100644 index 00000000000000..57363e99b10afc --- /dev/null +++ b/offload/cmake/caches/Offload.cmake @@ -0,0 +1,12 @@ +set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;compiler-rt;lld" CACHE STRING "") +set(LLVM_ENABLE_RUNTIMES "libunwind;libcxx;libcxxabi;openmp;offload" CACHE STRING "") +set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR ON CACHE BOOL "") + +set(CLANG_DEFAULT_CXX_STDLIB "libc++" CACHE STRING "") +set(CLANG_DEFAULT_LINKER "lld" CACHE STRING "") + +set(LLVM_RUNTIME_TARGETS default;amdgcn-amd-amdhsa;nvptx64-nvidia-cuda CACHE STRING "") +set(RUNTIMES_nvptx64-nvidia-cuda_CACHE_FILES "${CMAKE_SOURCE_DIR}/../libcxx/cmake/caches/NVPTX.cmake" CACHE STRING "") +set(RUNTIMES_amdgcn-amd-amdhsa_CACHE_FILES "${CMAKE_SOURCE_DIR}/../libcxx/cmake/caches/AMDGPU.cmake" CACHE STRING "") +set(RUNTIMES_nvptx64-nvidia-cuda_LLVM_ENABLE_RUNTIMES "compiler-rt;libc;libcxx;libcxxabi" CACHE STRING "") +set(RUNTIMES_amdgcn-amd-amdhsa_LLVM_ENABLE_RUNTIMES "compiler-rt;libc;libcxx;libcxxabi" CACHE STRING "") diff --git a/openmp/docs/SupportAndFAQ.rst b/openmp/docs/SupportAndFAQ.rst index dee707cf50f919..b645723dcfd5ec 100644 --- a/openmp/docs/SupportAndFAQ.rst +++ b/openmp/docs/SupportAndFAQ.rst @@ -51,7 +51,23 @@ All patches go through the regular `LLVM review process Q: How to build an OpenMP GPU offload capable compiler? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -To build an *effective* OpenMP offload capable compiler, only one extra CMake + +The easiest way to create an offload capable compiler is to use the provided +CMake cache file. This will enable the projects and runtimes necessary for +offloading as well as some extra options. + +.. code-block:: sh + + $> cd llvm-project # The llvm-project checkout + $> mkdir build + $> cd build + $> cmake ../llvm -G Ninja \ + -C ../offload/cmake/caches/Offload.cmake \ # The preset cache file + -DCMAKE_BUILD_TYPE= \ # Select build type + -DCMAKE_INSTALL_PREFIX= \ # Where the libraries will live + $> ninja install + +To manually build an *effective* OpenMP offload capable compiler, only one extra CMake option, ``LLVM_ENABLE_RUNTIMES="openmp;offload"``, is needed when building LLVM (Generic information about building LLVM is available `here `__.). Make sure all backends that