前言
在深度学习和高性能计算领域,NVIDIA 的 GPU 提供了强大的加速性能,使得各种计算任务(如神经网络训练、科学计算等)能够高效运行。为了充分利用 NVIDIA GPU 的计算能力,我们需要安装 NVIDIA 驱动、CUDA Toolkit 和 cuDNN。这三者相互配合,构成了一个完整的开发和运行环境,能够帮助开发者高效地利用 GPU 进行深度学习任务。
组件 | 作用 | 依赖关系 |
---|---|---|
NVIDIA 驱动 | 提供 GPU 与操作系统的接口,管理 GPU 的资源与运行环境。 | NVIDIA 驱动是运行 CUDA 和 cuDNN 的基础,必须安装。 |
CUDA Toolkit | 提供 GPU 加速的编程框架和库,允许开发者在 GPU 上运行并行计算。 | 依赖于 NVIDIA 驱动,必须先安装驱动才能使用 CUDA。 |
cuDNN | NVIDIA 提供的深度学习加速库,优化了神经网络的计算。 | 依赖于 CUDA Toolkit,必须先安装 CUDA 才能使用 cuDNN。 |
在本篇文章中,我将详细介绍如何在 Ubuntu 20.04 系统上安装和配置 NVIDIA 驱动、CUDA Toolkit 和 cuDNN。这篇文章不仅包含了从安装到配置的完整过程,还将详细讲解每一步的操作,帮助你顺利完成安装。本文也是我在多次踩坑后的经验总结,针对常见的坑进行了详细的说明,确保你能够避免错误并顺利搭建起高效的开发环境。
一、安装 NVIDIA 驱动
1. 更新系统(必须)
首先,确保你的系统是最新的,运行以下命令:
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
2. 禁用 Nouveau 驱动(必须)
NVIDIA 驱动程序需要禁用 Ubuntu 默认使用的 Nouveau 开源驱动。你可以通过以下步骤来禁用 Nouveau 驱动:
-
创建一个新的黑名单文件:
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
-
在文件中添加以下内容,然后保存并退出:
blacklist nouveau options nouveau modeset=0
-
终端执行以下命令,更新 initramfs:
sudo update-initramfs -u
-
重启系统以使更改生效:
sudo reboot
3. 禁用 i915 驱动(视情况而定)
-
打开 Windows系统 的设备管理器,点击显示适配器,如图所示我的包括
Intel(R) UHD Graphics
和NVIDIA GeForce RTX 4050 Laptop GPU
,说明我需要禁用集成显卡,以便让独立显卡负责所有图形处理。对于 Ubuntu 系统,如果你的计算机同样配备了集成显卡(如
Intel UHD Graphics
)和独立显卡(如NVIDIA GeForce RTX
),可能会遇到类似的问题。默认情况下,Ubuntu 会启用集成显卡驱动(i915
驱动),这可能与独立显卡(NVIDIA 驱动)发生冲突,导致系统在启动时出现图形问题或性能瓶颈,如下图: -
为了解决这一问题,我们可以禁用
i915
驱动,让系统只使用独立显卡。首先,打开终端并编辑 GRUB 配置文件:sudo nano /etc/default/grub
-
找到以下行:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
在这一行末尾添加
nomodeset
和i915.modeset=0
,如下所示,然后保存并退出:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset i915.modeset=0"
nomodeset
:禁用内核模式设置,防止在启动时加载图形驱动。i915.modeset=0
:禁用i915
驱动的模式设置,确保系统不使用 Intel 集成显卡。
-
修改完配置文件后,需要更新 GRUB 配置,使修改生效:
sudo update-grub
4. 安装 NVIDIA 驱动
方法 1:通过软件更新器安装(推荐)
-
在开始菜单中搜索并打开
软件和更新
。 -
切换到
附加驱动
选项卡,选择系统推荐的附加驱动,并点击应用更改(A)
。系统会自动下载并安装所选驱动,稍等片刻即可完成安装。
方法 2:通过 Ubuntu 包管理器安装
Ubuntu 20.04 提供了对 NVIDIA 驱动的支持,可以通过 apt
包管理器来安装官方驱动。
-
运行以下命令以添加 NVIDIA 驱动的 PPA 存储库:
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update
-
使用
ubuntu-drivers devices
命令来查看系统推荐的 NVIDIA 驱动版本。这个命令会扫描你的硬件并列出适合你系统的驱动版本,如下图所示:在我的系统中,推荐的 NVIDIA 驱动是
nvidia-driver-535-server-open
(具体推荐版本可能因硬件不同而有所不同)。 -
根据
ubuntu-drivers devices
命令输出的推荐驱动版本,使用apt
安装适合的 NVIDIA 驱动。例如,假设推荐的驱动版本为nvidia-driver-535-server-open
,你可以运行以下命令进行安装:sudo apt install nvidia-driver-535-server-open
5. 重启系统
-
安装完成后,重启计算机以确保新的驱动程序生效:
sudo reboot
-
可以使用以下命令检查 NVIDIA 驱动是否正确安装:
nvidia-smi
如果显示了 GPU 的相关信息(如下图所示,需要记住图中标注的
CUDA Version
,下面会用到),说明安装成功。
二、安装 CUDA Toolkit
1. 打开官网
-
下滑找到并点击
<= CUDA Version
的CUDA Toolkit
下载链接(如图我选择了CUDA Toolkit 12.1.1
的下载链接,因为我的CUDA Version:12.2
) -
依次选择
Linux
->x86_64
->Ubuntu
->20.04
->runfile(local)
2. 安装CUDA Toolkit
-
安装
CUDA Toolkit
之前需要首先安装一些相互依赖的库文件sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
-
下滑找到
Base Installer
模块 -
终端执行安装命令:
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run sudo sh cuda_12.1.1_530.30.02_linux.run
运行上面指令后,稍等片刻会弹出如下界面,选择
Continue
并按回车。输入
accept
并按回车。接着,如下图所示,在弹出的界面中通过
Enter
键,取消Driver
和530.30.02
的安装,然后点击Install
,等待…提示:是否需要安装
nvidia-fs
(NVIDIA 提供的一个特殊文件系统,用于管理和优化 NVIDIA 驱动和硬件资源的交互)?- 普通用户:如果你只是进行基本的 CUDA 开发或运行应用程序,不需要特定的文件系统优化,通常不需要选择安装
nvidia-fs
。 - 高性能计算或集群环境:如果你在设置集群或执行需要大量数据传输的高性能计算任务时,
nvidia-fs
可能会提供性能优化。
如下图所示,安装完毕,
CUDA Toolkit
已成功安装,但 CUDA 驱动(Driver
)没有被安装(正常现象,因为刚才我们取消勾选了Driver
和530.30.02
的安装) - 普通用户:如果你只是进行基本的 CUDA 开发或运行应用程序,不需要特定的文件系统优化,通常不需要选择安装
3. 配置环境变量
-
打开终端,执行以下命令编辑
.bashrc
文件:nano ~/.bashrc
-
在
.bashrc
文件的末尾添加以下几行:# CUDA Environment Variables for CUDA 12.1 export PATH=/usr/local/cuda-12.1/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH export LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LIBRARY_PATH
这些行会将 CUDA 可执行文件目录添加到
PATH
环境变量中,并将 CUDA 库目录添加到LD_LIBRARY_PATH
环境变量中。这样,系统就能正确地找到 CUDA 的工具和库文件。注意:需要将所有的
12.1
换成你安装的CUDA Version
版本 -
保存并退出编辑器后,运行以下命令来使环境变量生效:
source ~/.bashrc
-
为了验证环境变量是否已正确配置,可以运行以下命令来检查
PATH
和LD_LIBRARY_PATH
是否包含 CUDA 目录:echo $PATH echo $LD_LIBRARY_PATH
此外,运行
nvcc
命令,查看 CUDA 编译器是否可用:nvcc --version
如果显示 CUDA 的版本信息,则说明环境变量已正确配置。
三、安装 cuDNN
1. 打开官网
-
根据自己下载的
CUDA Toolkit
版本点击相应的cuDNN
版本 -
点击
Local Installer for Linux x86 64 (Tar)
(需要登录 NVIDIA 开发者账号,推荐Google登录),稍等片刻…
2. 安装cuDNN
-
解压下载的 cuDNN 安装包(
cudnn-linux-x86_64-8.9.5.30_cuda12-archive.tar.xz
替换为你的安装包的文件名)tar -xvf cudnn-linux-x86_64-8.9.5.30_cuda12-archive.tar.xz
-
解压完成后,终端进入
下载
目录,需要将 cuDNN 文件复制到 CUDA 的相应目录中(cudnn-linux-x86_64-8.9.5.30_cuda12-archive
替换为你解压后的文件名,cuda-12.1
替换为你的CUDA Toolkit
版本):cd ~/下载 sudo cp -r cudnn-linux-x86_64-8.9.5.30_cuda12-archive/include/* /usr/local/cuda-12.1/include/ sudo cp -r cudnn-linux-x86_64-8.9.5.30_cuda12-archive/lib/* /usr/local/cuda-12.1/lib64/
-
确保复制的
cuDNN
文件具有适当的权限,以便其他用户能够访问它们(cuda-12.1
替换为你的CUDA Toolkit
版本):sudo chmod a+r /usr/local/cuda-12.1/include/cudnn*.h sudo chmod a+r /usr/local/cuda-12.1/lib64/libcudnn*
-
安装完成后,运行以下命令验证 cuDNN 是否正确安装:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
注意:在较新版本的 cuDNN(如 8.0 及以上)中,
cudnn.h
文件不再直接包含版本号宏定义(如CUDNN_MAJOR
、CUDNN_MINOR
等),相反,版本信息被移到了cudnn_version.h
文件中。cuDNN版本 8.0 以下的版本使用命令cat /usr/local/cuda-12.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
(cuda-12.1
替换为你的CUDA Toolkit
版本)验证安装是否完成。如图所示说明
cuDNN
安装完成,表示安装的 cuDNN 版本为 8.9.5
结尾
通过本篇文章,我们详细介绍了如何在 Ubuntu 20.04 系统上安装和配置 NVIDIA 驱动、CUDA Toolkit 和 cuDNN,以及它们在深度学习开发中的重要性。从系统更新、驱动安装到 CUDA 和 cuDNN 的配置,每一步都涵盖了详细的操作流程和常见问题的解决方案。
经过这些步骤,你的系统将具备强大的 GPU 加速能力,能够高效地进行深度学习任务的训练和推理工作。无论你是新手还是有一定经验的开发者,这篇文章都能帮助你顺利完成环境搭建,避免安装过程中的一些常见错误。
希望这篇文章能为你节省时间,避免踩坑,让你更专注于深度学习项目的开发。祝你在 AI 和高性能计算的道路上取得更多的成果!