Added in version 3.17.
This script locates the NVIDIA CUDA toolkit and the associated libraries, but does not require the CUDA language be enabled for a given project. This module does not search for the NVIDIA CUDA Samples.
Added in version 3.19: QNX support.
The CUDA Toolkit search behavior uses the following order:
CUDA language has been enabled we will use the directory containing the compiler as the first search location for nvcc.CMAKE_CUDA_COMPILER or the environment variable CUDACXX is defined, it will be used as the path to the nvcc executable.If the CUDAToolkit_ROOT cmake configuration variable (e.g., -DCUDAToolkit_ROOT=/some/path) or environment variable is defined, it will be searched. If both an environment variable and a configuration variable are specified, the configuration variable takes precedence.
The directory specified here must be such that the executable nvcc or the appropriate version.txt or version.json file can be found underneath the specified directory.
nvcc.nvcc using find_program(). If this is found, no subsequent search attempts are performed. Users are responsible for ensuring that the first nvcc to show up in the path is the desired path in the event that multiple CUDA Toolkits are installed./usr/local/cuda exists, this is used. No subsequent search attempts are performed. No default symbolic link location exists for the Windows platform.The platform specific default install locations are searched. If exactly one candidate is found, this is used. The default CUDA Toolkit install locations searched are:
Platform | Search Pattern |
|---|---|
macOS |
|
Other Unix |
|
Windows |
|
Where X.Y would be a specific version of the CUDA Toolkit, such as /usr/local/cuda-9.0 or C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
Note
When multiple CUDA Toolkits are installed in the default location of a system (e.g., both /usr/local/cuda-9.0 and /usr/local/cuda-10.0 exist but the /usr/local/cuda symbolic link does not exist), this package is marked as not found.
There are too many factors involved in making an automatic decision in the presence of multiple CUDA Toolkits being installed. In this situation, users are encouraged to either (1) set CUDAToolkit_ROOT or (2) ensure that the correct nvcc executable shows up in $PATH for find_program() to find.
[<version>] The [<version>] argument requests a version with which the package found should be compatible. See find_package version format for more details.
REQUIRED If specified, configuration will error if a suitable CUDA Toolkit is not found.
QUIET If specified, the search for a suitable CUDA Toolkit will not produce any messages.
EXACT If specified, the CUDA Toolkit is considered found only if the exact VERSION specified is recovered.
An imported target named CUDA::toolkit is provided.
This module defines IMPORTED targets for each of the following libraries that are part of the CUDAToolkit:
The CUDA Runtime library (cudart) are what most applications will typically need to link against to make any calls such as cudaMalloc, and cudaFree.
Targets Created:
CUDA::cudartCUDA::cudart_staticThe CUDA Driver library (cuda) are used by applications that use calls such as cuMemAlloc, and cuMemFree.
Targets Created:
CUDA::cuda_driverThe cuBLAS library.
Targets Created:
CUDA::cublasCUDA::cublas_staticCUDA::cublasLt starting in CUDA 10.1CUDA::cublasLt_static starting in CUDA 10.1Added in version 3.27.
The NVIDIA Tegra Deep Learning Accelerator cuDLA library.
Targets Created:
CUDA::cudla starting in CUDA 11.6Added in version 3.25.
The NVIDIA GPUDirect Storage cuFile library.
Targets Created:
CUDA::cuFile starting in CUDA 11.4CUDA::cuFile_static starting in CUDA 11.4CUDA::cuFile_rdma starting in CUDA 11.4CUDA::cuFile_rdma_static starting in CUDA 11.4The cuFFT library.
Targets Created:
CUDA::cufftCUDA::cufftwCUDA::cufft_staticCUDA::cufft_static_nocallback starting in CUDA 9.2, requires CMake 3.23+CUDA::cufftw_staticThe cuRAND library.
Targets Created:
CUDA::curandCUDA::curand_staticThe cuSOLVER library.
Targets Created:
CUDA::cusolverCUDA::cusolver_staticThe cuSPARSE library.
Targets Created:
CUDA::cusparseCUDA::cusparse_staticThe NVIDIA CUDA Profiling Tools Interface.
Targets Created:
CUDA::cuptiCUDA::cupti_staticAdded in version 3.27:
CUDA::nvperf_host starting in CUDA 10.2CUDA::nvperf_host_static starting in CUDA 10.2CUDA::nvperf_target starting in CUDA 10.2CUDA::pcsamplingutil starting in CUDA 11.3The NPP libraries.
Targets Created:
nppc:
CUDA::nppcCUDA::nppc_staticnppial: Arithmetic and logical operation functions in nppi_arithmetic_and_logical_operations.h
CUDA::nppialCUDA::nppial_staticnppicc: Color conversion and sampling functions in nppi_color_conversion.h
CUDA::nppiccCUDA::nppicc_staticnppicom: JPEG compression and decompression functions in nppi_compression_functions.h Removed starting in CUDA 11.0, use nvJPEG instead.
CUDA::nppicomCUDA::nppicom_staticnppidei: Data exchange and initialization functions in nppi_data_exchange_and_initialization.h
CUDA::nppideiCUDA::nppidei_staticnppif: Filtering and computer vision functions in nppi_filter_functions.h
CUDA::nppifCUDA::nppif_staticnppig: Geometry transformation functions found in nppi_geometry_transforms.h
CUDA::nppigCUDA::nppig_staticnppim: Morphological operation functions found in nppi_morphological_operations.h
CUDA::nppimCUDA::nppim_staticnppist: Statistics and linear transform in nppi_statistics_functions.h and nppi_linear_transforms.h
CUDA::nppistCUDA::nppist_staticnppisu: Memory support functions in nppi_support_functions.h
CUDA::nppisuCUDA::nppisu_staticnppitc: Threshold and compare operation functions in nppi_threshold_and_compare_operations.h
CUDA::nppitcCUDA::nppitc_staticnpps:
CUDA::nppsCUDA::npps_staticThe nvBLAS libraries. This is a shared library only.
Targets Created:
CUDA::nvblasThe nvGRAPH library. Removed starting in CUDA 11.0
Targets Created:
CUDA::nvgraphCUDA::nvgraph_staticThe nvJPEG library. Introduced in CUDA 10.
Targets Created:
CUDA::nvjpegCUDA::nvjpeg_staticAdded in version 3.25.
The nvPTX (PTX Compilation) library. The PTX Compiler APIs are a set of APIs which can be used to compile a PTX program into GPU assembly code. Introduced in CUDA 11.1 This is a static library only.
Targets Created:
CUDA::nvptxcompiler_static starting in CUDA 11.1The nvRTC (Runtime Compilation) library.
Targets Created:
CUDA::nvrtcAdded in version 3.26:
CUDA::nvrtc_builtinsCUDA::nvrtc_static starting in CUDA 11.5CUDA::nvrtc_builtins_static starting in CUDA 11.5The nvJItLink (Runtime LTO Linking) library.
Targets Created:
CUDA::nvJitLink starting in CUDA 12.0CUDA::nvJitLink_static starting in CUDA 12.0Added in version 3.30.
The nvFatBin (Runtime fatbin creation) library.
Targets Created:
CUDA::nvfatbin starting in CUDA 12.4CUDA::nvfatbin_static starting in CUDA 12.4The NVIDIA Management Library.
Targets Created:
CUDA::nvmlCUDA::nvml_static starting in CUDA 12.4Added in version 3.31: Added CUDA::nvml_static.
Deprecated since version 3.25: With CUDA 10.0+, use nvtx3.
The NVIDIA Tools Extension. This is a shared library only.
Targets Created:
CUDA::nvToolsExtAdded in version 3.25.
The header-only NVIDIA Tools Extension Library. Introduced in CUDA 10.0.
Targets created:
CUDA::nvtx3The NVIDIA OpenCL Library. This is a shared library only.
Targets Created:
CUDA::OpenCLThe cuLIBOS library is a backend thread abstraction layer library which is static only. The CUDA::cublas_static, CUDA::cusparse_static, CUDA::cufft_static, CUDA::curand_static, and (when implemented) NPP libraries all automatically have this dependency linked.
Target Created:
CUDA::culibosNote: direct usage of this target by consumers should not be necessary.
CUDAToolkit_FOUND A boolean specifying whether or not the CUDA Toolkit was found.
CUDAToolkit_VERSION The exact version of the CUDA Toolkit found (as reported by nvcc --version, version.txt, or version.json).
CUDAToolkit_VERSION_MAJOR The major version of the CUDA Toolkit.
CUDAToolkit_VERSION_MINOR The minor version of the CUDA Toolkit.
CUDAToolkit_VERSION_PATCH The patch version of the CUDA Toolkit.
CUDAToolkit_BIN_DIR The path to the CUDA Toolkit library directory that contains the CUDA executable nvcc.
CUDAToolkit_INCLUDE_DIRS List of paths to all the CUDA Toolkit folders containing header files required to compile a project linking against CUDA.
CUDAToolkit_LIBRARY_DIR The path to the CUDA Toolkit library directory that contains the CUDA Runtime library cudart.
CUDAToolkit_LIBRARY_ROOT Added in version 3.18.
The path to the CUDA Toolkit directory containing the nvvm directory and either version.txt or version.json.
CUDAToolkit_TARGET_DIR The path to the CUDA Toolkit directory including the target architecture when cross-compiling. When not cross-compiling this will be equivalent to the parent directory of CUDAToolkit_BIN_DIR.
CUDAToolkit_NVCC_EXECUTABLE The path to the NVIDIA CUDA compiler nvcc. Note that this path may not be the same as CMAKE_CUDA_COMPILER. nvcc must be found to determine the CUDA Toolkit version as well as determining other features of the Toolkit. This variable is set for the convenience of modules that depend on this one.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/module/FindCUDAToolkit.html