23 / 04 / 19
author: 赤烏冬
improved by: 晚ночь
date: 2023-04-19
安装了错误的CUDA版本导致项目无法正确部署?重装对应版本的CUDA才是最好的解决方法——
笔记适用于源文件安装的CUDA Toolkit。
remove
指令就能卸载,别在这里发电。过高的CUDA版本往往和部分项目存在兼容性问题,CUDA本身也并不提供类似于Python虚拟环境的机制。
虽然实现CUDA虚拟化才是最可靠的解决方案,但项目急用的时候还是免不了临时更换CUDA版本以便光速逃避错误。
cuda-uninstaller
在试图按着官方文档给出的“一键卸载”方案操作时,发现设备的的/usr/local/cuda-12.1/bin/
目录下根本没有cuda-uninstaller
?
这很正常,因为只有使用官方给出的二进制安装包安装、且只有特定版本的CUDA Toolkit中才会包含这个一键卸载脚本——这意味着手动编译源文件安装的CUDA-Toolkit只能通过手动卸载与重装。
由于CUDA依赖于NVIDIA驱动程序,所以在重装CUDA Tookit时也要重装对应版本的NVIDIA驱动程序。
**这点非常重要!**如果没有正确重装CUDA对应的NVIDIA驱动程序,可能会导致兼容问题或驱动程序冲突,无论哪种都将消耗更多处理时间。
首先,使用下面的指令删除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相关的环境变量设置(例如 PATH
和 LD_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
即可。
在选择安装内容界面, 取消选择Driver
和Samples
, 按照指示完成安装。
安装完成后,终端将会输出如下内容:
=========== = 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安装情况 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