Linux Mint 22.2:CUDA、cuDNN 多版本安装指南

Alex Johnson
-
Linux Mint 22.2:CUDA、cuDNN 多版本安装指南

系统环境:Linux Mint 22.2 (基于 Ubuntu 24.04)

CUDA 版本:13.0 Update 2 (主版本) + 12.6 (兼容旧项目)

cuDNN 版本:9.14.0

NVIDIA 驱动nvidia-driver-580

核心理念

  • 系统级配置:使用符号链接和通用环境变量。
  • 项目级隔离:通过轻量级 run.sh 脚本动态配置不同 CUDA 路径,实现完全隔离,且无需依赖任何额外的虚拟环境或容器技术。

一、准备工作:系统更新与基础工具安装

在开始之前,确保您的 Linux Mint 22.2 系统是最新的,并且安装了必要的构建工具和依赖项。 这可以通过运行以下命令来完成。 首先,为了确保您的系统软件包是最新的,请执行更新和升级操作。然后,安装构建工具,包括 build-essentialgccg++make,以及用于下载和管理软件包的 wgetcurl,以及 Python 环境。 Python 环境包括 python3python3-pip,它们对于某些深度学习框架的安装和配置至关重要。

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y build-essential gcc g++ make wget curl python3 python3-pip

接下来,检查您的系统是否已正确识别 NVIDIA 显卡。 这是确保后续步骤能够顺利进行的关键。 运行 lspci | grep -i nvidia 命令。 如果命令输出了关于您的 NVIDIA 显卡的信息,则说明系统已成功检测到显卡。 如果没有输出,则说明系统可能没有 NVIDIA 显卡,或者驱动程序没有正确安装。 在这种情况下,您需要检查您的硬件配置,并确认您的系统支持 NVIDIA 显卡。

# 检查 GPU
lspci | grep -i nvidia
  • 重要提示:如果以上命令没有输出,请确认您的系统确实配备了 NVIDIA 显卡。 如果确认有 NVIDIA 显卡,则可能需要检查您的 BIOS 设置,确保 PCIe 接口已启用,或者检查您的系统是否正确安装了必要的 NVIDIA 驱动。

二、安装 NVIDIA 驱动程序(nvidia-driver-580

安装 NVIDIA 驱动程序是使用 CUDA 的关键步骤。 您可以选择图形界面安装或命令行安装。 这里推荐使用图形界面安装,因为它通常更容易操作。

推荐:图形化安装

  1. 首先,打开**“驱动程序管理器”**(Driver Manager)。 驱动程序管理器通常可以在系统菜单中找到,或者通过搜索来快速定位。
  2. 在驱动程序管理器中,您会看到一个可用的驱动程序列表。 从列表中选择 nvidia-driver-580 或更高版本。 建议选择推荐的、经过测试的驱动程序版本以获得最佳兼容性和性能。
  3. 选择驱动程序后,点击“应用更改”按钮。 系统将开始安装驱动程序。
  4. 安装完成后,系统会提示您重启计算机。 重启后,NVIDIA 驱动程序将生效。

命令行安装

如果您更喜欢命令行,也可以使用以下命令安装驱动程序:

sudo apt install -y nvidia-driver-580
sudo reboot

执行此命令后,系统将下载并安装 nvidia-driver-580 驱动程序。 安装完成后,使用 sudo reboot 命令重启系统,以使驱动程序生效。

安装完成后,为了验证驱动程序是否成功安装,请运行 nvidia-smi 命令。 如果命令输出了 NVIDIA 驱动程序的详细信息,包括驱动程序版本(例如,580.xx)和 CUDA 支持上限(例如,13.0+),则说明驱动程序安装成功。

# 验证驱动程序
nvidia-smi
  • 提示:如果在运行 nvidia-smi 命令时遇到问题,例如,出现“NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver”错误,这通常意味着驱动程序没有正确安装或与您的硬件不兼容。 您可能需要重新安装驱动程序或尝试安装其他版本的驱动程序。

三、CUDA Toolkit 的安装(多版本并存)

为了支持不同的项目需求,我们将在系统中安装 CUDA Toolkit 的多个版本。 首先,您需要添加 NVIDIA 官方 CUDA 仓库。 这允许您通过 apt 命令轻松安装和管理 CUDA 软件包。

# 添加官方 CUDA 仓库(Mint 22.2 = ubuntu2404)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

接下来,使用 apt 命令安装您所需的 CUDA 版本。 我们将安装两个版本:CUDA 13.0 作为主版本,以及 CUDA 12.6,用于兼容旧项目。

# 主版本:CUDA 13.0
sudo apt install -y cuda-toolkit-13-0

# 可选:CUDA 12.6(用于旧项目)
sudo apt install -y cuda-toolkit-12-6

安装完成后, CUDA Toolkit 将安装在 /usr/local/ 目录下,您可以在其中找到不同版本的 CUDA,例如 /usr/local/cuda-13.0//usr/local/cuda-12.6/。 确保您记下这些路径,因为在后续的项目级隔离配置中,您将需要用到它们。

四、系统级通用配置(符号链接 + 环境变量)

为了使 CUDA 在整个系统中可用,我们需要配置系统级环境变量。 首先,我们将创建一个通用符号链接,使其指向默认的 CUDA 版本(这里是 CUDA 13.0)。 这样做的好处是,当您需要在系统中使用 CUDA 时,只需使用 /usr/local/cuda/ 即可,而无需关心具体的版本。

# 创建通用符号链接(系统默认指向 13.0)
sudo ln -sfn /usr/local/cuda-13.0 /usr/local/cuda

接下来,我们需要设置环境变量,以便系统能够找到 CUDA 的相关工具和库。 我们将创建一个名为 cuda.sh 的脚本文件,并将必要的 CUDA 环境变量添加到其中。 使用文本编辑器(例如 nano),创建并编辑 /etc/profile.d/cuda.sh 文件。

sudo nano /etc/profile.d/cuda.sh

将以下内容添加到 cuda.sh 文件中:

export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

保存并关闭文件。 接下来,我们需要确保该脚本文件具有可执行权限,并使环境变量生效。

sudo chmod +x /etc/profile.d/cuda.sh
source /etc/profile.d/cuda.sh

现在,CUDA 的环境变量已经配置完成。 您可以通过运行 nvcc --version 命令来验证 CUDA 是否已正确安装并配置。 如果显示 CUDA 的版本信息,则说明配置成功。

五、安装 cuDNN

cuDNNNVIDIA 的深度神经网络库,它为 GPU 加速的深度学习提供了高度优化的例程。 您可以通过 apt 命令轻松安装 cuDNN。 安装时,请确保安装与您的 CUDA 版本兼容的 cuDNN 版本。 如果您安装了 CUDA 13.0,则安装 cudnn9-cuda-13。 如果您安装了 CUDA 12.6,则安装 cudnn9-cuda-12

sudo apt install -y cudnn9-cuda-13
sudo apt install -y cudnn9-cuda-12  # 如果装了 12.6

cuDNN 的库文件通常安装在 /usr/lib/x86_64-linux-gnu/ 目录下,您无需手动配置库路径。

六、系统级版本切换(可选)

系统级版本切换允许您在不同的 CUDA 版本之间切换。 虽然这在某些情况下可能有用,但不推荐频繁使用,因为它会影响整个系统的环境。

# 切换到 CUDA 12.6
sudo ln -sfn /usr/local/cuda-12.6 /usr/local/cuda
source /etc/profile.d/cuda.sh
nvcc --version

通过修改符号链接 /usr/local/cuda/,并重新加载环境变量,您可以切换到不同的 CUDA 版本。 请注意,切换后,CUDA 版本将全局生效,影响所有项目。 因此,建议您使用项目级隔离的方法(在第七节中介绍),以避免影响其他项目。

七、项目级隔离:纯 run.sh 脚本 export 不同版本(推荐!)

为了实现 CUDA 环境的完全隔离,并避免版本冲突,我们推荐使用项目级隔离方案。 这种方法的核心是,每个项目都有一个独立的 run.sh 脚本,该脚本在运行时 export 相应的 CUDA 路径。 这种方法非常轻量级,无需使用 venvcondaDocker,即可实现环境的隔离。

目录结构

首先,创建一个目录结构,用于组织您的项目。

~/projects/
├── project_a/          # 用 CUDA 13.0
│   └── run.sh
├── project_b/          # 用 CUDA  12.6
│   └── run.sh
└── project_cpu/        # 无 GPU
    └── run.sh

1. project_a/run.sh(CUDA 13.0)

为使用 CUDA 13.0 的项目创建一个 run.sh 脚本。 在脚本中,首先需要清理旧的 CUDA 环境变量,然后设置指向 CUDA 13.0 的环境变量。

#!/bin/bash
# 项目 A:使用 CUDA 13.0

# 清理旧 CUDA 路径
unset CUDA_HOME
export PATH=$(echo $PATH | tr ':' '\n' | grep -v "/cuda" | tr '\n' ':' | sed 's/:$//')
export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | tr ':' '\n' | grep -v "/cuda" | tr '\n' ':' | sed 's/:$//')

# 设置专用 CUDA 13.0
export CUDA_HOME=/usr/local/cuda-13.0
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

echo "Project A -> CUDA 13.0 已激活"
nvcc --version | head -n 2

# 你的项目代码
python3 main.py
# 或 ./build/app

2. project_b/run.sh(CUDA 12.6)

为使用 CUDA 12.6 的项目创建一个 run.sh 脚本。 同样,清理旧的环境变量,然后设置指向 CUDA 12.6 的环境变量。

#!/bin/bash
# 项目 B:使用 CUDA 12.6

unset CUDA_HOME
export PATH=$(echo $PATH | tr ':' '\n' | grep -v "/cuda" | tr '\n' ':' | sed 's/:$//')
export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | tr ':' '\n' | grep -v "/cuda" | tr '\n' ':' | sed 's/:$//')

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

echo "Project B -> CUDA 12.6 已激活"
nvcc --version | head -n 2

python3 train.py

3. project_cpu/run.sh(禁用 GPU)

为不使用 GPU 的项目创建一个 run.sh 脚本。 在脚本中,需要取消设置 CUDA 相关的环境变量,以确保项目运行在 CPU 模式下。

#!/bin/bash
# 项目 C:CPU 模式

unset CUDA_HOME CUDA_VISIBLE_DEVICES
export PATH=$(echo $PATH | tr ':' '\n' | grep -v "/cuda" | tr '\n' ':' | sed 's/:$//')
export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | tr ':' '\n' | grep -v "/cuda" | tr '\n' ':' | sed 's/:$//')

echo "GPU 已禁用,仅 CPU"
python3 cpu_script.py

使用方法

进入项目目录,并运行 run.sh 脚本,例如:

cd ~/projects/project_a
chmod +x run.sh
./run.sh

每次运行 run.sh 脚本时,它将:

  • 清理旧的 CUDA 环境变量。
  • 加载指定 CUDA 版本。
  • 运行您的项目。

这种方法完全不影响其他项目或系统环境。

八、验证安装

为了确保 CUDAcuDNN 已正确安装和配置,我们需要进行验证。 首先,重启您的系统,以确保所有更改生效。

# 重启系统
sudo reboot

验证 CUDA

重启后,验证 CUDA 安装。 运行 nvcc --version 命令,检查 CUDA 的版本信息是否正确显示。 此外,您还可以运行 CUDA 提供的示例程序来验证安装。

# 验证 CUDA
nvcc --version
sudo apt install -y cuda-samples-13-0
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
make && ./deviceQuery
# 输出: Result = PASS

如果输出 Result = PASS,则说明 CUDA 安装成功。 如果出现错误,请检查您的驱动程序、CUDA 版本和环境变量是否正确配置。

验证 cuDNN

验证 cuDNN 安装,通常是通过运行 cuDNN 提供的示例程序。 您可以使用以下命令安装和运行示例程序:

# 验证 cuDNN
sudo apt install -y libcudnn9-samples
cp -r /usr/share/doc/libcudnn9-samples/mnistCUDNN ~/mnistCUDNN
cd ~/mnistCUDNN
make && ./mnistCUDNN
# 输出: Test passed!

如果输出 Test passed!,则说明 cuDNN 安装成功。 如果出现错误,请检查您安装的 cuDNN 版本是否与您的 CUDA 版本兼容。

九、框架兼容(PyTorch / TensorFlow)

为了在您的项目中使用 PyTorchTensorFlow 等深度学习框架,您需要在 run.sh 脚本中安装相应的 GPU 版本。 在 run.sh 脚本中添加安装命令,确保每次运行项目时都安装了正确的框架版本。

对于 PyTorch,您可以使用以下命令安装:

# 在 run.sh 中添加(首次运行)
pip install --upgrade pip
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130   # CUDA 13.0
# 或 cu126 for CUDA 12.6

对于 TensorFlow,您可以使用以下命令安装:

pip install tensorflow[and-cuda]

请注意,安装 PyTorchTensorFlow 之前,请确保已在 run.sh 脚本中正确设置了 CUDA 环境变量。

十、卸载

如果您需要卸载 CUDA 和相关的软件包,可以使用以下命令:

sudo apt --purge remove "*cuda*" "*cudnn*" "nvidia-driver-*" -y
sudo rm -rf /usr/local/cuda* /etc/profile.d/cuda.sh
rm -rf ~/projects/*/run.sh

此命令将卸载 CUDAcuDNNNVIDIA 驱动程序,并删除相关的配置文件和项目脚本。 在卸载之前,请务必备份您的数据。

十一、总结:关键命令回顾

以下是本教程中涉及的关键命令的总结,方便您快速查阅和使用:

目标 命令
系统默认 CUDA sudo ln -sfn /usr/local/cuda-13.0 /usr/local/cuda
项目用 CUDA 13.0 run.shexport CUDA_HOME=/usr/local/cuda-13.0
项目用 CUDA 12.6 run.shexport CUDA_HOME=/usr/local/cuda-12.6
禁用 GPU unset CUDA_HOME + 清理路径

最终目录结构

最终,您的目录结构应该类似于以下结构:

/usr/local/
├── cuda -> cuda-13.0/          # 系统默认
├── cuda-13.0/
├── cuda-12.6/
~/projects/
├── project_a/run.sh            # export cuda-13.0
├── project_b/run.sh            # export cuda-12.6
└── project_cpu/run.sh          # unset CUDA

总结

本教程详细介绍了在 Linux Mint 22.2 系统中安装 CUDAcuDNN 以及配置多版本并存环境的方法。 重点介绍了项目级隔离方案,通过使用 run.sh 脚本,实现了轻量级、完全隔离的 CUDA 环境配置,避免了版本冲突。 此外,还提供了系统级配置和框架兼容性说明,方便您根据自己的需求进行配置。 遵循本教程,您可以轻松地管理不同 CUDA 版本的项目,并最大限度地提高开发效率。 使用 CUDAcuDNN,以及正确的环境配置,可以显著提高深度学习项目的性能。 记住,正确的配置是深度学习开发成功的关键。

相关链接:

You may also like