FindCUDAToolkit¶
Added in version 3.17.
Finds the NVIDIA CUDA toolkit and the associated libraries, but does not
require the CUDA language be enabled for a given project:
find_package(CUDAToolkit [<version>] [QUIET] [REQUIRED] [EXACT] [...])
This module does not search for the NVIDIA CUDA Samples.
Added in version 3.19: QNX support.
Search Behavior¶
The CUDA Toolkit search behavior uses the following order:
If the
CUDAlanguage has been enabled we will use the directory containing the compiler as the first search location fornvcc.If the variable
CMAKE_CUDA_COMPILERor the environment variableCUDACXXis defined, it will be used as the path to thenvccexecutable.If the
CUDAToolkit_ROOTcmake 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
nvccor the appropriateversion.txtorversion.jsonfile can be found underneath the specified directory.If the CUDA_PATH environment variable is defined, it will be searched for
nvcc.The user's path is searched for
nvccusingfind_program(). If this is found, no subsequent search attempts are performed. Users are responsible for ensuring that the firstnvccto show up in the path is the desired path in the event that multiple CUDA Toolkits are installed.On Unix systems, if the symbolic link
/usr/local/cudaexists, 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
/Developer/NVIDIA/CUDA-X.YOther Unix
/usr/local/cuda-X.YWindows
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.YWhere
X.Ywould be a specific version of the CUDA Toolkit, such as/usr/local/cuda-9.0orC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0Note
When multiple CUDA Toolkits are installed in the default location of a system (e.g., both
/usr/local/cuda-9.0and/usr/local/cuda-10.0exist but the/usr/local/cudasymbolic 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_ROOTor (2) ensure that the correctnvccexecutable shows up in$PATHforfind_program()to find.
Arguments¶
[<version>]The
[<version>]argument requests a version with which the package found should be compatible. See find_package version format for more details.
Options¶
REQUIREDIf specified, configuration will error if a suitable CUDA Toolkit is not found.
QUIETIf specified, the search for a suitable CUDA Toolkit will not produce any messages.
EXACTIf specified, the CUDA Toolkit is considered found only if the exact
VERSIONspecified is recovered.
Imported Targets¶
An imported target named CUDA::toolkit is provided.
This module provides Imported Targets for each of the following libraries that are part of the CUDAToolkit:
CUDA Runtime Library¶
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_static
CUDA Driver Library¶
The CUDA Driver library (cuda) are used by applications that use calls such as cuMemAlloc, and cuMemFree.
Targets Created:
CUDA::cuda_driver
cuBLAS¶
The CUDA Basic Linear Algebra Subroutine library.
Targets Created:
CUDA::cublasCUDA::cublas_staticCUDA::cublasLtstarting in CUDA 10.1CUDA::cublasLt_staticstarting in CUDA 10.1
cuDLA¶
Added in version 3.27.
The NVIDIA Tegra Deep Learning Accelerator library.
Targets Created:
CUDA::cudlastarting in CUDA 11.6
cuFile¶
Added in version 3.25.
The NVIDIA GPUDirect Storage cuFile library.
Targets Created:
CUDA::cuFilestarting in CUDA 11.4CUDA::cuFile_staticstarting in CUDA 11.4CUDA::cuFile_rdmastarting in CUDA 11.4CUDA::cuFile_rdma_staticstarting in CUDA 11.4
cuFFT¶
The CUDA Fast Fourier Transform library.
Targets Created:
CUDA::cufftCUDA::cufftwCUDA::cufft_staticCUDA::cufft_static_nocallbackstarting in CUDA 9.2, requires CMake 3.23+CUDA::cufftw_static
cuRAND¶
The CUDA random number generation library.
Targets Created:
CUDA::curandCUDA::curand_static
cuSOLVER¶
A GPU accelerated linear system solver library.
Targets Created:
CUDA::cusolverCUDA::cusolver_static
cuSPARSE¶
The CUDA sparse matrix library.
Targets Created:
CUDA::cusparseCUDA::cusparse_static
cupti¶
The NVIDIA CUDA Profiling Tools Interface.
Targets Created:
CUDA::cuptiCUDA::cupti_static
Added in version 3.27:
CUDA::nvperf_hoststarting in CUDA 10.2CUDA::nvperf_host_staticstarting in CUDA 10.2CUDA::nvperf_targetstarting in CUDA 10.2CUDA::pcsamplingutilstarting in CUDA 11.3
NPP¶
The NVIDIA 2D Image and Signal Processing Performance Primitives libraries.
Targets Created:
nppc:
CUDA::nppcCUDA::nppc_static
nppial: Arithmetic and logical operation functions in nppi_arithmetic_and_logical_operations.h
CUDA::nppialCUDA::nppial_static
nppicc: Color conversion and sampling functions in nppi_color_conversion.h
CUDA::nppiccCUDA::nppicc_static
nppicom: JPEG compression and decompression functions in nppi_compression_functions.h Removed starting in CUDA 11.0, use nvJPEG instead.
CUDA::nppicomCUDA::nppicom_static
nppidei: Data exchange and initialization functions in nppi_data_exchange_and_initialization.h
CUDA::nppideiCUDA::nppidei_static
nppif: Filtering and computer vision functions in nppi_filter_functions.h
CUDA::nppifCUDA::nppif_static
nppig: Geometry transformation functions found in nppi_geometry_transforms.h
CUDA::nppigCUDA::nppig_static
nppim: Morphological operation functions found in nppi_morphological_operations.h
CUDA::nppimCUDA::nppim_static
nppist: Statistics and linear transform in nppi_statistics_functions.h and nppi_linear_transforms.h
CUDA::nppistCUDA::nppist_static
nppisu: Memory support functions in nppi_support_functions.h
CUDA::nppisuCUDA::nppisu_static
nppitc: Threshold and compare operation functions in nppi_threshold_and_compare_operations.h
CUDA::nppitcCUDA::nppitc_static
npps:
CUDA::nppsCUDA::npps_static
nvBLAS¶
The GPU-accelerated drop-in BLAS library. This is a shared library only.
Targets Created:
CUDA::nvblas
nvGRAPH¶
A GPU-accelerated graph analytics library. Removed starting in CUDA 11.0
Targets Created:
CUDA::nvgraphCUDA::nvgraph_static
nvJPEG¶
A GPU-accelerated JPEG codec library. Introduced in CUDA 10.
Targets Created:
CUDA::nvjpegCUDA::nvjpeg_static
nvPTX Compiler¶
Added in version 3.25.
The PTX Compiler APIs. These 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_staticstarting in CUDA 11.1
nvRTC¶
A runtime compilation library for CUDA.
Targets Created:
CUDA::nvrtc
Added in version 3.26:
CUDA::nvrtc_builtinsCUDA::nvrtc_staticstarting in CUDA 11.5CUDA::nvrtc_builtins_staticstarting in CUDA 11.5
nvJitLink¶
The JIT Link APIs.
Targets Created:
CUDA::nvJitLinkstarting in CUDA 12.0CUDA::nvJitLink_staticstarting in CUDA 12.0
nvFatBin¶
Added in version 3.30.
The Fatbin Creator APIs.
Targets Created:
CUDA::nvfatbinstarting in CUDA 12.4CUDA::nvfatbin_staticstarting in CUDA 12.4
nvidia-ML¶
The NVIDIA Management Library.
Targets Created:
CUDA::nvmlCUDA::nvml_staticstarting in CUDA 12.4
Added in version 3.31: Added CUDA::nvml_static.
nvToolsExt¶
Deprecated since version 3.25: With CUDA 10.0+, use nvtx3. Starting in CUDA 12.9 the nvToolsExt library no longer exists
The legacy NVIDIA Tools Extension. This is a shared library only.
Targets Created:
CUDA::nvToolsExt
nvtx3¶
Added in version 3.25.
The header-only NVIDIA Tools Extension library. Introduced in CUDA 10.0.
Targets created:
CUDA::nvtx3CUDA::nvtx3_interopAdded in version 4.1.
This is provided by CUDA 12.9 and above for use by languages that cannot consume C++ header-only libraries, such as
Fortran.
OpenCL¶
The NVIDIA Open Computing Language library. This is a shared library only.
Targets Created:
CUDA::OpenCL
cuLIBOS¶
The 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::culibos
Note: direct usage of this target by consumers should not be necessary.
Result Variables¶
This module defines the following variables:
CUDAToolkit_FOUNDA boolean specifying whether or not the CUDA Toolkit was found.
CUDAToolkit_VERSIONThe exact version of the CUDA Toolkit found (as reported by
nvcc --version,version.txt, orversion.json).CUDAToolkit_VERSION_MAJORThe major version of the CUDA Toolkit.
CUDAToolkit_VERSION_MINORThe minor version of the CUDA Toolkit.
CUDAToolkit_VERSION_PATCHThe patch version of the CUDA Toolkit.
CUDAToolkit_BIN_DIRThe path to the CUDA Toolkit library directory that contains the CUDA executable
nvcc.CUDAToolkit_INCLUDE_DIRSList of paths to all the CUDA Toolkit folders containing header files required to compile a project linking against CUDA.
CUDAToolkit_LIBRARY_DIRThe path to the CUDA Toolkit library directory that contains the CUDA Runtime library
cudart.CUDAToolkit_LIBRARY_ROOTAdded in version 3.18.
The path to the CUDA Toolkit directory containing the nvvm directory and either version.txt or version.json.
CUDAToolkit_TARGET_DIRThe 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_EXECUTABLEThe path to the NVIDIA CUDA compiler
nvcc. Note that this path may not be the same asCMAKE_CUDA_COMPILER.nvccmust 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.