diff --git a/CMakeLists.txt b/CMakeLists.txt index a0da6cc3a6fd73c1f44b055857ad438c263c78c2..31fa623ef9d705ef6025fe74f7a4756a6debb252 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,12 @@ if(NOT TESTCASE) set(TESTCASE md CACHE STRING "Select the testcase from the following: md, dem" FORCE) endif() +set(CUDA_ARCH ${CUDA_ARCH} CACHE STRING "CUDA_ARCH environment variable must be set.") + +if(NOT CUDA_ARCH) + set(CUDA_ARCH sm_80) +endif() + string(TOLOWER "${TESTCASE}" TESTCASE) message(STATUS "Selected testcase: ${TESTCASE}") @@ -63,6 +69,7 @@ add_dependencies(${CPU_BIN} gen_cpu) if(COMPILE_CUDA) find_package(CUDA REQUIRED) + enable_language(CUDA) if(USE_WALBERLA) waLBerla_add_executable( @@ -81,6 +88,14 @@ if(COMPILE_CUDA) target_compile_features(runtime_gpu PUBLIC cxx_std_11) set_target_properties(runtime_gpu PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + target_compile_options(${GPU_BIN} PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:-arch=${CUDA_ARCH}>) + target_include_directories(${GPU_BIN} PRIVATE ${CUDA_INCLUDE_DIRS}) + set_target_properties(${GPU_BIN} PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCH}) + + target_compile_options(runtime_gpu PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:-arch=${CUDA_ARCH}>) + target_include_directories(runtime_gpu PRIVATE ${CUDA_INCLUDE_DIRS}) + set_target_properties(runtime_gpu PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCH}) + #set_property(TARGET ${GPU_BIN} PROPERTY CUDA_SEPARABLE_COMPILATION ON) #target_link_libraries(${GPU_BIN} runtime_gpu)