diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8c58f2a33..c9e1b7b36 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -393,7 +393,11 @@ if(CUDA_FOUND) set(CUDA_NVCC_FLAGS "-ccbin ${CMAKE_C_COMPILER}" CACHE STRING "nvcc flags" FORCE) endif() if(EIGEN_TEST_CUDA_CLANG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 --cuda-gpu-arch=sm_30") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + string(APPEND CMAKE_CXX_FLAGS " --cuda-path=${CUDA_TOOLKIT_ROOT_DIR}") + foreach(GPU IN LISTS EIGEN_CUDA_COMPUTE_ARCH) + string(APPEND CMAKE_CXX_FLAGS " --cuda-gpu-arch=sm_${GPU}") + endforeach() endif() set(EIGEN_ADD_TEST_FILENAME_EXTENSION "cu") diff --git a/unsupported/test/CMakeLists.txt b/unsupported/test/CMakeLists.txt index e8e1dc832..e6c757275 100644 --- a/unsupported/test/CMakeLists.txt +++ b/unsupported/test/CMakeLists.txt @@ -250,7 +250,11 @@ if(CUDA_FOUND AND EIGEN_TEST_CUDA) set(CUDA_NVCC_FLAGS "-ccbin ${CMAKE_C_COMPILER}" CACHE STRING "nvcc flags" FORCE) endif() if(EIGEN_TEST_CUDA_CLANG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 --cuda-gpu-arch=sm_${EIGEN_CUDA_COMPUTE_ARCH}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + string(APPEND CMAKE_CXX_FLAGS " --cuda-path=${CUDA_TOOLKIT_ROOT_DIR}") + foreach(ARCH IN LISTS EIGEN_CUDA_COMPUTE_ARCH) + string(APPEND CMAKE_CXX_FLAGS " --cuda-gpu-arch=sm_${ARCH}") + endforeach() endif() set(EIGEN_CUDA_RELAXED_CONSTEXPR "--expt-relaxed-constexpr") @@ -265,7 +269,11 @@ if(CUDA_FOUND AND EIGEN_TEST_CUDA) set(EIGEN_CUDA_CXX11_FLAG "") endif() - set(CUDA_NVCC_FLAGS "${EIGEN_CUDA_CXX11_FLAG} ${EIGEN_CUDA_RELAXED_CONSTEXPR} -arch compute_${EIGEN_CUDA_COMPUTE_ARCH} -Xcudafe \"--display_error_number\" ${CUDA_NVCC_FLAGS}") + set(NVCC_ARCH_FLAGS) + foreach(ARCH IN LISTS EIGEN_CUDA_COMPUTE_ARCH) + string(APPEND NVCC_ARCH_FLAGS " -gencode arch=compute_${ARCH},code=sm_${ARCH}") + endforeach() + set(CUDA_NVCC_FLAGS "${EIGEN_CUDA_CXX11_FLAG} ${EIGEN_CUDA_RELAXED_CONSTEXPR} -Xcudafe \"--display_error_number\" ${NVCC_ARCH_FLAGS} ${CUDA_NVCC_FLAGS}") cuda_include_directories("${CMAKE_CURRENT_BINARY_DIR}" "${CUDA_TOOLKIT_ROOT_DIR}/include") set(EIGEN_ADD_TEST_FILENAME_EXTENSION "cu") @@ -276,8 +284,15 @@ if(CUDA_FOUND AND EIGEN_TEST_CUDA) ei_add_test(cxx11_tensor_cast_float16_gpu) ei_add_test(cxx11_tensor_scan_gpu) + set(EIGEN_CUDA_OLDEST_COMPUTE_ARCH 9999) + foreach(ARCH IN LISTS EIGEN_CUDA_COMPUTE_ARCH) + if(${ARCH} LESS ${EIGEN_CUDA_OLDEST_COMPUTE_ARCH}) + set(EIGEN_CUDA_OLDEST_COMPUTE_ARCH ${ARCH}) + endif() + endforeach() + # Contractions require arch 3.0 or higher - if (${EIGEN_CUDA_COMPUTE_ARCH} GREATER 29) + if (${EIGEN_CUDA_OLDEST_COMPUTE_ARCH} GREATER 29) ei_add_test(cxx11_tensor_device) ei_add_test(cxx11_tensor_gpu) ei_add_test(cxx11_tensor_contract_gpu) @@ -285,7 +300,7 @@ if(CUDA_FOUND AND EIGEN_TEST_CUDA) endif() # The random number generation code requires arch 3.5 or greater. - if (${EIGEN_CUDA_COMPUTE_ARCH} GREATER 34) + if (${EIGEN_CUDA_OLDEST_COMPUTE_ARCH} GREATER 34) ei_add_test(cxx11_tensor_random_gpu) endif()