mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-03 21:00:01 -05:00
4fe9f534f5
Architecture 30 was removed with CUDA 11, so most of the CUDA tests fail with it. Remove setting the architecture and bump the minimum version to 3.18, so CMP0104 takes effect and we can rely on the default architecture, which is guaranteed to be compilable. Use of __ldg() in ProperLinkFlags was removed as it only affects performance and is available only on sm_35 and above. Testing the functionality of CUDA_ARCHITECTURES is already covered by CudaOnly.Architecture and CudaOnly.CompileFlags.
36 lines
1.5 KiB
CMake
36 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.18)
|
|
project(StaticRuntimePlusToolkit CUDA)
|
|
|
|
#Goal for this example:
|
|
# Validate that with cuda we can use some components of the CUDA toolkit, and
|
|
# specify the cuda runtime
|
|
find_package(CUDAToolkit REQUIRED)
|
|
|
|
add_library(Common OBJECT curand.cu nppif.cu)
|
|
target_link_libraries(Common PRIVATE CUDA::toolkit)
|
|
set_target_properties(Common PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
|
|
#static runtime with shared toolkit libraries
|
|
add_library(SharedToolkit SHARED shared.cu)
|
|
target_link_libraries(SharedToolkit PRIVATE Common CUDA::curand CUDA::nppif )
|
|
set_target_properties(SharedToolkit PROPERTIES CUDA_RUNTIME_LIBRARY none)
|
|
target_link_libraries(SharedToolkit PUBLIC CUDA::cudart_static)
|
|
|
|
#static runtime with static toolkit libraries
|
|
add_library(StaticToolkit SHARED static.cu)
|
|
target_link_libraries(StaticToolkit PRIVATE Common CUDA::curand_static CUDA::nppif_static)
|
|
|
|
#static runtime with mixed toolkit libraries
|
|
add_library(MixedToolkit SHARED mixed.cu)
|
|
target_link_libraries(MixedToolkit PRIVATE Common CUDA::curand CUDA::nppif_static)
|
|
set_target_properties(MixedToolkit PROPERTIES CUDA_RUNTIME_LIBRARY Static)
|
|
|
|
add_executable(CudaOnlyStaticRuntimePlusToolkit main.cu)
|
|
target_link_libraries(CudaOnlyStaticRuntimePlusToolkit PRIVATE SharedToolkit StaticToolkit MixedToolkit)
|
|
|
|
if(UNIX)
|
|
# Help the shared cuda runtime find libcurand and libnppif when they are not located
|
|
# in a default system searched location
|
|
set_property(TARGET CudaOnlyStaticRuntimePlusToolkit PROPERTY BUILD_RPATH ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES})
|
|
endif()
|