gpu硬件,gpu驱动,cuda,CUDA Toolkit,cudatoolkit,cudnn,nvcc概念解析
组件 | 角色 | 依赖关系 |
---|---|---|
GPU | 硬件 | 无 |
CUDA | 编程模型/平台 | 需NVIDIA GPU和驱动 |
CUDA Toolkit | 开发工具包(含NVCC、库等) | 需匹配GPU驱动和CUDA版本 |
cuDNN | 深度学习加速库 | 需CUDA Toolkit |
NVCC | CUDA代码编译器 | 包含在CUDA Toolkit中 |
- GPU硬件:
- 硬件层面的图形处理器,最初用于图形渲染,后因其并行计算能力被广泛用于通用计算
- 如Tesla、A100、RTX系列
- CUDA:
- 由NVIDIA推出的并行计算平台和编程模型,透过这个技术,用户可利用GPU进行图像处理之外的运算,即允许开发者利用GPU进行通用计算。
- 通过
nvidia-smi
可查看驱动支持的CUDA版本上限
- CUDA Toolkit(官方完整工具包):
- CUDA 开发包,包含所有CUDA开发所需的工具和库。
nvcc
编译器:用于编译CUDA代码(.cu
文件)。- CUDA运行时库(如
libcudart.so
):提供GPU内存管理、核函数启动等API。 - 数学加速库:如
cuBLAS
(线性代数)、cuFFT
(傅里叶变换)等。 - 调试工具:
nsight
、cuda-gdb
等。
- CUDA Toolkit需要GPU驱动才能调用GPU的计算能力
- 安装方式:从NVIDIA官网下载安装包(
.run
、.deb
、.msi
等) - 安装目录:系统目录,如
/usr/local/cuda-11.8
- cudatoolkit(第三方精简版):
- 由第三方(如conda、PyTorch/TensorFlow团队)分发的CUDA运行时精简包,仅包含运行预编译程序所需的最小依赖。
- CUDA运行时库(无
nvcc
)。 - 部分核心库(如
cuBLAS
、cuDNN
的接口头文件)。 - 不包含:编译器、调试工具、文档等。
- CUDA运行时库(无
- 安装方式:通过conda或pip安装
conda install -c nvidia cudatoolkit=11.8
- 安装目录:Conda环境目录
- conda安装的
cudatoolkit
是精简版,不包含nvcc
编译器。若需nvcc
,需额外安装conda install -c nvidia cuda-nvcc=11.8 # 单独安装nvcc
为什么PyTorch推荐用cudatoolkit
而不是完整CUDA Toolkit?
- 深度学习框架已预编译好,只需CUDA运行时库,无需开发工具。
cudatoolkit
通过conda安装更轻量,且避免污染系统环境。
cudatoolkit
和完整CUDA Toolkit能共存吗?
- 可以:conda环境的
cudatoolkit
与系统CUDA Toolkit互不干扰。
- cuDNN:
-
针对深度学习优化的加速库,提供高效实现(如卷积、池化、LSTM)
-
每个cuDNN版本需匹配特定的CUDA Toolkit版本
- NVCC:
- CUDA Toolkit中的编译器,用于编译混合主机(CPU)和设备(GPU)代码。
nvcc --version
显示的是当前安装的CUDA Toolkit版本
- GPU驱动(NVIDIA Driver):
- GPU驱动是操作系统与物理GPU硬件通信的软件层,由NVIDIA提供
- 驱动版本决定了支持的最高CUDA版本
- 通过
nvidia-smi
命令查看驱动版本,如下图我的驱动版本是Driver Version: 546.30。支持的cuda最高版本为12.3。GPU硬件为RTX 3050。(GPU硬件!=GPU驱动)