安装和验证CUDA和cuDNN

合集:AI开发基础-环境搭建

Web官网:http://www.AiSelect.club

一、安装CUDA

1、什么是CUDA?

CUDA(Compute Unified Device Architecture)是由NVIDIA开发的一种并行计算平台和编程模型,它允许开发者使用C、C++、Python等编程语言直接编写程序,以便在NVIDIA的GPU上执行。CUDA的核心在于提供了一个统一的编程模型和一套完整的软件生态系统,使得GPU能够加速各种计算密集型任务,特别是在深度学习、高性能计算、科学计算等领域表现突出。

CUDA的核心特点:

  • 高性能计算:通过数千个轻量级线程的并行执行,显著提高计算速度。
  • 广泛应用:CUDA的应用范围非常广泛,包括图像与视频处理、计算生物学、地震分析等领域。
  • 异构计算模型:采用CPU+GPU的异构计算模型,其中CPU负责逻辑性强的任务,而GPU处理高度并行的计算任务。
  • 内存模型:CUDA提供了专门的内存管理模型,允许程序员高效地使用GPU上的多种类型的内存。

2、查看GPU是否支持CUDA?

打开Windows显卡控制面板, 点击左下角的”系统信息”菜单项,看到GPU型号、内存、驱动版本号、CUDA核心数、支持CUDA的最高版本号等信息。

NVIDIA GeForce MX150
驱动程序版本:31.0.15.3818
驱动程序日期:2024/1/2
DirectX 版本:12 (FL 12.1)
物理位置:PCI 总线 2、设备 0、功能 0
利用率0%
专用 GPU 内存0.0/2.0 GB
共享 GPU 内存0.0/7.9 GB
GPU 内存0.0/9.9 GB
384 个 CUDA 核心

或者使用nvidia-smi程序。smi 是 “System Management Interface”(系统管理接口)的缩写。nvidia-smi是 NVIDIA 提供的一个命令行工具,用于监控和管理 NVIDIA GPU 设备的状态和性能。它基于 NVIDIA 管理库 (NVML) 构建,可以帮助用户轻松获取有关 GPU 的实时信息,包括 GPU 的使用情况、温度、内存占用、运行中的进程等。nvidia-smi 查看到的 CUDA 版本号表示当前 GPU 驱动程序支持的”最高CUDA Toolkit 版本号”。例如,当您在 nvidia-smi 输出中看到 “CUDA Version” 为 12.2 时,这意味着您的 GPU 驱动程序支持 CUDA 12.2。您可以在这个版本的 CUDA Toolkit 下开发和运行 CUDA 应用程序。请注意,虽然驱动程序支持的 CUDA 版本与实际安装的 CUDA Toolkit 版本可能不完全相同,但驱动程序支持的版本应高于或等于实际安装的 CUDA Toolkit 版本。否则,您可能无法正常运行 CUDA 应用程序。

安装完驱动程序后,nvidia-smi 一般部署在路径:C:\Program Files\NVIDIA Corporation\NVSMI。

在Windows cmd 中输入 nvidia-smi

C:\Users\86138>nvidia-smi
Thu Nov 7 16:49:35 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 538.18                 Driver Version: 538.18       CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU Name                     TCC/WDDM | Bus-Id       Disp.A | Volatile Uncorr. ECC |
| Fan Temp   Perf         Pwr:Usage/Cap |         Memory-Usage | GPU-Util Compute M. |
|                                         |                     |               MIG M. |
|=========================================+======================+======================|
|   0 NVIDIA GeForce MX150         WDDM | 00000000:02:00.0 Off |                 N/A |
| N/A   42C   P0             N/A / ERR! |     0MiB / 2048MiB |     0%     Default |
|                                         |                     |                 N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                           |
| GPU   GI   CI       PID   Type   Process name                           GPU Memory |
|       ID   ID                                                             Usage     |
|=======================================================================================|
| No running processes found                                                           |
+---------------------------------------------------------------------------------------+

3、CUDA对NVIDIA驱动版本要求

根据NVIDIA官网资料:

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

CUDA次版本兼容性的所需最低驱动程序版本信息/Minimum Required Driver Version for CUDA Minor Version Compatibility:

CUDA ToolkitLinux x86_64 Driver VersionWindows x86_64 Driver Version
CUDA 12.x>=525.60.13>=528.33
CUDA 11.8.x CUDA 11.7.x CUDA 11.6.x CUDA 11.5.x CUDA 11.4.x CUDA 11.3.x CUDA 11.2.x CUDA 11.1.x>=450.80.02>=452.39
CUDA 11.0 (11.0.3)>=450.36.06**>=451.22**

说明:使用与工具包/CUDA Toolkit驱动程序版本不同的最低所需版本可能在兼容模式下被允许。CUDA 11.0是在较早的驱动程序版本下发布的,但通过升级到Tesla推荐驱动程序450.80.02(Linux)/ 452.39(Windows),可以在CUDA 11.x系列工具包中实现次版本兼容性。

4、下载并安装CUDA Toolkit

最新版本的下载:
https://developer.nvidia.com/cuda-downloads
历史版本的下载:
https://developer.nvidia.com/cuda-toolkit-archive

选择操作系统Linux或Windows,选择架构X86,选择Windows版本号,建议选择安装类型为network,安装包较小。安装路径例如:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2。

5、检测CUDA Toolkit

检查CUDA版本号:

C:\Users\86138>nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Jun_13_19:42:34_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.2, V12.2.91
Build cuda_12.2.r12.2/compiler.32965470_0

检查可发现已安装的CUDA版本号:V12.2.91

运行设备参数检测程序deviceQuery.exe,例如在安装目录 C:\App\cuda12-2-Dev\extras\demo_suite\下运行deviceQuery.exe。检查输出是否:Result = PASS?

C:\App\cuda12-2-Dev\extras\demo_suite>deviceQuery.exe
deviceQuery.exe Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "NVIDIA GeForce MX150"
CUDA Driver Version / Runtime Version         12.2 / 12.2
CUDA Capability Major/Minor version number:   6.1
Total amount of global memory:                 2048 MBytes (2147352576 bytes)
( 3) Multiprocessors, (128) CUDA Cores/MP:     384 CUDA Cores
GPU Max Clock rate:                           1532 MHz (1.53 GHz)
Memory Clock rate:                             3004 Mhz
Memory Bus Width:                             64-bit
L2 Cache Size:                                 524288 bytes
Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers
Total amount of constant memory:               zu bytes
Total amount of shared memory per block:       zu bytes
Total number of registers available per block: 65536
Warp size:                                     32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block:           1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size   (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch:                         zu bytes
Texture alignment:                             zu bytes
Concurrent copy and kernel execution:         Yes with 1 copy engine(s)
Run time limit on kernels:                     Yes
Integrated GPU sharing Host Memory:           No
Support host page-locked memory mapping:       Yes
Alignment requirement for Surfaces:           Yes
Device has ECC support:                       Disabled
CUDA Device Driver Mode (TCC or WDDM):         WDDM (Windows Display Driver Model)
Device supports Unified Addressing (UVA):     Yes
Device supports Compute Preemption:           Yes
Supports Cooperative Kernel Launch:           Yes
Supports MultiDevice Co-op Kernel Launch:     No
Device PCI Domain ID / Bus ID / location ID:   0 / 2 / 0
Compute Mode:
    < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.2, CUDA Runtime Version = 12.2, NumDevs = 1, Device0 = NVIDIA GeForce MX150
Result = PASS

运行设备带宽检测程序bandwidthTest.exe,例如在安装目录 C:\App\cuda12-2-Dev\extras\demo_suite\下运行bandwidthTest.exe。检查输出是否:Result = PASS?

C:\App\cuda12-2-Dev\extras\demo_suite>bandwidthTest.exe
[CUDA Bandwidth Test] - Starting...
Running on...

Device 0: NVIDIA GeForce MX150
Quick Mode

Host to Device Bandwidth, 1 Device(s)
PINNED Memory Transfers
  Transfer Size (Bytes)       Bandwidth(MB/s)
  33554432                     3013.5

Device to Host Bandwidth, 1 Device(s)
PINNED Memory Transfers
  Transfer Size (Bytes)       Bandwidth(MB/s)
  33554432                     3177.1

Device to Device Bandwidth, 1 Device(s)
PINNED Memory Transfers
  Transfer Size (Bytes)       Bandwidth(MB/s)
  33554432                     40530.8

Result = PASS

NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.

6、GPU Compute Capability

GPU(图形处理器)的Compute Capability是衡量其计算能力的一个重要指标,它通常与GPU的架构紧密相关。Compute Capability是NVIDIA用来标识GPU核心架构、硬件支持的功能和指令的一个版本号,通常由主版本号X和次版本号Y组成。它帮助开发者了解GPU的硬件特性,以便在编写CUDA代码时进行优化。 NVIDIA GPU架构与Compute Capability的对应关系:

  • Turing架构:Compute Capability为7.5,代表产品如Tesla T4。
  • Ampere架构:Compute Capability为8.0,代表产品如A100、A800。
  • Hopper架构:Compute Capability为11.0,代表产品如H100。

Compute Capability与GPU性能的关系

  • 计算单元数量:影响GPU的浮点运算能力。
  • 计算频率:单位时间内计算的次数,也影响性能。
官网:[CUDA GPUs - Compute Capability | NVIDIA Developer](https://developer.nvidia.com/cuda-gpus)

二、安装cuDNN

1、什么是cuDNN?

cuDNN(CUDA Deep Neural Network library)是由NVIDIA开发的深度神经网络GPU加速库,它提供了针对深度学习任务的高度优化的实现,包括卷积、池化、注意力机制等。cuDNN是建立在CUDA之上的,它利用GPU的并行计算能力,显著提高了深度学习模型的训练速度和效率。

在安装CUDA和cuDNN的顺序上,应该先安装CUDA,然后再安装cuDNN。这是因为cuDNN是基于CUDA的,需要CUDA Toolkit的支持才能正常工作。

cuDNN的主要优势

  • 并行计算能力:充分利用GPU的并行计算能力,提高计算效率。
  • 高性能:通过优化深度神经网络的计算流程,实现高效的深度学习计算。
  • 易用性:提供了丰富的API和工具,使得开发者可以方便地编写高效的CUDNN程序。

在安装PyTorch GPU版本等AI框架之前,应先安装CUDA Toolkit,然后再安装cuDNN。这是因为cuDNN需要CUDA Toolkit的支持才能正常工作。

3、下载并安装cuDNN

下载地址:

[cuDNN Archive | NVIDIA Developer](https://developer.nvidia.com/rdp/cudnn-archive)
  1. 注册并登录NVIDIA开发者网站:
  2. 下载cuDNN:
    • 登录后,进入cuDNN下载页面
    • 填写问卷并提交,系统会根据你安装的CUDA版本推荐相应的cuDNN版本。
  3. 解压并配置cuDNN:
    • 下载完成后,解压cuDNN文件,通常会得到三个文件夹:binincludelib
    • 将这三个文件夹复制到CUDA的安装目录下。例如,如果你的CUDA安装在C:\App\cuda12-2-Dev,则将这三个文件夹复制到该目录下。

3、检测cuDNN版本

在CUDA安装目录的bin子目录下,查看cudnn64_8.dll的属性,可检测出cuDNN版本号,例如: cuDNN v8.9.7。

三、vGPU

vGPU主要用于GPU虚拟化,使得多个虚拟机可以同时访问同一个物理GPU,而CUDA则是一个编程模型和软件环境,允许开发者使用C、C++、Python等高级语言进行编程,并能加速GPU的运算和处理。

发表评论