如何在 Ubuntu 上检查 CUDA 版本(含 cuDNN 兼容性指南)

1. 介绍

CUDA(Compute Unified Device Architecture,统一计算设备架构)是由 NVIDIA 开发的并行计算平台,利用 GPU。它被广泛用于机器学习、深度学习、3D 渲染以及许多其他计算工作负载。

在 Ubuntu 环境中使用 CUDA 时,检查 CUDA 版本非常重要,原因如下:

驱动兼容性

CUDA 只支持特定的 NVIDIA 驱动版本,若不兼容会导致 CUDA 无法正常工作。

库兼容性

TensorFlow、PyTorch 等库需要特定版本的 CUDA 和 cuDNN,因此必须确认已安装正确的版本。

避免环境冲突

如果系统上安装了多个 CUDA 版本,需要了解当前激活的是哪个版本,并根据需要在它们之间切换。

本指南将清晰说明如何在 Ubuntu 上检查 CUDA 版本

2. 如何在 Ubuntu 上检查 CUDA 版本

在 Ubuntu 中,你可以使用以下方法检查 CUDA 版本。

方法 1:使用 nvidia-smi 检查(最简方法)

NVIDIA 驱动自带一个名为 nvidia-smi(NVIDIA System Management Interface,系统管理接口)的工具,可显示 GPU 信息。

命令

nvidia-smi

示例输出

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 530.41.03    Driver Version: 530.41.03    CUDA Version: 12.1     |
+-----------------------------------------------------------------------------+

关键点

  • CUDA Version: 12.1 行显示驱动支持的最高 CUDA 版本
  • 这可能与实际已安装的 CUDA Toolkit 版本不同,因此也请检查后面的方式。

方法 2:使用 nvcc -V 检查(面向开发者)

如果 CUDA 已正确安装,你可以检查 nvcc(CUDA 编译器)的版本。

命令

nvcc -V

示例输出

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Sun_Jul_30_19:09:40_PDT_2023
Cuda compilation tools, release 12.1, V12.1.105

关键点

  • release 12.1, V12.1.105 → 表示已安装的 CUDA Toolkit 版本
  • 这可能与 nvidia-smi 显示的版本不一致。

方法 3:检查 version.txt(手动检查)

如果 CUDA 安装在 /usr/local/cuda 下,文件 version.txt 包含版本信息。

命令

cat /usr/local/cuda/version.txt

示例输出

CUDA Version 12.1.105

关键点

  • nvcc -V 不可用时此方法很有用。
  • 必须确保 /usr/local/cuda正确建立符号链接

3. 如何检查 cuDNN 版本

cuDNN(CUDA Deep Neural Network)是与 CUDA 一起使用的深度学习库。检查 cuDNN 版本与 CUDA 同样重要。

方法 1:检查 cudnn_version.h

cuDNN 版本信息存放在头文件 cudnn_version.h 中。

命令

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

示例输出

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 1

关键点

  • 表明已安装 cuDNN 8.9.1
  • grep 命令可轻松提取版本信息。
  • cuDNN 与 CUDA 必须兼容,请确认匹配的版本。

方法 2:使用 dpkg 检查(仅限基于 Debian 的 Linux)

在基于 Debian 的系统(如 Ubuntu)上,你可以使用 dpkg 检查已安装的 cuDNN 包。

命令

dpkg -l | grep libcudnn

示例输出

ii  libcudnn8    8.9.1-1+cuda12.1    amd64    NVIDIA cuDNN Library

关键点

  • 包名中显示了 cuDNN 版本(8.9.1)
  • cuda12.1 表示兼容的 CUDA 版本

使用这些方法可确保你的 CUDA 环境配置正确。

4. 如何处理多个已安装的 CUDA 版本

在 Ubuntu 中,可以同时安装多个 CUDA 版本。但这可能会导致对当前使用的版本产生混淆。
在这种情况下,需要手动切换到正确的版本。

方法一:使用 update-alternatives 切换版本

Ubuntu 允许使用 update-alternatives 工具在不同的 CUDA 版本之间切换。

检查当前设置

update-alternatives --query cuda

切换版本

sudo update-alternatives --config cuda

示例输出

There are 3 choices for the alternative cuda (providing /usr/local/cuda).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/local/cuda-11.8  100       auto mode
  1            /usr/local/cuda-10.2  50        manual mode
  2            /usr/local/cuda-11.8  100       manual mode
  3            /usr/local/cuda-12.1  110       manual mode

Press <enter> to keep the current choice[*], or type selection number:

关键点

  • 运行 update-alternatives --config cuda 会列出所有可用的 CUDA 版本。
  • 输入对应的编号即可选择要使用的版本。
  • 支持 auto modemanual mode,手动切换时请选择 manual mode

方法二:手动配置符号链接

也可以通过手动调整符号链接来激活指定的 CUDA 版本。

检查现有符号链接

ls -l /usr/local/cuda

示例输出

lrwxrwxrwx 1 root root 20 Feb  1 12:34 /usr/local/cuda -> /usr/local/cuda-11.8

更改 CUDA 版本

sudo rm /usr/local/cuda
sudo ln -s /usr/local/cuda-12.1 /usr/local/cuda

验证

ls -l /usr/local/cuda

关键点

  • /usr/local/cuda 被用作默认的 CUDA 路径,更新该链接即可切换活动版本。
  • 使用 ln -s 可以轻松在不同版本之间切换。

通过上述方法,你可以管理多个 CUDA 安装,并确保使用正确的版本。

5. 常见问题 (FAQ)

本节汇总了检查 CUDA 版本时常见的问题,可用于故障排除。

Q1:未找到 nvcc -V

如果缺少 nvcc 命令,可能是 CUDA 路径未设置。

解决方案 1:检查 CUDA 是否已安装

ls /usr/local/cuda/

解决方案 2:将 nvcc 添加到 PATH

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

完成后,再次运行 nvcc -V 以确认其正常工作。

Q2:为什么 nvidia-smi 显示的 CUDA 版本不同?

nvidia-smi 显示的 CUDA 版本代表 NVIDIA 驱动支持的最高 CUDA 版本

检查示例:

nvidia-smi

示例输出:

CUDA Version: 12.1

但这并不表示已安装的 CUDA Toolkit 版本。请使用 nvcc -Vversion.txt 来确认实际安装的版本。

Q3:如何检查 CUDA 与 cuDNN 的兼容性?

最准确的方式是参考 NVIDIA 官方的支持矩阵。

官方网站:

NVIDIA cuDNN Support Matrix

同时,你也应通过检查已安装的版本来确认兼容性:

检查 CUDA 版本

nvcc -V

检查 cuDNN 版本

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

合理管理这些版本即可避免 CUDA 与 cuDNN 之间的兼容性问题。

6. 总结

本文阐述了在 Ubuntu 环境下如何检查 CUDA 版本。
下面回顾一下关键要点。

如何检查 CUDA 版本

MethodCommandDescription
nvidia-sminvidia-smiShows the CUDA version supported by the driver
nvcc -Vnvcc -VShows the installed CUDA Toolkit version
version.txtcat /usr/local/cuda/version.txtManually check the installed CUDA version

如何检查 cuDNN

MethodCommandDescription
cudnn_version.hcat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2Check version from the header file
dpkgdpkg -l | grep libcudnnCheck installed cuDNN packages

如何切换 CUDA 版本

MethodCommandDescription
update-alternativessudo update-alternatives --config cudaSwitch between multiple CUDA versions
Symbolic Linksudo ln -s /usr/local/cuda-XX.X /usr/local/cudaManually switch CUDA versions

关键要点

  • 在开发前始终验证您的 CUDA 版本
  • 检查 CUDA 与 cuDNN 之间的兼容性
  • 了解在存在多个 CUDA 安装时如何切换版本

通过正确管理您的环境,您可以最大化 CUDA 的性能和稳定性。
我们希望本指南能帮助您在 Ubuntu 上有效验证 CUDA 版本。

年収訴求