From 79f2e82af0e56482c0ff27a2c1127231e81e70ed Mon Sep 17 00:00:00 2001
From: Markus Rampp <mjr@mpcdf.mpg.de>
Date: Mon, 9 Jan 2017 15:34:26 +0100
Subject: [PATCH] modify CMakeLists.txt to support new CUDA sdk versions and
 compute capabilities * add compilation support for P100 and GTX1080 GPUs
 (cuda/8.0, compute_6x) * introduce conditional for handling list of CUDA
 compute architectures depending on CUDA sdk version

---
 CMakeLists.txt | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b1ce3f3..4b13963 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -71,12 +71,20 @@ if (CUDA_FOUND)
         endif()
         set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};--use_fast_math;-ftz=true;-O4;-Xptxas -O4")
 
-#        list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_13,code=sm_13")
-        list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_20,code=sm_20")
-        list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_20,code=sm_21")
+        if (${CUDA_VERSION} LESS 7.0) 
+                list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_13,code=sm_13")
+        endif()
+        if (${CUDA_VERSION} LESS 8.5) 
+                list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_20,code=[sm_20,sm_21]")
+	endif()	
         list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_30,code=sm_30")
         list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_35,code=sm_35")
-        list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_52,code=sm_52")
+        if (NOT (${CUDA_VERSION} LESS 7.5)) 
+                list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_52,code=sm_52")
+	endif()
+        if (NOT (${CUDA_VERSION} LESS 8.0)) 
+		list(APPEND CUDA_NVCC_FLAGS "-gencode=arch=compute_60,code=[sm_60,sm_61]")
+	endif()
         add_definitions(-DWITH_CUDA)
         set (BIOEM_CUDA_STATUS "Found")
 endif()
@@ -160,6 +168,7 @@ message(STATUS "CUDA: ${BIOEM_CUDA_STATUS}")
 message(STATUS "OpenMP: ${BIOEM_OPENMP_STATUS}")
 message(STATUS "MPI: ${BIOEM_MPI_STATUS}")
 
+
 if (PRINT_CMAKE_VARIABLES)
         get_cmake_property(_variableNames VARIABLES)
         foreach (_variableName ${_variableNames})
-- 
GitLab