summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJonas Hahnfeld <hahnjo@hahnjo.de>2017-10-17 13:37:36 +0000
committerJonas Hahnfeld <hahnjo@hahnjo.de>2017-10-17 13:37:36 +0000
commit19e976a47167c7239e742fc508d644b714f10016 (patch)
treeed6844ba12bf85b853bd28bdd2eb1ad4046ddf5a /CMakeLists.txt
parente10677d71bd8243f4e9e3358c7831646644c3860 (diff)
downloadclang-19e976a47167c7239e742fc508d644b714f10016.tar.gz
[CMake][OpenMP] Customize default offloading arch
For the shuffle instructions in reductions we need at least sm_30 but the user may want to customize the default architecture. Differential Revision: https://reviews.llvm.org/D38883 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315996 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt11
1 files changed, 11 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b55c64d9e0..42d580077d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -235,6 +235,17 @@ endif()
set(CLANG_DEFAULT_OPENMP_RUNTIME "libomp" CACHE STRING
"Default OpenMP runtime used by -fopenmp.")
+# OpenMP offloading requires at least sm_30 because we use shuffle instructions
+# to generate efficient code for reductions.
+set(CLANG_OPENMP_NVPTX_DEFAULT_ARCH "sm_30" CACHE STRING
+ "Default architecture for OpenMP offloading to Nvidia GPUs.")
+string(REGEX MATCH "^sm_([0-9]+)$" MATCHED_ARCH "${CLANG_OPENMP_NVPTX_DEFAULT_ARCH}")
+if (NOT DEFINED MATCHED_ARCH OR "${CMAKE_MATCH_1}" LESS 30)
+ message(WARNING "Resetting default architecture for OpenMP offloading to Nvidia GPUs to sm_30")
+ set(CLANG_OPENMP_NVPTX_DEFAULT_ARCH "sm_30" CACHE STRING
+ "Default architecture for OpenMP offloading to Nvidia GPUs." FORCE)
+endif()
+
set(CLANG_VENDOR ${PACKAGE_VENDOR} CACHE STRING
"Vendor-specific text for showing with version information.")