diff options
-rw-r--r-- | Help/release/3.25.rst | 6 | ||||
-rw-r--r-- | Modules/Compiler/NVIDIA-CUDA.cmake | 12 | ||||
-rw-r--r-- | Modules/FindCUDAToolkit.cmake | 17 | ||||
-rw-r--r-- | Source/CMakeVersion.cmake | 2 | ||||
-rw-r--r-- | Tests/Cuda/Toolkit/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/CudaOnly/Toolkit/CMakeLists.txt | 4 |
6 files changed, 43 insertions, 1 deletions
diff --git a/Help/release/3.25.rst b/Help/release/3.25.rst index fdf8a94..e76a308 100644 --- a/Help/release/3.25.rst +++ b/Help/release/3.25.rst @@ -246,3 +246,9 @@ Changes made since CMake 3.25.0 include the following. command no longer accepts ``.a`` file names. This behavior was added in CMake 3.25.0, but has been reverted due finding GNU-ABI libraries in cases we did not previously. + +3.25.2 +------ + +* CUDA language level 20 (corresponding to C++20) is now supported with + NVCC 12.0 and above. diff --git a/Modules/Compiler/NVIDIA-CUDA.cmake b/Modules/Compiler/NVIDIA-CUDA.cmake index 34dd09a..0823954 100644 --- a/Modules/Compiler/NVIDIA-CUDA.cmake +++ b/Modules/Compiler/NVIDIA-CUDA.cmake @@ -119,6 +119,13 @@ if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC") endif() endif() + if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 12.0) + if(CMAKE_CUDA_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.11.25505) + set(CMAKE_CUDA20_STANDARD_COMPILE_OPTION "-std=c++20") + set(CMAKE_CUDA20_EXTENSION_COMPILE_OPTION "-std=c++20") + endif() + endif() + else() set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "") set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "") @@ -138,6 +145,11 @@ else() set(CMAKE_CUDA17_EXTENSION_COMPILE_OPTION "-std=c++17") endif() + if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 12.0) + set(CMAKE_CUDA20_STANDARD_COMPILE_OPTION "-std=c++20") + set(CMAKE_CUDA20_EXTENSION_COMPILE_OPTION "-std=c++20") + endif() + endif() if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "9.0") diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake index 5df31da..f104bfc 100644 --- a/Modules/FindCUDAToolkit.cmake +++ b/Modules/FindCUDAToolkit.cmake @@ -380,6 +380,18 @@ Targets Created: - ``CUDA::nvrtc`` +.. _`cuda_toolkit_nvjitlink`: + +nvJitLink +""""""""" + +The `nvJItLink <https://docs.nvidia.com/cuda/>`_ (Runtime LTO Linking) library. + +Targets Created: + +- ``CUDA::nvJitLink`` starting in CUDA 12.0 +- ``CUDA::nvJitLink_static`` starting in CUDA 12.0 + .. _`cuda_toolkit_nvml`: nvidia-ML @@ -1094,6 +1106,11 @@ if(CUDAToolkit_FOUND) endif() endif() + if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 12.0.0) + _CUDAToolkit_find_and_add_import_lib(nvJitLink DEPS cuda_driver) + _CUDAToolkit_find_and_add_import_lib(nvJitLink_static DEPS cuda_driver) + endif() + _CUDAToolkit_find_and_add_import_lib(nvml ALT nvidia-ml nvml) if(WIN32) diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index a244329..b7bd660 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,7 +1,7 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 25) -set(CMake_VERSION_PATCH 20221210) +set(CMake_VERSION_PATCH 20221214) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0) diff --git a/Tests/Cuda/Toolkit/CMakeLists.txt b/Tests/Cuda/Toolkit/CMakeLists.txt index e6b298d..b67aa32 100644 --- a/Tests/Cuda/Toolkit/CMakeLists.txt +++ b/Tests/Cuda/Toolkit/CMakeLists.txt @@ -22,6 +22,9 @@ set(cuda_libs cudart cuda_driver cublas cufft cufftw curand cusolver cusparse) if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 10.1) list(APPEND cuda_libs cublasLt) endif() +if(CUDAToolkit_VERSION_MAJOR VERSION_GREATER 11) + list(APPEND cuda_libs nvJitLink) +endif() if(CUDAToolkit_VERSION_MAJOR VERSION_LESS 11) list(APPEND cuda_libs nvgraph) endif() diff --git a/Tests/CudaOnly/Toolkit/CMakeLists.txt b/Tests/CudaOnly/Toolkit/CMakeLists.txt index ddf940b..e0801a3 100644 --- a/Tests/CudaOnly/Toolkit/CMakeLists.txt +++ b/Tests/CudaOnly/Toolkit/CMakeLists.txt @@ -20,10 +20,14 @@ set(cuda_libs cudart cuda_driver cublas cufft cufftw curand cusolver cusparse) if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 10.1) list(APPEND cuda_libs cublasLt) endif() +if(CUDAToolkit_VERSION_MAJOR VERSION_GREATER 11) + list(APPEND cuda_libs nvJitLink) +endif() if(CUDAToolkit_VERSION_MAJOR VERSION_LESS 11) list(APPEND cuda_libs nvgraph) endif() + # Verify that all the CUDA:: targets and variables exist foreach (cuda_lib IN LISTS cuda_libs) if(NOT CUDA_${cuda_lib}_LIBRARY) |