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
。如果找到,則不會執行後續的搜尋嘗試。使用者有責任確保路徑中出現的第一個nvcc
是所需的路徑,以防安裝了多個 CUDA 工具組。在 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
starting in CUDA 10.1CUDA::cublasLt_static
starting in CUDA 10.1
cuDLA¶
版本 3.27 新增。
NVIDIA Tegra 深度學習加速器 cuDLA 函式庫。
建立的目標
CUDA::cudla
starting in CUDA 11.6
cuFile¶
版本 3.25 新增。
NVIDIA GPUDirect Storage cuFile 函式庫。
建立的目標
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.4
cuFFT¶
cuFFT 函式庫。
建立的目標
CUDA::cufft
CUDA::cufftw
CUDA::cufft_static
CUDA::cufft_static_nocallback
starting in CUDA 9.2, requires 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
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.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 是一組可用於將 PTX 程式編譯成 GPU 組譯碼的 API。在 CUDA 11.1 中引入。這是一個僅限靜態函式庫。
建立的目標
CUDA::nvptxcompiler_static
starting in CUDA 11.1
nvRTC¶
nvRTC (執行階段編譯) 函式庫。
建立的目標
CUDA::nvrtc
版本 3.26 新增
CUDA::nvrtc_builtins
CUDA::nvrtc_static
starting in CUDA 11.5CUDA::nvrtc_builtins_static
starting in CUDA 11.5
nvJitLink¶
nvJItLink (執行階段 LTO 連結) 函式庫。
建立的目標
CUDA::nvJitLink
starting in CUDA 12.0CUDA::nvJitLink_static
starting in CUDA 12.0
nvFatBin¶
版本 3.30 新增。
nvFatBin (執行階段 fatbin 建立) 函式庫。
建立的目標
CUDA::nvfatbin
starting in CUDA 12.4CUDA::nvfatbin_static
starting in CUDA 12.4
nvidia-ML¶
建立的目標
CUDA::nvml
CUDA::nvml_static
starting in 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 可執行檔
nvcc
的 CUDA 工具組函式庫目錄的路徑。CUDAToolkit_INCLUDE_DIRS
包含編譯連結 CUDA 專案所需的標頭檔的所有 CUDA 工具組資料夾的路徑列表。
CUDAToolkit_LIBRARY_DIR
包含 CUDA 執行階段函式庫
cudart
的 CUDA 工具組函式庫目錄的路徑。CUDAToolkit_LIBRARY_ROOT
版本 3.18 新增。
包含 nvvm 目錄和 version.txt 或 version.json 的 CUDA 工具組目錄的路徑。
CUDAToolkit_TARGET_DIR
包含交叉編譯時的目標架構的 CUDA 工具組目錄的路徑。在非交叉編譯時,這將等同於
CUDAToolkit_BIN_DIR
的父目錄。CUDAToolkit_NVCC_EXECUTABLE
NVIDIA CUDA 編譯器
nvcc
的路徑。請注意,此路徑可能與CMAKE_CUDA_COMPILER
**不**同。nvcc
必須被找到,以確定 CUDA 工具組版本以及確定工具組的其他功能。設定此變數是為了方便依賴此模組的模組。