FindCUDAToolkit¶
3.17 版本新增。
此腳本會尋找 NVIDIA CUDA 工具包和相關函式庫,但不要求為指定的專案啟用 CUDA
語言。此模組不會搜尋 NVIDIA CUDA 範例。
3.19 版本新增:QNX 支援。
搜尋行為¶
CUDA 工具包的搜尋行為使用以下順序
如果已啟用
CUDA
語言,我們將使用包含編譯器的目錄作為nvcc
的第一個搜尋位置。如果變數
CMAKE_CUDA_COMPILER
或環境變數CUDACXX
已定義,則會將其用作nvcc
可執行檔的路徑。如果定義了
CUDAToolkit_ROOT
cmake 組態變數(例如,-DCUDAToolkit_ROOT=/some/path
)或環境變數,則將會搜尋。如果同時指定了環境變數和組態變數,則組態變數優先。此處指定的目錄必須使得可執行檔
nvcc
或適當的version.txt
或version.json
檔案可以在指定的目錄下找到。如果定義了 CUDA_PATH 環境變數,則會搜尋其中的
nvcc
。將使用
find_program()
在使用者的路徑中搜尋nvcc
。如果找到,則不會執行後續的搜尋嘗試。如果安裝了多個 CUDA 工具包,則使用者有責任確保路徑中出現的第一個nvcc
是所需的路徑。在 Unix 系統上,如果符號連結
/usr/local/cuda
存在,則會使用此連結。不會執行後續的搜尋嘗試。Windows 平台沒有預設的符號連結位置。將搜尋平台特定的預設安裝位置。如果正好找到一個候選位置,則會使用此位置。搜尋的預設 CUDA 工具包安裝位置如下
平台
搜尋模式
macOS
/Developer/NVIDIA/CUDA-X.Y
其他 Unix
/usr/local/cuda-X.Y
Windows
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y
其中
X.Y
將是 CUDA 工具包的特定版本,例如/usr/local/cuda-9.0
或C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
注意
當在系統的預設位置安裝多個 CUDA 工具包時(例如,
/usr/local/cuda-9.0
和/usr/local/cuda-10.0
都存在,但/usr/local/cuda
符號連結不存在),此套件會標記為未找到。在安裝了多個 CUDA 工具包的情況下,自動做出決策涉及太多因素。在這種情況下,建議使用者 (1) 設定
CUDAToolkit_ROOT
或 (2) 確保正確的nvcc
可執行檔出現在$PATH
中,以便find_program()
能夠找到。
引數¶
[<版本>]
[<版本>]
引數會要求找到的套件應相容的版本。請參閱 find_package 版本格式 以取得更多詳細資訊。
選項¶
REQUIRED
如果指定,則如果未找到合適的 CUDA 工具包,組態將會發生錯誤。
QUIET
如果指定,則搜尋合適的 CUDA 工具包不會產生任何訊息。
EXACT
如果指定,則只有在恢復指定的確切
VERSION
時,才會認為找到 CUDA 工具包。
匯入的目標¶
將提供一個名為 CUDA::toolkit
的 匯入的目標。
此模組為 CUDAToolkit 的每個以下函式庫定義了 IMPORTED
目標
CUDA 執行階段函式庫¶
CUDA 執行階段函式庫 (cudart) 是大多數應用程式通常需要連結的函式庫,以便進行任何諸如 cudaMalloc 和 cudaFree 之類的呼叫。
建立的目標
CUDA::cudart
CUDA::cudart_static
CUDA 驅動程式函式庫¶
CUDA 驅動程式函式庫 (cuda) 由使用諸如 cuMemAlloc 和 cuMemFree 之類呼叫的應用程式使用。
建立的目標
CUDA::cuda_driver
cuBLAS¶
cuBLAS 函式庫。
建立的目標
CUDA::cublas
CUDA::cublas_static
CUDA::cublasLt
從 CUDA 10.1 開始CUDA::cublasLt_static
從 CUDA 10.1 開始
cuDLA¶
3.27 版本新增。
NVIDIA Tegra 深度學習加速器 cuDLA 函式庫。
建立的目標
CUDA::cudla
從 CUDA 11.6 開始
cuFile¶
3.25 版本新增。
NVIDIA GPUDirect Storage cuFile 函式庫。
建立的目標
CUDA::cuFile
從 CUDA 11.4 開始CUDA::cuFile_static
從 CUDA 11.4 開始CUDA::cuFile_rdma
從 CUDA 11.4 開始CUDA::cuFile_rdma_static
從 CUDA 11.4 開始
cuFFT¶
cuFFT 函式庫。
建立的目標
CUDA::cufft
CUDA::cufftw
CUDA::cufft_static
CUDA::cufft_static_nocallback
從 CUDA 9.2 開始,需要 CMake 3.23+CUDA::cufftw_static
cuRAND¶
cuRAND 函式庫。
建立的目標
CUDA::curand
CUDA::curand_static
cuSOLVER¶
cuSOLVER 函式庫。
建立的目標
CUDA::cusolver
CUDA::cusolver_static
cuSPARSE¶
cuSPARSE 函式庫。
建立的目標
CUDA::cusparse
CUDA::cusparse_static
cupti¶
建立的目標
CUDA::cupti
CUDA::cupti_static
3.27 版本新增
CUDA::nvperf_host
從 CUDA 10.2 開始CUDA::nvperf_host_static
從 CUDA 10.2 開始CUDA::nvperf_target
從 CUDA 10.2 開始CUDA::pcsamplingutil
從 CUDA 11.3 開始
NPP¶
NPP 函式庫。
建立的目標
nppc:
CUDA::nppc
CUDA::nppc_static
nppial:nppi_arithmetic_and_logical_operations.h 中的算術和邏輯運算函式
CUDA::nppial
CUDA::nppial_static
nppicc:nppi_color_conversion.h 中的色彩轉換和取樣函式
CUDA::nppicc
CUDA::nppicc_static
nppicom:nppi_compression_functions.h 中的 JPEG 壓縮和解壓縮函式。從 CUDA 11.0 開始移除,請改用 nvJPEG。
CUDA::nppicom
CUDA::nppicom_static
nppidei:nppi_data_exchange_and_initialization.h 中的資料交換和初始化函式
CUDA::nppidei
CUDA::nppidei_static
nppif:nppi_filter_functions.h 中的篩選和電腦視覺函式
CUDA::nppif
CUDA::nppif_static
nppig:nppi_geometry_transforms.h 中找到的幾何轉換函式
CUDA::nppig
CUDA::nppig_static
nppim:nppi_morphological_operations.h 中找到的形態運算函式
CUDA::nppim
CUDA::nppim_static
nppist:nppi_statistics_functions.h 和 nppi_linear_transforms.h 中的統計和線性轉換
CUDA::nppist
CUDA::nppist_static
nppisu:nppi_support_functions.h 中的記憶體支援函式
CUDA::nppisu
CUDA::nppisu_static
nppitc:nppi_threshold_and_compare_operations.h 中的閾值和比較運算函式
CUDA::nppitc
CUDA::nppitc_static
npps:
CUDA::npps
CUDA::npps_static
nvBLAS¶
nvBLAS 函式庫。這是一個共享函式庫。
建立的目標
CUDA::nvblas
nvGRAPH¶
nvGRAPH 函式庫。已於 CUDA 11.0 版本開始移除
建立的目標
CUDA::nvgraph
CUDA::nvgraph_static
nvJPEG¶
nvJPEG 函式庫。於 CUDA 10 版本導入。
建立的目標
CUDA::nvjpeg
CUDA::nvjpeg_static
nvPTX 編譯器¶
3.25 版本新增。
nvPTX (PTX 編譯) 函式庫。PTX 編譯器 API 是一組 API,可用於將 PTX 程式碼編譯成 GPU 組語。於 CUDA 11.1 版本導入。這是一個靜態函式庫。
建立的目標
CUDA::nvptxcompiler_static
從 CUDA 11.1 版本開始
nvRTC¶
nvRTC (執行期編譯) 函式庫。
建立的目標
CUDA::nvrtc
於 3.26 版本新增
CUDA::nvrtc_builtins
CUDA::nvrtc_static
從 CUDA 11.5 版本開始CUDA::nvrtc_builtins_static
從 CUDA 11.5 版本開始
nvJitLink¶
nvJItLink (執行期 LTO 連結) 函式庫。
建立的目標
CUDA::nvJitLink
從 CUDA 12.0 版本開始CUDA::nvJitLink_static
從 CUDA 12.0 版本開始
nvFatBin¶
於 3.30 版本新增。
nvFatBin (執行期 fatbin 建立) 函式庫。
建立的目標
CUDA::nvfatbin
從 CUDA 12.4 版本開始CUDA::nvfatbin_static
從 CUDA 12.4 版本開始
nvidia-ML¶
建立的目標
CUDA::nvml
CUDA::nvml_static
從 CUDA 12.4 版本開始
於 3.31 版本新增: 新增 CUDA::nvml_static
。
nvToolsExt¶
自 3.25 版本起已棄用: 從 CUDA 10.0+ 開始,請使用 nvtx3。
NVIDIA 工具擴充。這是一個共享函式庫。
建立的目標
CUDA::nvToolsExt
nvtx3¶
3.25 版本新增。
僅標頭檔的 NVIDIA 工具擴充函式庫。於 CUDA 10.0 版本導入。
已建立的目標
CUDA::nvtx3
OpenCL¶
NVIDIA OpenCL 函式庫。這是一個共享函式庫。
建立的目標
CUDA::OpenCL
cuLIBOS¶
cuLIBOS 函式庫是一個後端執行緒抽象層函式庫,僅為靜態。 CUDA::cublas_static
、 CUDA::cusparse_static
、 CUDA::cufft_static
、 CUDA::curand_static
以及(實作時)NPP 函式庫都會自動連結此相依性。
已建立的目標
CUDA::culibos
注意: 消費者不應直接使用此目標。
結果變數¶
CUDAToolkit_FOUND
一個布林值,指定是否找到 CUDA 工具組。
CUDAToolkit_VERSION
找到的 CUDA 工具組的確切版本(由
nvcc --version
、version.txt
或version.json
回報)。CUDAToolkit_VERSION_MAJOR
CUDA 工具組的主要版本。
CUDAToolkit_VERSION_MINOR
CUDA 工具組的次要版本。
CUDAToolkit_VERSION_PATCH
CUDA 工具組的修補程式版本。
CUDAToolkit_BIN_DIR
CUDA 工具組函式庫目錄的路徑,其中包含 CUDA 可執行檔
nvcc
。CUDAToolkit_INCLUDE_DIRS
所有包含編譯連結 CUDA 專案所需標頭檔的 CUDA 工具組資料夾的路徑清單。
CUDAToolkit_LIBRARY_DIR
CUDA 工具組函式庫目錄的路徑,其中包含 CUDA 執行期函式庫
cudart
。CUDAToolkit_LIBRARY_ROOT
於 3.18 版本新增。
CUDA 工具組目錄的路徑,其中包含 nvvm 目錄以及 version.txt 或 version.json。
CUDAToolkit_TARGET_DIR
當進行跨編譯時,包含目標架構的 CUDA 工具組目錄路徑。當不進行跨編譯時,這將等同於
CUDAToolkit_BIN_DIR
的父目錄。CUDAToolkit_NVCC_EXECUTABLE
NVIDIA CUDA 編譯器
nvcc
的路徑。請注意,此路徑可能與CMAKE_CUDA_COMPILER
**不同** 。必須找到nvcc
才能判斷 CUDA 工具組版本以及判斷工具組的其他功能。設定此變數是為了方便依賴此變數的模組。