Ubuntu 20.04 安装Cuda 12.2版本踩坑纪录
查看Ubuntu版本
利用下面的命令
运行结果
- (base) xxx@ubuntu-test:~$ lsb_release -a
- No LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 20.04.5 LTSRelease: 20.04Codename: focal
复制代码- (base) xxx@ubuntu-test:~$ uname -a
- Linux ubuntu-test 5.5.10-050510-generic #202003180732 SMP Wed Mar 18 07:35:23 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
复制代码 这个命令解析:
这条命令 uname -a 输出的信息包含了当前系统的具体信息。我们可以将其分解如下:
- 操纵系统名称:
- 主机名:
- 内核版本:
- 5.5.10-050510-generic:表示正在利用的 Linux 内核版本是 5.5.10,并且利用的是通用(generic)版本。
- 内核构建信息:
- #202003180732:这是内核的构建号,通常包含构建日期和时间。这里表现的是构建的时间戳(2020年3月18日 07:32:23 UTC)。
- 内核编译类型:
- SMP:表示内核支持对称多处理(Symmetric Multi-Processing),即系统可以或许利用多个处理器(或核心)。
- 内核编译日期和时间:
- Wed Mar 18 07:35:23 UTC 2020:表示内核编译的日期和时间。
- 系统架构:
- x86_64:表示系统架构是 64 位的 x86 架构(即常见的 64 位 Intel 或 AMD 处理器)。
- 操纵系统架构:
- 操纵系统类型:
- GNU/Linux:表示操纵系统是基于 GNU 工具和 Linux 内核构建的 Linux 系统。
综上所述,命令 uname -a 提供了操纵系统名称、内核版本、编译信息、主机名、系统架构等关键系统信息。
CUDA Toolkit 12.2 Downloads过程纪录。
不乐成的方式:利用deb安装
不要利用deb安装,而是利用runfile安装
利用deb (local)安装,遇到很多坑,纪录如下,终极也没有安装乐成。以是推荐不要利用deb安装。假如不想看debug过程,可以直接跳到下面乐成安装的部分:乐成的安装方式:利用runfile安装
- https://developer.nvidia.com/cuda-12-2-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local
复制代码 全部命令如下
- wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
- sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
- wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
- sudo dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
- sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
- sudo apt-get update
- sudo apt-get -y install cuda
复制代码 下面是每一步的具体解析:
第一步:
- wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
复制代码 解析:
这条命令 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
利用了 wget 工具来从指定的 URL 下载一个文件。让我们解析这个命令的各个部分:
- wget:
- 这是一个命令行工具,用于从网络上下载文件。它支持通过 HTTP、HTTPS 和 FTP 协议下载文件。
- https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin:
- 这是一个 URL,指定了文件的位置。我们可以将其拆解成几个部分:
- https://:表示通过 HTTPS 协议举行安全连接。
- developer.download.nvidia.com:这是文件所在的主机名,属于 NVIDIA 的开发者下载站点。
- compute/cuda/repos/ubuntu2004/x86_64/:这部分表示该文件位于 NVIDIA CUDA 的 Ubuntu 20.04 版本的堆栈下,并且是针对 64 位系统的。
- cuda-ubuntu2004.pin:这是文件名,通常 .pin 文件用于指定软件包的优先级或版本信息。在这种情况下,它大概是用于指定 CUDA 在 Ubuntu 20.04 系统中的软件包版本或优先级。
总结:这条命令的作用是利用 wget 从 NVIDIA 开发者站点下载一个名为 cuda-ubuntu2004.pin 的文件,该文件位于 CUDA 的 Ubuntu 20.04 版本的存储库目录下。
第二步:
- sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
复制代码 这条命令 sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
的作用是将文件移动到指定的目录,并且利用了 sudo 提拔权限。我们可以具体解析如下:
- sudo:
- sudo 是一个用于以超级用户(root)身份运行命令的工具。在这个命令中,sudo 让用户可以或许有充足的权限来举行文件操纵,由于目标目录 /etc/apt/preferences.d/ 通常需要超级用户权限才能写入。
- mv:
- mv 是一个用于移动文件或重命名文件的命令。它将 cuda-ubuntu2004.pin 文件从当前目录移动到指定的目录 /etc/apt/preferences.d/ 下,并且可以同时举行重命名。
- cuda-ubuntu2004.pin:
- 这是源文件的名称。它是之前下载的 .pin 文件,包含有关 CUDA 软件包的优先级信息。
- /etc/apt/preferences.d/cuda-repository-pin-600:
- 这是目标路径,表示将 cuda-ubuntu2004.pin 文件移动到系统的 APT 配置目录中的 preferences.d 子目录下,并将文件重命名为 cuda-repository-pin-600。
- /etc/apt/preferences.d/:这是 APT 配置文件的目录,用于存放与包管理器(APT)相干的首选项文件。preferences.d 目录下的文件用于指定软件包的优先级、版本等细节。
- cuda-repository-pin-600:这是目标文件的名称,通常 .pin 文件用于指定软件包源的优先级。文件名中的 600 大概是设置此文件优先级的标识符,表示为高优先级(通常 100 表示默认优先级,而 600 表示更高的优先级)。
总结: 这条命令的作用是利用超级用户权限将 cuda-ubuntu2004.pin 文件移动到 /etc/apt/preferences.d/ 目录下,并将其重命名为 cuda-repository-pin-600。这通常是为了配置 CUDA 软件包的优先级,确保在 APT 更新时优先利用指定版本的 CUDA 软件包。
第三步:
- wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
复制代码 这条命令 wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
利用了 wget 工具来下载一个 .deb
包文件。下面是对命令的逐部分解析:
- wget:
- wget 是一个命令行工具,用于从互联网上下载文件。它支持多种协议(如 HTTP、HTTPS 和 FTP)举行文件传输。
- https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
:
- 这是下载文件的 URL,包含了文件的完备路径。将其分解为以下几个部分:
- https://:表示通过 HTTPS 协议举行安全的文件传输。
- developer.download.nvidia.com:这是 NVIDIA 开发者网站的主机名,提供 CUDA 等软件的下载。
- compute/cuda/12.2.0/:这是文件所在的目录,表示下载的 CUDA 版本是 12.2.0。
- local_installers/:表示这是一个本地安装程序包,用于在 Ubuntu 2004 系统上安装 CUDA。
- cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
:这是下载的文件名,表示这是一个用于 Ubuntu 20.04 (amd64 架构) 的 CUDA 安装包。
- cuda-repo-ubuntu2004-12-2-local:表明这是 Ubuntu 20.04 系统的 CUDA 本地安装包。
- 12.2.0-535.54.03-1:表示 CUDA 版本是 12.2.0,且版本的构建号是 535.54.03-1。
- amd64:表示这是适用于 64 位架构的安装包。
- .deb
:表示这是一个 Debian 包格式文件,通常用于基于 Debian 的系统(如 Ubuntu)安装软件。
总结: 这条命令利用 wget 从 NVIDIA 开发者网站下载适用于 Ubuntu 20.04 系统的 CUDA 12.2.0 本地安装程序包 cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
。这个安装包将用于安装指定版本的 CUDA 开发工具包。
第四步:
- sudo dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
复制代码 这条命令 sudo dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
用于在 Ubuntu 系统中安装 CUDA 的本地 .deb
安装包。下面是对命令的具体解析:
- sudo 是一个命令行工具,用于以超级用户(root)权限运行命令。由于安装软件包需要系统管理员权限,sudo 在这里用于提拔权限。
- dpkg 是 Debian 系统及其衍生版本(如 Ubuntu)中用于安装、卸载和管理 .deb
包的工具。它是低层次的包管理工具,可以直接安装、配置和移除 .deb
包文件。
- -i 选项表示安装模式(install),即告诉 dpkg 执行安装操纵。背面紧跟着的是要安装的 .deb
包文件。
- cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
:
- 这是要安装的
包文件的完备路径和文件名,具体内容如下:
- cuda-repo-ubuntu2004-12-2-local:表示这个包是为 Ubuntu 20.04 系统提供的 CUDA 本地安装包。
- 12.2.0-535.54.03-1:表示 CUDA 版本号为 12.2.0,具体版本号为 535.54.03-1。
- amd64:表示这是为 64 位(AMD64)架构系统构建的包。
- .deb
:这是 Debian 包格式的文件扩展名。
命令作用:
sudo dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
的作用是:
- 以管理员权限安装 cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
文件。
- 这个 .deb
包将 CUDA 12.2.0 的本地安装程序和存储库配置添加到系统中,使得系统可以或许通过 APT 包管理工具举行 CUDA 安装和更新。
总结: 这条命令用于安装一个 CUDA 12.2.0 版本的本地安装包,通常用于为 Ubuntu 20.04 系统配置 CUDA 存储库,以便后续可以利用 APT 安装和管理 CUDA 相干的工具和库。
假如表现如下信息
- root@ubuntu-test:~# sudo dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
- Selecting previously unselected package cuda-repo-ubuntu2004-12-2-local.(Reading database ... 168624 files and directories currently installed.)Preparing to unpack cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
- ...Unpacking cuda-repo-ubuntu2004-12-2-local (12.2.0-535.54.03-1) ...Setting up cuda-repo-ubuntu2004-12-2-local (12.2.0-535.54.03-1) ...The public cuda-repo-ubuntu2004-12-2-local GPG key does not appear to be installed.To install the key, run this command:sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-73067DC7-keyring.gpg /usr/share/keyrings/
复制代码 就要执行
- sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-73067DC7-keyring.gpg /usr/share/keyrings/
复制代码 这个命令,之后再往下执行。
第五步:
- sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
复制代码 这条命令 sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
用于将 CUDA 存储库的 GPG 密钥文件复制到系统的密钥存储目录。下面是对命令各部分的具体解析:
- sudo 是用来以超级用户(root)权限执行命令的工具。由于需要在系统目录(如 /usr/share/keyrings/)中写入文件,因此需要管理员权限。
- cp 是 Linux 系统中的一个命令,用于复制文件或目录。此处表示将源文件复制到目标位置。
- /var/cuda-repo-ubuntu2004-12-2-local/cuda-\*-keyring.gpg:
- 这是源文件的路径和名称,具体如下:
- /var/cuda-repo-ubuntu2004-12-2-local/:表示 CUDA 存储库的安装路径。在 CUDA 安装过程中,这个目录通常会包含一些 GPG 密钥文件,用于验证安装包的署名。
- cuda-\*-keyring.gpg:这是一个通配符匹配的文件名,表示匹配该目录下全部以 cuda- 开头、以 -keyring.gpg 结尾的文件。* 是通配符,表示可以匹配任何中心部分的字符。这通常是 CUDA 存储库的 GPG 密钥文件。
- 这是目标目录,表示将 GPG 密钥文件复制到该目录下。/usr/share/keyrings/ 是一个系统目录,存储系统和软件包管理工具所利用的 GPG 密钥,以确保下载的包没有被篡改。
命令作用:
这条命令的作用是:
- 以管理员权限将 CUDA 存储库的 GPG 密钥文件(通常用于验证下载的 CUDA 软件包的完备性和泉源)复制到 /usr/share/keyrings/ 目录。
- 这对于系统 APT 包管理工具而言非常紧张,由于它答应 APT 利用该密钥验证从 CUDA 存储库下载的软件包,以确保其安全性和可信性。
总结: sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
命令将 CUDA 存储库的 GPG 密钥文件复制到 /usr/share/keyrings/ 目录,确保 APT 在安装 CUDA 软件包时可以或许验证软件包的署名,从而保障软件包的完备性和泉源安全。
第六步:
- sudo apt-get update
- sudo apt-get -y install cuda
复制代码 遇到如下题目:
- root@ubuntu-test:~# sudo apt-get -y install cuda
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- Some packages could not be installed. This may mean that you have
- requested an impossible situation or if you are using the unstable
- distribution that some required packages have not yet been created
- or been moved out of Incoming.
- The following information may help to resolve the situation:
- The following packages have unmet dependencies:
- cuda : Depends: cuda-12-6 (>= 12.6.3) but it is not going to be installed
- Depends: nvidia-open (>= 560.35.05) but it is not going to be installed
- E: Unable to correct problems, you have held broken packages.
复制代码 按照下面的方法:
- sudo apt-get purge cuda
- sudo apt-get autoremove
- sudo apt-get clean
- sudo apt-get update
- sudo apt-get install cuda
- 或者:
- sudo apt-get install cuda-12-2
复制代码 照旧会遇到题目:
- The following packages have unmet dependencies:
- cuda : Depends: cuda-12-6 (>= 12.6.3) but it is not going to be installed
- Depends: nvidia-open (>= 560.35.05) but it is not going to be installed
- E: Unable to correct problems, you have held broken packages.
- root@ubuntu-test:~# sudo apt-get install cuda-12-2
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- Some packages could not be installed. This may mean that you have
- requested an impossible situation or if you are using the unstable
- distribution that some required packages have not yet been created
- or been moved out of Incoming.
- The following information may help to resolve the situation:
- The following packages have unmet dependencies:
- cuda-12-2 : Depends: cuda-runtime-12-2 (>= 12.2.2) but it is not going to be installed
- Depends: cuda-demo-suite-12-2 (>= 12.2.140) but it is not going to be installed
- E: Unable to correct problems, you have held broken packages.
复制代码 继续debug
- root@ubuntu-test:~# sudo apt-get install cuda-runtime-12-2 cuda-demo-suite-12-2
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- Some packages could not be installed. This may mean that you have
- requested an impossible situation or if you are using the unstable
- distribution that some required packages have not yet been created
- or been moved out of Incoming.
- The following information may help to resolve the situation:
- The following packages have unmet dependencies:
- cuda-runtime-12-2 : Depends: cuda-drivers (>= 535.104.05) but it is not going to be installed
- E: Unable to correct problems, you have held broken packages.
复制代码 但是我的cuda driver版本是Driver Version: 545.23.08已经满意上述要求,于是继续debug
卸载现有的 NVIDIA 驱动:
假如当前的驱动版本不符合 CUDA 12.2 的要求,可以先卸载现有的 NVIDIA 驱动,然后再安装适合的驱动版本。执行以下命令
- sudo apt-get purge nvidia-*
- sudo apt-get autoremove
- sudo apt-get clean
复制代码 安装符合要求的驱动版本:
根据 CUDA 12.2 的要求,你可以安装恰当版本的驱动,如 nvidia-driver-535。尝试以下命令来安装它:
- sudo apt-get install nvidia-driver-535
复制代码 重启 sudo reboot之后查看版本,已经是自己需要的版本了
- NVIDIA-SMI 535.216.03 Driver Version: 535.216.03 CUDA Version: 12.2 |
复制代码 但是运行如下命令,依然发现:软连接链接到的是12.6
- ls -l /etc/alternatives/ | grep cuda
复制代码 输出:
- lrwxrwxrwx 1 root root 20 Dec 24 14:00 cuda -> /usr/local/cuda-12.6
- lrwxrwxrwx 1 root root 20 Dec 24 14:00 cuda-12 -> /usr/local/cuda-12.6
- lrwxrwxrwx 1 root root 36 Dec 24 14:00 cufile.json -> /usr/local/cuda-12.6/gds/cufile.json
复制代码 这条命令 ls -l /etc/alternatives/ | grep cuda
列出了 /etc/alternatives/ 目录下与 cuda 相干的符号链接(symlink)。让我们逐一解析这些输出:
- lrwxrwxrwx 1 root root 20 Dec 24 14:00 cuda -> /usr/local/cuda-12.6
- lrwxrwxrwx:表示该文件是一个符号链接(l),并且具有读、写、执行权限(rwxrwxrwx)对全部用户(全部者、群组和其他用户)开放。
- 1 root root:表示该文件的全部者是 root,所属组也是 root。
- 20:这是符号链接的长度,即链接目标的字符数。
- Dec 24 14:00:符号链接的最后修改时间。
- cuda -> /usr/local/cuda-12.6:这是一个符号链接,名为 cuda,指向 /usr/local/cuda-12.6 目录。这表示 cuda 被设置为指向 CUDA 12.6 的安装目录 /usr/local/cuda-12.6。
- lrwxrwxrwx 1 root root 20 Dec 24 14:00 cuda-12 -> /usr/local/cuda-12.6
- 这个条目雷同于第一个,但符号链接的名称是 cuda-12,指向同样的目标 /usr/local/cuda-12.6。
- 这表明 cuda-12 也指向 CUDA 12.6 的安装目录。
- lrwxrwxrwx 1 root root 36 Dec 24 14:00 cufile.json -> /usr/local/cuda-12.6/gds/cufile.json
- cufile.json -> /usr/local/cuda-12.6/gds/cufile.json:这是一个符号链接,名为 cufile.json,指向 /usr/local/cuda-12.6/gds/cufile.json。
- 这个链接表明,cufile.json 文件位于 /usr/local/cuda-12.6/gds/ 目录下,是与 CUDA 12.6 版本的 GDS(GPU Direct Storage)相干的配置文件。
总结:
- 这些符号链接表示 /etc/alternatives/ 目录下的 cuda、cuda-12 和 cufile.json 都指向 /usr/local/cuda-12.6 目录中的相干内容。
- 具体来说:
- cuda 和 cuda-12 都指向 CUDA 12.6 的安装目录 /usr/local/cuda-12.6。
- cufile.json 指向 CUDA 12.6 中 gds/cufile.json 配置文件。
/etc/alternatives/ 目录是用于管理多个版本的程序和工具的一个地方,通常用来创建符号链接,以便系统可以在差别版本之间切换。
怎么办呢?
查抄当前的 CUDA 版本目录: 确保 /usr/local/cuda-12.2 目录确实存在,并包含 CUDA 12.2 的全部文件。
- root@ubuntu-test:~# ls /usr/local/
- bin clash clash-dashboard cuda cuda-11.6 cuda-11.8 cuda-12 cuda-12.6 dash dash.tar.gz etc games include kernelobjects lib man sbin share src
复制代码 发现没有12.2,需要重新安装。于是去网上找帖子。看到大家险些没有用deb安装,而都是用run安装,以是准备重新安装。
乐成的安装方式:利用runfile安装
Link:https://developer.nvidia.com/cuda-12-2-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=runfile_local
只有两句命令:
- wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
- sudo sh cuda_12.2.0_535.54.03_linux.run
复制代码 下面是执行过程
- root@ubuntu-test:~# wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
- root@ubuntu-test:~# sudo sh cuda_12.2.0_535.54.03_linux.run
- Installation failed. See log at /var/log/cuda-installer.log for details.
- root@ubuntu-test:~# cat /var/log/cuda-installer.log
- [INFO]: Driver installation detected by command: apt list --installed | grep -e nvidia-driver-[0-9][0-9][0-9] -e nvidia-[0-9][0-9][0-9]
- [INFO]: Cleaning up window
- [INFO]: Complete
- [INFO]: Checking compiler version...
- [INFO]: gcc location: /usr/bin/gcc
- [INFO]: gcc version: gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
- [INFO]: Initializing menu
- [INFO]: nvidia-fs.setKOVersion(2.16.1)
- [INFO]: Setup complete
- [INFO]: Installing: Driver
- [INFO]: Installing: 535.54.03
- [INFO]: Executing NVIDIA-Linux-x86_64-535.54.03.run --ui=none --no-questions --accept-license --disable-nouveau --no-cc-version-check --install-libglvnd 2>&1
- [INFO]: Finished with code: 256
- [ERROR]: Install of driver component failed. Consult the driver log at /var/log/nvidia-installer.log for more details.
- [ERROR]: Install of 535.54.03 failed, quitting
复制代码
输入accept,同意协议

这里的X号表示选中,第一次,我是选中这里的Driver,然后表现安装失败。以是第二次不选择安装这个driver
于是我现在取消第一个Driver的选中,按空格键表示选中照旧不选中。
然后安装
安装完成的信息
- ===========
- = Summary =
- ===========
- Driver: Not Selected
- Toolkit: Installed in /usr/local/cuda-12.2/
- Please make sure that
- - PATH includes /usr/local/cuda-12.2/bin
- - LD_LIBRARY_PATH includes /usr/local/cuda-12.2/lib64, or, add /usr/local/cuda-12.2/lib64 to /etc/ld.so.conf and run ldconfig as root
- To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.2/bin
- ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 535.00 is required for CUDA 12.2 functionality to work.
- To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
- sudo <CudaInstaller>.run --silent --driver
- Logfile is /var/log/cuda-installer.log
复制代码 配置情况变量
根据你给出的输出,CUDA 12.2 已经安装在 /usr/local/cuda-12.2/ 目录中,但是安装过程没有包括 NVIDIA 驱动。因此,CUDA 工具包可以正常利用,但需要驱动版本至少为 535.00。你需要将路径添加到 ~/.bashrc 中,以确保准确设置情况变量,使得系统可以或许识别 CUDA 工具包。
操纵步调:
- 打开 .bashrc 文件: 在终端中输入以下命令打开 ~/.bashrc 文件:
大概你可以利用其他编辑器,如 nano,假如你不熟悉 vim:
- 修改 .bashrc 文件: 在文件的最后添加以下内容来更新 PATH 和 LD_LIBRARY_PATH 情况变量:
- # Add CUDA 12.2 to PATH and LD_LIBRARY_PATH
- export PATH=/usr/local/cuda-12.2/bin:$PATH
- export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
复制代码 这会确保每次打开终端时,系统可以或许准确找到 CUDA 相干的可执行文件和库。
- 保存并退出: 假如你利用的是 vim,按 Esc 键,然后输入 :wq 来保存并退出。假如你利用的是 nano,按 Ctrl + O 保存文件,然后按 Ctrl + X 退出。
- 使修改生效: 修改 .bashrc 后,需要使改动生效。你可以执行以下命令来重新加载 .bashrc:
- 验证情况变量是否设置准确: 你可以通过运行以下命令来验证 PATH 和 LD_LIBRARY_PATH 是否已准确设置:
- echo $PATH
- echo $LD_LIBRARY_PATH
复制代码 你应该能看到 /usr/local/cuda-12.2/bin 出现在 PATH 中,/usr/local/cuda-12.2/lib64 出现在 LD_LIBRARY_PATH 中。
继续安装或更新驱动:(由于我之前的驱动已经安装过,以是没有再装,假如读者需要装,可以按照命令装一下试试)
别的,你还需要安装恰当的 NVIDIA 驱动来确保 CUDA 12.2 正常工作。根据输出,你的驱动未安装,大概当前驱动版本不符合要求。你可以利用以下命令来安装驱动(假如还未安装):
- sudo apt-get install nvidia-driver-535
复制代码 大概按照 CUDA 安装日志中的发起,运行以下命令来自动安装驱动:
- sudo cuda-installer.run --silent --driver
复制代码 完成这些步调后,CUDA 情况应该设置准确,且可以正常利用。
但是利用ls -l /etc/alternatives/ | grep cuda
发现软连接照旧12.6
我已经装好了cuda12,为什么root@ubuntu-test:~# ls -l /etc/alternatives/ | grep cuda
lrwxrwxrwx 1 root root 20 Dec 24 14:00 cuda -> /usr/local/cuda-12.6 lrwxrwxrwx 1 root root 20 Dec 24 14:00 cuda-12 -> /usr/local/cuda-12.6 lrwxrwxrwx 1 root root 36 Dec 24 14:00 cufile.json -> /usr/local/cuda-12.6/gds/cufile.json照旧会如许,这里的软连接指向12.6是什么意思?是每次利用cuda都会用12.6吗?怎样让运行程序利用12.2
当前 /etc/alternatives/ 目录中的符号链接表现,cuda 和 cuda-12 都指向 /usr/local/cuda-12.6 目录,而不是 /usr/local/cuda-12.2。这意味着系统默认会利用 CUDA 12.6,而不是 CUDA 12.2。你可以通过调整这些符号链接,使得系统指向 CUDA 12.2。
为什么会有这种情况?
这通常是由于在安装或配置 CUDA 12.6 时,它设置了默认的符号链接。而 /usr/local/cuda 是系统用来表示当前利用的 CUDA 版本的尺度路径,通常是指向最新或当前利用的版本。
解决方法:
- 切换到 CUDA 12.2:
你可以更新这些符号链接,让它们指向 /usr/local/cuda-12.2,而不是 /usr/local/cuda-12.6。操纵步调如下:
- 删除当前的符号链接:
- sudo rm /etc/alternatives/cuda
- sudo rm /etc/alternatives/cuda-12
复制代码 - 创建新的符号链接,指向 CUDA 12.2:
- sudo ln -s /usr/local/cuda-12.2 /etc/alternatives/cuda
- sudo ln -s /usr/local/cuda-12.2 /etc/alternatives/cuda-12
复制代码 如许,cuda 和 cuda-12 这些符号链接就会指向 CUDA 12.2 了。
- 验证符号链接是否生效:
利用以下命令确认符号链接已准确设置:
- ls -l /etc/alternatives/ | grep cuda
复制代码 输出应该雷同如许,表现它们现在指向 CUDA 12.2:
- lrwxrwxrwx 1 root root 20 Dec 24 14:00 cuda -> /usr/local/cuda-12.2
- lrwxrwxrwx 1 root root 20 Dec 24 14:00 cuda-12 -> /usr/local/cuda-12.2
复制代码 - 确保情况变量更新:
假如你之前已设置 PATH 和 LD_LIBRARY_PATH 情况变量来指向 CUDA 12.2,你可以重新加载这些情况变量:
假如你还没有设置这些情况变量,可以按照以下方式设置:
- export PATH=/usr/local/cuda-12.2/bin:$PATH
- export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
复制代码 然后再次运行 source ~/.bashrc
。
- 验证是否利用准确的版本:
运行以下命令验证是否利用了准确的 CUDA 版本:
输出应表现 CUDA 12.2 的版本信息。
通过上述步调,你可以确保系统利用 CUDA 12.2,而不是 CUDA 12.6。
这是在root账户下操纵的。
user账户nvcc不可用解决方法
但是user账户下nvcc不可用
- (base) xxx@ubuntu-test:~$ nvcc -Vbash: nvcc: command not found(base) xxx@ubuntu-test:~$ nvidia-smiFri Jan 10 15:10:51 2025 +---------------------------------------------------------------------------------------+| NVIDIA-SMI 535.216.03 Driver Version: 535.216.03 CUDA Version: 12.2 |
- |-----------------------------------------+----------------------+----------------------+| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. || | | MIG M. ||=========================================+======================+======================|| 0 NVIDIA GeForce RTX 3090 On | 00000000:3B:00.0 Off | N/A || 30% 18C P8 9W / 350W | 1MiB / 24576MiB | 0% Default || | | N/A |+-----------------------------------------+----------------------+----------------------+| 1 NVIDIA GeForce RTX 3090 On | 00000000:5E:00.0 Off | N/A || 30% 17C P8 11W / 350W | 1MiB / 24576MiB | 0% Default || | | N/A |+-----------------------------------------+----------------------+----------------------+| 2 NVIDIA GeForce RTX 3090 On | 00000000:B1:00.0 Off | N/A || 30% 18C P8 17W / 350W | 1MiB / 24576MiB | 0% Default || | | N/A |+-----------------------------------------+----------------------+----------------------+| 3 NVIDIA GeForce RTX 3090 On | 00000000:D9:00.0 Off | N/A || 30% 18C P8 15W / 350W | 1MiB / 24576MiB | 0% Default || | | N/A |+-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+| Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=======================================================================================|| No running processes found |+---------------------------------------------------------------------------------------+
复制代码 解决方法:
假如 nvcc 在 root 用户下可以利用,但在普通用户下无法找到,大概是由于普通用户的情况变量没有准确设置。你需要确保普通用户的 PATH 情况变量包含了 CUDA 12.2 的路径。
解决方法:
- 查抄并编辑普通用户的 .bashrc 文件:
打开普通用户的 .bashrc 文件,确保其中有 CUDA 的情况变量设置。假如没有,手动添加:
在文件末端添加以下内容:
- export PATH=/usr/local/cuda-12.2/bin:$PATH
- export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
复制代码 假如你利用的是 vim,按 Esc 键,然后输入 :wq 来保存并退出。
- 使更改生效:
为了使 .bashrc 中的更改立刻生效,运行以下命令:
- 验证情况变量是否生效:
运行以下命令,确保情况变量已经更新:
- echo $PATH
- echo $LD_LIBRARY_PATH
复制代码 查抄输出,确认 PATH 中包含 /usr/local/cuda-12.2/bin,LD_LIBRARY_PATH 中包含 /usr/local/cuda-12.2/lib64。
- 验证 nvcc 是否可用:
重新打开终端或运行以下命令来确认 nvcc 是否可以利用:
假如一切设置准确,你应该能看到 CUDA 12.2 的版本信息。
其他查抄:
- 假如你在利用差别的 shell(如 zsh),确保在相应的配置文件(如 .zshrc)中也举行了情况变量的设置。
- 确保没有其他路径覆盖了 CUDA 路径,导致 nvcc 无法找到。
通过这些步调,你应该可以或许在普通用户下乐成利用 nvcc。
表现乐成:
参考
Ubuntu22.04.3安装CUDA12.2
ubuntu20.04安装12.2版本的cuda
后记
2025年1月10日15点19分于上海,在GPT4o大模型辅助下完成。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |