这个专栏记录我学习/科研过程中遇到的一些小问题以及解决方案,一些问题可能比较蠢请见谅。自用,仅供参考。
------------------------------------------------------------------------------------
Linux上CUDA的安装
在安装之前,首先要确定NVIDIA显卡驱动版本,该版本即可安装CUDA的最高版本(例如下图当中红框信息显示,笔者能够安装的CUDA版本为 ≤ 12.2 \leq12.2 ≤12.2)。使用nvidia-smi
查看显卡驱动信息。
此外,还需要使用uname -a
或uname -v
确认操作系统的发行版和版本编号,服务器的架构。例如下图中红色框出部分,笔者的Linux操作系统的发行版是Ubuntu,版本号是20.04;图中蓝色框出部分,笔者的服务器架构是x86(如果uname -a
返回了ARM或者aarch等字样,说明服务器是ARM架构;如果返回x86、x86_64或amd64等字样,说明服务器是x86架构)。
接着,在NVIDIA官网上找到适合的CUDA版本,并按照之前查到的服务器和操作系统信息,选择对应的架构、发行版和版本号(如下两幅图的图红框所示)。
对于安装类型(Installer Type),建议选择runfile (local)(如上图蓝色框所示) ,以便适配多版本环境。选择完成后,安装代码会显示出来(如上图粉色框所示),依次运行这两段指令。注意,安装过程需要使用sudo(第二段指令),否则有可能无法安装!
以下是这几种不同安装类型的区别:
- deb (local):直接下载包含CUDA Toolkit的完整DEB包文件,通过本地文件来安装。下载文件较大,但安装过程不需要依赖网络连接。安装完成后可以正常使用
apt
命令更新CUDA相关内容。 - deb (network):下载一个较小的DEB安装包,该包会添加NVIDIA的官方源并自动配置,随后通过网络从官方源中下载CUDA Toolkit的内容。虽然下载的初始文件较小,但在安装过程中需要持续的网络连接。安装完成后可以正常使用
apt
命令更新CUDA相关内容。 - runfile (local):下载完整的可执行.run 文件,通过运行该文件进行安装。不依赖系统包管理工具(如apt),允许用户自定义安装路径,并且提供是否安装显卡驱动的选项。适合需要安装多个CUDA版本或多个版本来回切换的用户。
.run文件下载完成后(第一段指令执行完成后),执行第二段指令。执行后等待一段时间(通常30s-1min左右),如果之前已经安装了驱动,则会显示“Existing package manager installation of the driver found.”,此时直接选择Continue取消驱动安装即可。
接下来,键入accept
再回车,以同意用户条例。
正式安装前,要将显卡驱动安装的选项取消(调整到对应选项后按下回车即可。由于笔者在之前就已经安装了驱动,因此此处不需要再次安装),然后选择安装(Install)。
如果第二段指令没有sudo权限,则可能会导致在这一步出现错误:
如果在安装CUDA时出现“A symlink already exists at /usr/local/cuda. Update to this installation?”的提示(如下图),说明在/usr/local/cuda目录中已经存在一个符号链接(symlink)。这通常是因为之前已经安装了CUDA Toolkit,或者安装了多个版本的CUDA,并在/usr/local/cuda创建了符号链接(通常指向具体版本目录,如/usr/local/cuda-11.8)。UDA的安装程序尝试在此位置创建一个新的符号链接,但检测到已有链接存在,因此提示是否要更新。此处建议更新(选择yes)。
如果希望当前安装的CUDA版本成为默认版本,可以选择更新该符号链接,此时新安装的CUDA将覆盖现有的符号链接,并指向新版本的安装目录(如 /usr/local/cuda-12.0);如果希望保留现有CUDA版本并不希望覆盖,可以选择拒绝,然后根据需求手动管理符号链接。通常推荐前者。
等待安装结束即可。安装成功见下图:
此时,/usr/local/目录下能看到刚刚安装的CUDA-12.0。
这时,安装流程仍未结束,配置环境中需要添加路径。因此,我们需要在bash的用户个性化设置文件.bashrc
(在bash每次启动时都会加载.bashrc文件中的内容,并根据内容定制当前bash的配置和环境)中添加新安装的CUDA-12.0。这一点在安装成功的总结(Summary)中有提到:
Please make sure that
- PATH includes /usr/local/cuda-12.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-12.0/lib64, or, add /usr/local/cuda-12.0/lib64 to /etc/ld.so.conf and run ldconfig as root
下一步,使用nano打开.bashrc
:
sudo nano ~/.bashrc
nano的操作方法见这篇博客。而我们要做的,是在文档末尾加上三行代码(如下图红框所示,尤其要注意蓝色的部分,需要替换为相应的CUDA版本),如果改代码存在,则将蓝色框内的CUDA版本号替换为对应版本即可:
export PATH=/usr/local/cuda-12.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda-12.0
按下ctrl+X
退出nano,退出前保存文档。接下来,更新环境:
source ~/.bashrc
sudo ldconfig
至此,所有安装步骤已经完成。键入nvcc -V
查看CUDA版本以检查是否成功安装: