23 / 04 / 19

Linux Mint21(Ubuntu 22.04)下NVIDIA CUDA重装问题的简明指南

author: 赤烏冬

improved by: 晚ночь

date: 2023-04-19

安装了错误的CUDA版本导致项目无法正确部署?重装对应版本的CUDA才是最好的解决方法——

笔记适用于源文件安装的CUDA Toolkit。

  • 包管理器安装的CUDA Toolkit直接用对应包管理器的remove指令就能卸载,别在这里发电。

问题描述

过高的CUDA版本往往和部分项目存在兼容性问题,CUDA本身也并不提供类似于Python虚拟环境的机制。

虽然实现CUDA虚拟化才是最可靠的解决方案,但项目急用的时候还是免不了临时更换CUDA版本以便光速逃避错误。

没有cuda-uninstaller

在试图按着官方文档给出的“一键卸载”方案操作时,发现设备的的/usr/local/cuda-12.1/bin/目录下根本没有cuda-uninstaller

这很正常,因为只有使用官方给出的二进制安装包安装、且只有特定版本的CUDA Toolkit中才会包含这个一键卸载脚本——这意味着手动编译源文件安装的CUDA-Toolkit只能通过手动卸载与重装。

手动重装CUDA Tookit

由于CUDA依赖于NVIDIA驱动程序,所以在重装CUDA Tookit时也要重装对应版本的NVIDIA驱动程序。

**这点非常重要!**如果没有正确重装CUDA对应的NVIDIA驱动程序,可能会导致兼容问题或驱动程序冲突,无论哪种都将消耗更多处理时间。

卸载CUDA

首先,使用下面的指令删除CUDA Toolkit所在目录(通常为/usr/local/[CUDA版本号],视编译参数自行决定),例如/usr/local/cuda-12.1

sudo rm -rf /usr/local/cuda-12.1

保证CUDA所在目录被完全删除,然后执行下面的命令删除CUDA相关的动态链接库搜索路径

  • 例如cuda-x86_64.conf就是一个默认提供的用于指定CUDA相关共享库搜索路径的配置文件。
# 删除动态链接库搜索路径 sudo rm -rf /etc/ld.so.conf.d/[CUDA动态链接库搜索路径文件] # 重载库文件 sudo ldconfig

随后,编辑 ~/.bashrc 文件,删除与CUDA相关的环境变量设置(例如 PATHLD_LIBRARY_PATH)。

# 重新加载bash配置文件 source ~/.bashrc

卸载并重装显卡驱动

CUDA11.0以上具有兼容性,但显卡驱动的版本依然不能太低。

具体的CUDA Toolkit版本与NVIDIA版本对应关系可见下表:

Linux Mint 21一般自带驱动管理器,在选择另一个低版本的驱动(nvidia-driver-515)安装后,之前安装的驱动(nvidia-driver-525)就会被自动卸载。

重新安装CUDA Toolkit

先决条件

在执行这步之前,优先使用下面的命令确保原先环境中的CUDA Toolkit被卸载,且NVIDIA驱动程序已经被重装为

对应版本。

# 检查NVIDIA驱动程序 nvidia-smi # 检查CUDA Toolkit nvcc -V #指令应该返回“Command 'nvcc' not found”或“bash: nvcc:未找到命令”。

另外,确保设备满足编译条件:

  • 已安装NVIDIA显卡。

  • 已安装gcc。(可通过gcc --version来验证安装)

  • 已禁用nouveau驱动程序。(nouveau会和NVIDIA驱动程序发生冲突)

# 执行下面的命令,如果命令无输出,则代表nouveau已经禁用,可以继续下一步 lsmod | grep nouveau

重新安装流程

确认满足先决条件后,下载对应版本的CUDA Toolkit 11.7 runfile文件并执行:

# 执行runfile sudo sh cuda_11.7.0_515.43.04_linux.run

如果出现提示:

Existing package manager installation of the driver found. It is strongly recommended that you remove this before continuing. Abort Continue

这是因为CUDA安装程序检测到了系统中已经存在的NVIDIA驱动程序(也就是之前重装的NVIDIA驱动程序),对整体安装流程没有影响,选择Continue即可。

在选择安装内容界面, 取消选择DriverSamples, 按照指示完成安装。

安装完成后,终端将会输出如下内容:

=========== = Summary = =========== Driver: Not Selected Toolkit: Installed in /usr/local/cuda-11.7/ Please make sure that - PATH includes /usr/local/cuda-11.7/bin - LD_LIBRARY_PATH includes /usr/local/cuda-11.7/lib64, or, add /usr/local/cuda-11.7/lib64 to /etc/ld.so.conf and run ldconfig as root To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.7/bin ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 515.00 is required for CUDA 11.7 functionality to work. To install the driver using this installer, run the following command, replacing with the name of this run file: sudo .run --silent --driver Logfile is /var/log/cuda-installer.log

这代表CUDA Toolkit已经被安装在/usr/local/cuda-11.7/下,但依然有部分需要手动检查的内容,包括:

  • 检查~/.bashrc文件,确保:

    • PATH包含/usr/local/cuda-11.7/bin

    • LD_LIBRARY_PATH包含/usr/local/cuda-11.7/lib64

      • 或者将/usr/local/cuda-11.7/lib64添加到/etc/ld.so.conf中,然后执行ldconfig重新加载库。
  • 这是一次“不完全”的安装,因为CUDA 11.7功能至少需要515.00版本的驱动程序才能工作。

    • 如果(注意是如果)出现了这个提示,可以选择执行.run --silent --driver来升级驱动程序版本,这条命令将会在后台静默安装对应的驱动程序。

验证CUDA Toolkit是否正确安装

现在验证一下CUDA Toolkit是否安装成功, 执行:

# 验证CUDA Toolkit安装情况 nvcc -V # 如果出现如下输出,则代表安装成功 nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Tue_May__3_18:49:52_PDT_2022 Cuda compilation tools, release 11.7, V11.7.64 Build cuda_11.7.r11.7/compiler.31294372_0

Powered by Gridea