Ubuntu22.04深度学习环境安装【cuda+cudnn】

[复制链接]
发表于 2026-10-5 11:24:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

复现深度学习论文,最折腾人的往往不是模型本身,而是环境。论文里一行 requirements.txt 写着 CUDA 11.7、cuDNN 8.5.0、PyTorch 2.0.1,结果装上去不是版本对不上就是 gcc 版本太新跑不过安装器。这篇按实际顺序把 CUDA 和 cuDNN 装完,并把每个报错的根因讲明白。

动手前先把版本号定死

深度学习环境最容易翻车的地方就是「凭感觉装最新版」。正确做法是先读论文和代码里的版本约束,照着装:

  • CUDA 版本(从 requirements 或 README 里找)
  • cuDNN 版本(要和 CUDA 主版本匹配)
  • Python 版本
  • PyTorch / TensorFlow 版本(很多库对 CUDA 版本有硬要求)

常见对应:CUDA 11.7 配 cuDNN 8.5.x;CUDA 12.x 配 cuDNN 8.9+。装错了不改配置也能跑,但 ImportError: libcudnn.so.8: cannot open shared object file 这种错会一路跟到底。

前置条件

  • NVIDIA 显卡驱动已经装好,nvidia-smi 能正常输出。
  • Ubuntu 22.04(21.04 及以后默认 GCC 11,对 CUDA 11.x 友好)。
  • 至少 10GB 磁盘空间(CUDA toolkit 本体就 3–4GB,加 cuDNN 和测试数据)。

第一部分:安装 CUDA 11.7

1. 下载.run 安装包

wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run

2. 运行安装器

sudo sh cuda_11.7.1_515.65.01_linux.run

3. 报错:gcc 版本过高

CUDA 11.7 的本地安装器在 GCC 12 下会因为符号/编译选项不兼容直接失败。日志日志里能看到具体原因:

gedit /var/log/cuda-installer.log

确认是 gcc 的问题后,先用 alternatives 把版本切回 11:

sudo update-alternatives --config gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 102

update-alternatives 的机制说明后面单独讲。

4. 重新运行安装器

sudo sh cuda_11.7.1_515.65.01_linux.run

交互式流程:

  • 选 Accept。
  • 到「安装显卡驱动」这步用空格取消勾选——驱动已经装好了,再装一次容易把 nvidia-smi 弄崩。
  • 其他选项保持默认,选 Install。

5. 配置环境变量

装完直接跑 nvcc --version 会报「command not found」,因为 /usr/local/cuda-11.7/bin 还没进 PATH:

gedit ~/.bashrc

末尾追加(路径里的版本号要和你装的一致):

export PATH=/usr/local/cuda-11.7/bin{PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64{LD_LIBRARY_PATH}
source ~/.bashrc
nvcc --version

能输出 Cuda compilation tools, release 11.7... 就说明通了。

第二部分:安装 cuDNN 8.5.0

cuDNN 不在 apt 源里,要去 NVIDIA 开发者网站下载(需要注册账号并同意协议)。选和你 CUDA 对应的版本包,比如 cudnn-linux-x86_64-8.5.0.96_cuda11-archive.tar.xz。

tar -xvf cudnn-linux-x86_64-8.5.0.96_cuda11-archive.tar.xz
cd cudnn-linux-x86_64-8.5.0.96_cuda11-archive/

把头文件和库拷进 CUDA 目录:

sudo cp include/cudnn.h /usr/local/cuda-11.7/include
sudo cp lib/libcudnn* /usr/local/cuda-11.7/lib64
sudo chmod a+r /usr/local/cuda-11.7/include/cudnn.h /usr/local/cuda-11.7/lib64/libcudnn*

chmod a+r 那步别省,否则普通用户跑 Python 时会因读不到库文件而崩溃。8.x 版本解压出来 cudnn.h 在 include/ 下,早期版本是全 cudnn*.h,按实际目录找。

验证:

ls /usr/local/cuda-11.7/include/cudnn.h
ls /usr/local/cuda-11.7/lib64/ | grep libcudnn

关于 update-alternatives 的优先级

CUDA 装不上的时候你大概率会去切 gcc 版本,这里把 update-alternatives 的规则讲透:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 102

最后那个 102 是优先级(priority)。它的作用是:同一组备选里,优先级数值最高的成为默认项。

  • 优先级可以是任意整数,绝对大小没意义,只看相对大小。
  • 想让 gcc-12 优先,就写比 gcc-11 更大的数:--install /usr/bin/gcc gcc /usr/bin/gcc-12 200(200 > 102)。
  • 想切回手动选:sudo update-alternatives --config gcc,会出现一个数字菜单,输入编号回车。
  • 查看当前有哪些备选:update-alternatives --list gcc 和 update-alternatives --display gcc。

同样的方法也能管 g++,记得 --slave 把两个绑一起:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 102 \
  --slave /usr/bin/g++ g++ /usr/bin/g++-11

换源:别硬刚官方 CUDA 站点

NVIDIA 官方 developer.download.nvidia.com 在国内经常只有几十 KB/s。两条路:

  • 换华为/中科大等镜像站的 CUDA 仓库,用 apt 装(cuda-toolkit-11-7),比 .run 省心,依赖自动解。
  • 先下不下来就先用 run 包,但下载慢的部分可以单独挂代理,别想着绕过安装器。

装完还要做什么

pip install torch==2.0.1+cu117 -f https://download.pytorch.org/whl/torch_stable.html
python -c "import torch; print(torch.cuda.is_available(), torch.__version__)"

True 打出来才算整套环境闭环。另外 pyenv 装的 Python 在 home 目录下,/usr/local 的 CUDA 库靠 LD_LIBRARY_PATH 找得到,一般没问题;但如果 Python 装在容器里,记得把 CUDA 路径也挂进去。

踩坑清单

  • .run 安装器被 GCC 12 卡死:不是 CUDA 的问题,切 gcc-11 就能过。
  • 重复装驱动:.run 安装这一步不取消勾选,会覆盖掉 apt 装的驱动,nvidia-smi 直接挂。
  • 忘了写 source ~/.bashrc:新开终端 nvcc 又找不到了,非 root 用户尤其明显。
  • cuDNN 拷了却 libcudnn.so.8: cannot open shared object file:库拷进去但动态链接器找不到,加进 /etc/ld.so.conf.d/cuda.conf 后 sudo ldconfig。
  • PyTorch 装成 CPU 版:pip 默认源给的 wheel 没带 CUDA,要用带 +cu117 的 index。
  • 版本不匹配:CUDA 11.7 硬配 cuDNN 9.x,cudnn.h 里的 API 对不上,编译扩展时报一堆 unknown type。

环境这东西,版本对齐比技巧重要。把论文要求的四个版本号记下来,按「驱动 → CUDA → cuDNN → 深度学习框架」的顺序装,中间每步都验证一次,基本一次过。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表