Ubuntu 20.04 安装Cuda 12.2版本踩坑纪录

打印 上一主题 下一主题

主题 1013|帖子 1013|积分 3039

Ubuntu 20.04 安装Cuda 12.2版本踩坑纪录


  
查看Ubuntu版本

利用下面的命令
  1. lsb_release -a
复制代码
运行结果
  1. (base) xxx@ubuntu-test:~$ lsb_release -a
  2. No LSB modules are available.Distributor ID: UbuntuDescription:    Ubuntu 20.04.5 LTSRelease:        20.04Codename:       focal
复制代码
  1. (base) xxx@ubuntu-test:~$ uname -a
  2. 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 输出的信息包含了当前系统的具体信息。我们可以将其分解如下:

  • 操纵系统名称

    • Linux:表示操纵系统是 Linux。

  • 主机名

    • ubuntu-test:表示盘算机的主机名。

  • 内核版本

    • 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 处理器)。

  • 操纵系统架构

    • x86_64:再次表明系统是 64 位的。

  • 操纵系统类型

    • GNU/Linux:表示操纵系统是基于 GNU 工具和 Linux 内核构建的 Linux 系统。

综上所述,命令 uname -a 提供了操纵系统名称、内核版本、编译信息、主机名、系统架构等关键系统信息。
CUDA Toolkit 12.2 Downloads过程纪录。
不乐成的方式:利用deb安装

不要利用deb安装,而是利用runfile安装
利用deb (local)安装,遇到很多坑,纪录如下,终极也没有安装乐成。以是推荐不要利用deb安装。假如不想看debug过程,可以直接跳到下面乐成安装的部分:乐成的安装方式:利用runfile安装

  1. 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
复制代码
全部命令如下
  1. wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
  2. sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
  3. 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
  4. sudo dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
  5. sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
  6. sudo apt-get update
  7. sudo apt-get -y install cuda
复制代码
下面是每一步的具体解析:
第一步:
  1. 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 版本的存储库目录下。
第二步:
  1. 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 软件包。
第三步:
  1. 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 开发工具包。
第四步:
  1. 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


  • sudo 是一个命令行工具,用于以超级用户(root)权限运行命令。由于安装软件包需要系统管理员权限,sudo 在这里用于提拔权限。

  • dpkg


  • dpkg 是 Debian 系统及其衍生版本(如 Ubuntu)中用于安装、卸载和管理 .deb
    包的工具。它是低层次的包管理工具,可以直接安装、配置和移除 .deb
    包文件。

  • -i


  • -i 选项表示安装模式(install),即告诉 dpkg 执行安装操纵。背面紧跟着的是要安装的 .deb
    包文件。

  • cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb



  • 这是要安装的
    1. .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 相干的工具和库。
假如表现如下信息
  1. root@ubuntu-test:~# sudo dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
  2. 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
  3. ...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/
复制代码
就要执行
  1. sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-73067DC7-keyring.gpg /usr/share/keyrings/
复制代码
这个命令,之后再往下执行。
第五步:
  1. 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


  • sudo 是用来以超级用户(root)权限执行命令的工具。由于需要在系统目录(如 /usr/share/keyrings/)中写入文件,因此需要管理员权限。

  • cp


  • 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 密钥文件。


  • /usr/share/keyrings/


  • 这是目标目录,表示将 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 软件包时可以或许验证软件包的署名,从而保障软件包的完备性和泉源安全。
第六步:
  1. sudo apt-get update
  2. sudo apt-get -y install cuda
复制代码
遇到如下题目:
  1. root@ubuntu-test:~# sudo apt-get -y install cuda
  2. Reading package lists... Done
  3. Building dependency tree      
  4. Reading state information... Done
  5. Some packages could not be installed. This may mean that you have
  6. requested an impossible situation or if you are using the unstable
  7. distribution that some required packages have not yet been created
  8. or been moved out of Incoming.
  9. The following information may help to resolve the situation:
  10. The following packages have unmet dependencies:
  11. cuda : Depends: cuda-12-6 (>= 12.6.3) but it is not going to be installed
  12.         Depends: nvidia-open (>= 560.35.05) but it is not going to be installed
  13. E: Unable to correct problems, you have held broken packages.
复制代码
按照下面的方法:
  1. sudo apt-get purge cuda
  2. sudo apt-get autoremove
  3. sudo apt-get clean
  4. sudo apt-get update
  5. sudo apt-get install cuda
  6. 或者:
  7. sudo apt-get install cuda-12-2
复制代码
照旧会遇到题目:
  1. The following packages have unmet dependencies:
  2. cuda : Depends: cuda-12-6 (>= 12.6.3) but it is not going to be installed
  3.         Depends: nvidia-open (>= 560.35.05) but it is not going to be installed
  4. E: Unable to correct problems, you have held broken packages.
  5. root@ubuntu-test:~# sudo apt-get install cuda-12-2
  6. Reading package lists... Done
  7. Building dependency tree      
  8. Reading state information... Done
  9. Some packages could not be installed. This may mean that you have
  10. requested an impossible situation or if you are using the unstable
  11. distribution that some required packages have not yet been created
  12. or been moved out of Incoming.
  13. The following information may help to resolve the situation:
  14. The following packages have unmet dependencies:
  15. cuda-12-2 : Depends: cuda-runtime-12-2 (>= 12.2.2) but it is not going to be installed
  16.              Depends: cuda-demo-suite-12-2 (>= 12.2.140) but it is not going to be installed
  17. E: Unable to correct problems, you have held broken packages.
复制代码
继续debug
  1. root@ubuntu-test:~# sudo apt-get install cuda-runtime-12-2 cuda-demo-suite-12-2
  2. Reading package lists... Done
  3. Building dependency tree      
  4. Reading state information... Done
  5. Some packages could not be installed. This may mean that you have
  6. requested an impossible situation or if you are using the unstable
  7. distribution that some required packages have not yet been created
  8. or been moved out of Incoming.
  9. The following information may help to resolve the situation:
  10. The following packages have unmet dependencies:
  11. cuda-runtime-12-2 : Depends: cuda-drivers (>= 535.104.05) but it is not going to be installed
  12. E: Unable to correct problems, you have held broken packages.
复制代码
但是我的cuda driver版本是Driver Version: 545.23.08已经满意上述要求,于是继续debug
卸载现有的 NVIDIA 驱动:

假如当前的驱动版本不符合 CUDA 12.2 的要求,可以先卸载现有的 NVIDIA 驱动,然后再安装适合的驱动版本。执行以下命令
  1. sudo apt-get purge nvidia-*
  2. sudo apt-get autoremove
  3. sudo apt-get clean
复制代码
安装符合要求的驱动版本:

根据 CUDA 12.2 的要求,你可以安装恰当版本的驱动,如 nvidia-driver-535。尝试以下命令来安装它:
  1. sudo apt-get install nvidia-driver-535
复制代码
重启 sudo reboot之后查看版本,已经是自己需要的版本了
  1. NVIDIA-SMI 535.216.03             Driver Version: 535.216.03   CUDA Version: 12.2     |
复制代码
但是运行如下命令,依然发现:软连接链接到的是12.6
  1. ls -l /etc/alternatives/ | grep cuda
复制代码
输出:
  1. lrwxrwxrwx 1 root root  20 Dec 24 14:00 cuda -> /usr/local/cuda-12.6
  2. lrwxrwxrwx 1 root root  20 Dec 24 14:00 cuda-12 -> /usr/local/cuda-12.6
  3. 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 的全部文件。
  1. root@ubuntu-test:~# ls /usr/local/
  2. 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
只有两句命令:
  1. wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
  2. sudo sh cuda_12.2.0_535.54.03_linux.run
复制代码
下面是执行过程
  1. 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
  2. root@ubuntu-test:~# sudo sh cuda_12.2.0_535.54.03_linux.run
  3. Installation failed. See log at /var/log/cuda-installer.log for details.
  4. root@ubuntu-test:~# cat  /var/log/cuda-installer.log
  5. [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]
  6. [INFO]: Cleaning up window
  7. [INFO]: Complete
  8. [INFO]: Checking compiler version...
  9. [INFO]: gcc location: /usr/bin/gcc
  10. [INFO]: gcc version: gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
  11. [INFO]: Initializing menu
  12. [INFO]: nvidia-fs.setKOVersion(2.16.1)
  13. [INFO]: Setup complete
  14. [INFO]: Installing: Driver
  15. [INFO]: Installing: 535.54.03
  16. [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
  17. [INFO]: Finished with code: 256
  18. [ERROR]: Install of driver component failed. Consult the driver log at /var/log/nvidia-installer.log for more details.
  19. [ERROR]: Install of 535.54.03 failed, quitting
复制代码

输入accept,同意协议

这里的X号表示选中,第一次,我是选中这里的Driver,然后表现安装失败。以是第二次不选择安装这个driver

于是我现在取消第一个Driver的选中,按空格键表示选中照旧不选中。
然后安装

安装完成的信息
  1. ===========
  2. = Summary =
  3. ===========
  4. Driver:   Not Selected
  5. Toolkit:  Installed in /usr/local/cuda-12.2/
  6. Please make sure that
  7. -   PATH includes /usr/local/cuda-12.2/bin
  8. -   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
  9. To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.2/bin
  10. ***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.
  11. To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
  12.     sudo <CudaInstaller>.run --silent --driver
  13. Logfile is /var/log/cuda-installer.log
复制代码
配置情况变量
  1. sudo vim ~/.bashrc
复制代码
根据你给出的输出,CUDA 12.2 已经安装在 /usr/local/cuda-12.2/ 目录中,但是安装过程没有包括 NVIDIA 驱动。因此,CUDA 工具包可以正常利用,但需要驱动版本至少为 535.00。你需要将路径添加到 ~/.bashrc 中,以确保准确设置情况变量,使得系统可以或许识别 CUDA 工具包。
操纵步调:

  • 打开 .bashrc 文件: 在终端中输入以下命令打开 ~/.bashrc 文件:
    1. sudo vim ~/.bashrc
    复制代码
    大概你可以利用其他编辑器,如 nano,假如你不熟悉 vim:
    1. sudo nano ~/.bashrc
    复制代码
  • 修改 .bashrc 文件: 在文件的最后添加以下内容来更新 PATH 和 LD_LIBRARY_PATH 情况变量:
    1. # Add CUDA 12.2 to PATH and LD_LIBRARY_PATH
    2. export PATH=/usr/local/cuda-12.2/bin:$PATH
    3. export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
    复制代码
    这会确保每次打开终端时,系统可以或许准确找到 CUDA 相干的可执行文件和库。
  • 保存并退出: 假如你利用的是 vim,按 Esc 键,然后输入 :wq 来保存并退出。假如你利用的是 nano,按 Ctrl + O 保存文件,然后按 Ctrl + X 退出。
  • 使修改生效: 修改 .bashrc 后,需要使改动生效。你可以执行以下命令来重新加载 .bashrc:
    1. source ~/.bashrc
    复制代码
  • 验证情况变量是否设置准确: 你可以通过运行以下命令来验证 PATH 和 LD_LIBRARY_PATH 是否已准确设置:
    1. echo $PATH
    2. echo $LD_LIBRARY_PATH
    复制代码
    你应该能看到 /usr/local/cuda-12.2/bin 出现在 PATH 中,/usr/local/cuda-12.2/lib64 出现在 LD_LIBRARY_PATH 中。
继续安装或更新驱动:(由于我之前的驱动已经安装过,以是没有再装,假如读者需要装,可以按照命令装一下试试)
别的,你还需要安装恰当的 NVIDIA 驱动来确保 CUDA 12.2 正常工作。根据输出,你的驱动未安装,大概当前驱动版本不符合要求。你可以利用以下命令来安装驱动(假如还未安装):
  1. sudo apt-get install nvidia-driver-535
复制代码
大概按照 CUDA 安装日志中的发起,运行以下命令来自动安装驱动:
  1. 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。操纵步调如下:

    • 删除当前的符号链接:
      1. sudo rm /etc/alternatives/cuda
      2. sudo rm /etc/alternatives/cuda-12
      复制代码
    • 创建新的符号链接,指向 CUDA 12.2:
      1. sudo ln -s /usr/local/cuda-12.2 /etc/alternatives/cuda
      2. sudo ln -s /usr/local/cuda-12.2 /etc/alternatives/cuda-12
      复制代码
    如许,cuda 和 cuda-12 这些符号链接就会指向 CUDA 12.2 了。

  • 验证符号链接是否生效:
    利用以下命令确认符号链接已准确设置:
    1. ls -l /etc/alternatives/ | grep cuda
    复制代码
    输出应该雷同如许,表现它们现在指向 CUDA 12.2:
    1. lrwxrwxrwx 1 root root  20 Dec 24 14:00 cuda -> /usr/local/cuda-12.2
    2. lrwxrwxrwx 1 root root  20 Dec 24 14:00 cuda-12 -> /usr/local/cuda-12.2
    复制代码
  • 确保情况变量更新:
    假如你之前已设置 PATH 和 LD_LIBRARY_PATH 情况变量来指向 CUDA 12.2,你可以重新加载这些情况变量:
    1. source ~/.bashrc
    复制代码
    假如你还没有设置这些情况变量,可以按照以下方式设置:
    1. export PATH=/usr/local/cuda-12.2/bin:$PATH
    2. export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
    复制代码
    然后再次运行 source ~/.bashrc



  • 验证是否利用准确的版本:
    运行以下命令验证是否利用了准确的 CUDA 版本:
    1. nvcc --version
    复制代码
    输出应表现 CUDA 12.2 的版本信息。
通过上述步调,你可以确保系统利用 CUDA 12.2,而不是 CUDA 12.6。
这是在root账户下操纵的。
user账户nvcc不可用解决方法

但是user账户下nvcc不可用
  1. (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     |
  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 的情况变量设置。假如没有,手动添加:
    1. sudo vim ~/.bashrc
    复制代码
    在文件末端添加以下内容:
    1. export PATH=/usr/local/cuda-12.2/bin:$PATH
    2. export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
    复制代码
    假如你利用的是 vim,按 Esc 键,然后输入 :wq 来保存并退出。
  • 使更改生效:
    为了使 .bashrc 中的更改立刻生效,运行以下命令:
    1. source ~/.bashrc
    复制代码
  • 验证情况变量是否生效:
    运行以下命令,确保情况变量已经更新:
    1. echo $PATH
    2. echo $LD_LIBRARY_PATH
    复制代码
    查抄输出,确认 PATH 中包含 /usr/local/cuda-12.2/bin,LD_LIBRARY_PATH 中包含 /usr/local/cuda-12.2/lib64。
  • 验证 nvcc 是否可用:
    重新打开终端或运行以下命令来确认 nvcc 是否可以利用:
    1. nvcc --version
    复制代码
    假如一切设置准确,你应该能看到 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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表