合集: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官网资料:
CUDA次版本兼容性的所需最低驱动程序版本信息/Minimum Required Driver Version for CUDA Minor Version Compatibility:
CUDA Toolkit | Linux x86_64 Driver Version | Windows 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)
- 注册并登录NVIDIA开发者网站:
- 访问NVIDIA开发者网站并注册/登录。
- 下载cuDNN:
- 登录后,进入cuDNN下载页面。
- 填写问卷并提交,系统会根据你安装的CUDA版本推荐相应的cuDNN版本。
- 解压并配置cuDNN:
- 下载完成后,解压cuDNN文件,通常会得到三个文件夹:
bin
、include
和lib
。 - 将这三个文件夹复制到CUDA的安装目录下。例如,如果你的CUDA安装在
C:\App\cuda12-2-Dev
,则将这三个文件夹复制到该目录下。
- 下载完成后,解压cuDNN文件,通常会得到三个文件夹:
3、检测cuDNN版本
在CUDA安装目录的bin子目录下,查看cudnn64_8.dll的属性,可检测出cuDNN版本号,例如: cuDNN v8.9.7。
三、vGPU
vGPU主要用于GPU虚拟化,使得多个虚拟机可以同时访问同一个物理GPU,而CUDA则是一个编程模型和软件环境,允许开发者使用C、C++、Python等高级语言进行编程,并能加速GPU的运算和处理。