一、CUDA、cuDNN简介

CUDA(Compute Unified Device Architecture)是由NVIDIA公司开发的一种通用并行计算平台和编程模型。它允许开发者利用GPU(图形处理器)的强大并行计算能力来高效处理各种计算密集型任务。CUDA不仅仅是硬件技术,它还包括一套完整的软件生态系统,提供从底层编程接口到高层应用框架的一系列工具,使得非图形领域的应用程序能够利用GPU进行加速。

cuDNN(CUDA Deep Neural Network)是NVIDIA提供的针对深度神经网络计算的GPU加速库。它是NVIDIA Deep Learning SDK的一部分,为标准例程如前向和反向卷积、池化层、归一化和激活层等提供了高度优化的实现。cuDNN旨在帮助深度学习研究人员和开发者实现高性能的GPU加速,使他们能够专注于训练神经网络和开发软件应用,而不必深入底层的GPU编程细节。

二、安装NVIDIA显卡驱动程序

匹配原则

  1. 显卡驱动与CUDA版本兼容性‌。

    NVIDIA 显卡驱动需满足 CUDA Toolkit 的最低要求(CUDA Toolkit Release Notes )。例如,CUDA 11.8 需驱动版本 ≥ 515.43.04,CUDA 12.x 需驱动 ≥ 535.54.03‌。

  2. GPU 算力与 CUDA 版本对应关系

    查询算力:https://developer.nvidia.com/cuda-gpus#compute

    显卡的算力决定了支持的CUDA版本。‌NVIDIA显卡的算力是通过Compute Capability(CC)来衡量的,不同的显卡有不同的CC值。例如,NVIDIA的RTX A2000显卡的算力为8.6,即CC为8.6‌1。CUDA版本需要支持显卡的CC值,否则会出现兼容性问题。

1. 查看显卡设备:

1
2
3
4
5
6
7
8
9
10
mvb@4090-6:$ lspci -nn | grep -i vga
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2685] (rev a1)
21:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2685] (rev a1)
41:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2685] (rev a1)
61:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2685] (rev a1)
63:00.0 VGA compatible controller [0300]: ASPEED Technology, Inc. ASPEED Graphics Family [1a03:2000] (rev 52)
81:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2685] (rev a1)
a1:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2685] (rev a1)
c1:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2685] (rev a1)
e1:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2685] (rev a1)
  • 10de 是NVIDIA的厂商ID
  • 2685 是设备ID,对应RTX 4090

2. 安装对应的显卡驱动

Nvidia 驱动下载页:https://www.nvidia.com/drivers

选择与自己显卡对应的版本,点击开始搜索——获取下载——立即下载,下载完成后点击运行安装即可。

3.检验驱动是否安装成功

终端输入nvidia-smi查看驱动信息

三、安装CUDA Toolkit

CUDA官方下载地址:1. https://developer.nvidia.com/cuda-toolkit-archive 2. https://developer.nvidia.com/cuda-downloads

终端输入nvidia-smi查看CUDA的驱动版本CUDA Version。如果CUDA Version: 12.8,说明本机可以支持 <=12.8 版本的 CUDA Toolkit 安装。

image-20260427145222107

1
2
wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_570.86.10_linux.run
sudo sh cuda_12.8.0_570.86.10_linux.run

可以在联网机器下载好runfile,传到内网机器。注意最好是runfile,其他格式rpm可能会安装失败。注意!如果已经提前装过驱动,在安装的时候把驱动项去掉。

配置环境变量:编辑 ~/.bashrc ,文件末尾添加:

1
2
export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH

验证环境变量:运行以下命令,确保配置成功:

1
2
echo $PATH
echo $LD_LIBRARY_PATH

确保 CUDA 安装和配置正确

1
2
nvcc --version  # 检查nvcc版本
which nvcc # 查看nvcc位置 /usr/local/cuda-12.6/bin/nvcc

四、安装cuDNN

cuDNN官方下载地址:cuDNN Archive | NVIDIA Developer

进入官网选择和自己的CUDA匹配的cuDNN版本,下载到本地

解压文件

1
tar -xf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz

*如果下载的是.deb,就按官网流程操作

将include 和 lib 中的内容分别复制/usr/local/cuda-12.4/targets/x86_64-linux/ 的对应目录下

1
2
3
4
5
6
7
cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive
sudo cp include/cudnn*.h /usr/local/cuda/include #写符号链接或实际路径都可以
sudo cp lib/libcudnn* /usr/local/cuda/lib64

# .deb安装后
sudo cp /usr/lib/x86_64-linux-gnu/libcudnn* /usr/local/cuda-12.6/targets/x86_64-linux/lib/ # 复制所有 cuDNN 库文件到实际路径
sudo cp /usr/include/cudnn*.h /usr/local/cuda-12.6/targets/x86_64-linux/include/ #复制头文件

确保复制的文件有正确的权限

1
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

验证安装检查 cuDNN 版本:

1
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

输出示例:

1
2
3
4
5
#define CUDNN_MAJOR 9
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 10000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)