jhuber6 created this revision. jhuber6 added reviewers: jdoerfert, tra, yaxunl, JonChesterfield, MaskRay, mgorny, tstellar. Herald added subscribers: mattd, gchakrabarti, asavonic, guansong. Herald added a project: All. jhuber6 requested review of this revision. Herald added subscribers: llvm-commits, cfe-commits, sstefan1. Herald added projects: clang, LLVM.
The `CLANG_OPENMP_NVPTX_DEFAULT_ARCH` is a static build configuration to set the default OpenMP value. This was replaced in D141708 <https://reviews.llvm.org/D141708> with the use of the `nvptx-arch` tool which lets us query this at runtime instead. This makes the behaviour between AMD and NVIDIA be more consisten and allows users to have a default architecture that does not rely on whoever configured the LLVM build. Depends on D141708 <https://reviews.llvm.org/D141708> Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D141723 Files: clang/CMakeLists.txt clang/include/clang/Config/config.h.cmake llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h Index: utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h =================================================================== --- utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h +++ utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h @@ -43,9 +43,6 @@ /* Default OpenMP runtime used by -fopenmp. */ #define CLANG_DEFAULT_OPENMP_RUNTIME "libomp" -/* Default architecture for OpenMP offloading to Nvidia GPUs. */ -#define CLANG_OPENMP_NVPTX_DEFAULT_ARCH "sm_35" - /* Default architecture for SystemZ. */ #define CLANG_SYSTEMZ_DEFAULT_ARCH "z10" Index: llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn +++ llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn @@ -17,7 +17,6 @@ "CLANG_DEFAULT_OPENMP_RUNTIME=libomp", "CLANG_DEFAULT_UNWINDLIB=", "CLANG_INSTALL_LIBDIR_BASENAME=lib", - "CLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_35", "CLANG_RESOURCE_DIR=", "C_INCLUDE_DIRS=", "CLANG_CONFIG_FILE_SYSTEM_DIR=", Index: clang/include/clang/Config/config.h.cmake =================================================================== --- clang/include/clang/Config/config.h.cmake +++ clang/include/clang/Config/config.h.cmake @@ -29,9 +29,6 @@ /* Default OpenMP runtime used by -fopenmp. */ #define CLANG_DEFAULT_OPENMP_RUNTIME "${CLANG_DEFAULT_OPENMP_RUNTIME}" -/* Default architecture for OpenMP offloading to Nvidia GPUs. */ -#define CLANG_OPENMP_NVPTX_DEFAULT_ARCH "${CLANG_OPENMP_NVPTX_DEFAULT_ARCH}" - /* Default architecture for SystemZ. */ #define CLANG_SYSTEMZ_DEFAULT_ARCH "${CLANG_SYSTEMZ_DEFAULT_ARCH}" Index: clang/CMakeLists.txt =================================================================== --- clang/CMakeLists.txt +++ clang/CMakeLists.txt @@ -245,31 +245,6 @@ set(CLANG_DEFAULT_OPENMP_RUNTIME "libomp" CACHE STRING "Default OpenMP runtime used by -fopenmp.") -# OpenMP offloading requires at least sm_35 because we use shuffle instructions -# to generate efficient code for reductions and the atomicMax instruction on -# 64-bit integers in the implementation of conditional lastprivate. -set(CUDA_ARCH_FLAGS "sm_35") - -# Try to find the highest Nvidia GPU architecture the system supports -if (NOT DEFINED CLANG_OPENMP_NVPTX_DEFAULT_ARCH) - find_package(CUDA QUIET) - if (CUDA_FOUND) - cuda_select_nvcc_arch_flags(CUDA_ARCH_FLAGS) - endif() -else() - set(CUDA_ARCH_FLAGS ${CLANG_OPENMP_NVPTX_DEFAULT_ARCH}) -endif() - -string(REGEX MATCH "sm_([0-9]+)" CUDA_ARCH_MATCH ${CUDA_ARCH_FLAGS}) -if (NOT DEFINED CUDA_ARCH_MATCH OR "${CMAKE_MATCH_1}" LESS 35) - set(CLANG_OPENMP_NVPTX_DEFAULT_ARCH "sm_35" CACHE STRING - "Default architecture for OpenMP offloading to Nvidia GPUs." FORCE) - message(WARNING "Resetting default architecture for OpenMP offloading to Nvidia GPUs to sm_35") -else() - set(CLANG_OPENMP_NVPTX_DEFAULT_ARCH ${CUDA_ARCH_MATCH} CACHE STRING - "Default architecture for OpenMP offloading to Nvidia GPUs.") -endif() - set(CLANG_SYSTEMZ_DEFAULT_ARCH "z10" CACHE STRING "SystemZ Default Arch") set(CLANG_VENDOR ${PACKAGE_VENDOR} CACHE STRING
Index: utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h =================================================================== --- utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h +++ utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h @@ -43,9 +43,6 @@ /* Default OpenMP runtime used by -fopenmp. */ #define CLANG_DEFAULT_OPENMP_RUNTIME "libomp" -/* Default architecture for OpenMP offloading to Nvidia GPUs. */ -#define CLANG_OPENMP_NVPTX_DEFAULT_ARCH "sm_35" - /* Default architecture for SystemZ. */ #define CLANG_SYSTEMZ_DEFAULT_ARCH "z10" Index: llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn +++ llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn @@ -17,7 +17,6 @@ "CLANG_DEFAULT_OPENMP_RUNTIME=libomp", "CLANG_DEFAULT_UNWINDLIB=", "CLANG_INSTALL_LIBDIR_BASENAME=lib", - "CLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_35", "CLANG_RESOURCE_DIR=", "C_INCLUDE_DIRS=", "CLANG_CONFIG_FILE_SYSTEM_DIR=", Index: clang/include/clang/Config/config.h.cmake =================================================================== --- clang/include/clang/Config/config.h.cmake +++ clang/include/clang/Config/config.h.cmake @@ -29,9 +29,6 @@ /* Default OpenMP runtime used by -fopenmp. */ #define CLANG_DEFAULT_OPENMP_RUNTIME "${CLANG_DEFAULT_OPENMP_RUNTIME}" -/* Default architecture for OpenMP offloading to Nvidia GPUs. */ -#define CLANG_OPENMP_NVPTX_DEFAULT_ARCH "${CLANG_OPENMP_NVPTX_DEFAULT_ARCH}" - /* Default architecture for SystemZ. */ #define CLANG_SYSTEMZ_DEFAULT_ARCH "${CLANG_SYSTEMZ_DEFAULT_ARCH}" Index: clang/CMakeLists.txt =================================================================== --- clang/CMakeLists.txt +++ clang/CMakeLists.txt @@ -245,31 +245,6 @@ set(CLANG_DEFAULT_OPENMP_RUNTIME "libomp" CACHE STRING "Default OpenMP runtime used by -fopenmp.") -# OpenMP offloading requires at least sm_35 because we use shuffle instructions -# to generate efficient code for reductions and the atomicMax instruction on -# 64-bit integers in the implementation of conditional lastprivate. -set(CUDA_ARCH_FLAGS "sm_35") - -# Try to find the highest Nvidia GPU architecture the system supports -if (NOT DEFINED CLANG_OPENMP_NVPTX_DEFAULT_ARCH) - find_package(CUDA QUIET) - if (CUDA_FOUND) - cuda_select_nvcc_arch_flags(CUDA_ARCH_FLAGS) - endif() -else() - set(CUDA_ARCH_FLAGS ${CLANG_OPENMP_NVPTX_DEFAULT_ARCH}) -endif() - -string(REGEX MATCH "sm_([0-9]+)" CUDA_ARCH_MATCH ${CUDA_ARCH_FLAGS}) -if (NOT DEFINED CUDA_ARCH_MATCH OR "${CMAKE_MATCH_1}" LESS 35) - set(CLANG_OPENMP_NVPTX_DEFAULT_ARCH "sm_35" CACHE STRING - "Default architecture for OpenMP offloading to Nvidia GPUs." FORCE) - message(WARNING "Resetting default architecture for OpenMP offloading to Nvidia GPUs to sm_35") -else() - set(CLANG_OPENMP_NVPTX_DEFAULT_ARCH ${CUDA_ARCH_MATCH} CACHE STRING - "Default architecture for OpenMP offloading to Nvidia GPUs.") -endif() - set(CLANG_SYSTEMZ_DEFAULT_ARCH "z10" CACHE STRING "SystemZ Default Arch") set(CLANG_VENDOR ${PACKAGE_VENDOR} CACHE STRING
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits