当我在 Ubuntu 20.04 上安装 cuda-toolkit-10-1 和 nvidia-cuda-toolkit 时,它有什么区别?

aib*_*him 6 nvidia cuda tensorflow 20.04

我的问题的背景

我有一台旧的 Lenovo ThinkPad W530 笔记本电脑,配备 NVIDIA Corporation GK107GLM [Quadro K1000M] / Quadro K1000M/PCIe/SSE2 GPU,具有计算兼容性 3.0支持 CUDA。我想在 Ubuntu 上为我的 Udacity 纳米学位构建一些 TensorFlow 示例和项目。

我刚刚安装了 Ubuntu 20.04 并升级了我的 NVIDIA 驱动程序,因此当我执行时,nvidia-smi它会给出以下结果:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.05    Driver Version: 450.51.05    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| 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  Quadro K1000M       On   | 00000000:01:00.0 Off |                  N/A |
| N/A   59C    P0    N/A /  N/A |    496MiB /  1999MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                              
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      5470      G   /usr/lib/xorg/Xorg                 39MiB |
|    0   N/A  N/A      7504      G   /usr/lib/xorg/Xorg                146MiB |
|    0   N/A  N/A      7772      G   /usr/bin/gnome-shell              147MiB |
|    0   N/A  N/A     34770      G   /proc/self/exe                    158MiB |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 GPU 支持构建 TensorFlow 代码时,我发现我需要安装 CUDA 并按照这篇文章了解如何在 Ubuntu 20.04 上安装最新版本的 CUDA 11.0。我经历了整个过程,然后发现了两个问题:

  1. 我的 GPU 仅支持计算兼容性 3.0,而对 TensorFlow 的最低支持是 3.5
  2. 为了克服问题 1,我必须从源构建张量流以获得支持 CUDA 3.0 的构建,为此我必须使用 CUDA 10.1,这意味着我必须从头开始。

我按照CUDA 文档删除了 CUDA 11.0 。我开始在 Ubuntu 20.04 上安装 CUDA 10.1,现在我很困惑。

CUDA 10.1安装文档过程是关于从.debUbuntu 18.04 的文件安装 CUDA 10.1,并且 Ubuntu 20.04 上不支持 CUDA 10.1。

因此,我开始按照本文的相同步骤进行操作,但对于 CUDA 10.1 而不是 CUDA 11。我能够使用以下命令安装 cuda 10.1:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.05    Driver Version: 450.51.05    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| 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  Quadro K1000M       On   | 00000000:01:00.0 Off |                  N/A |
| N/A   59C    P0    N/A /  N/A |    496MiB /  1999MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                              
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      5470      G   /usr/lib/xorg/Xorg                 39MiB |
|    0   N/A  N/A      7504      G   /usr/lib/xorg/Xorg                146MiB |
|    0   N/A  N/A      7772      G   /usr/bin/gnome-shell              147MiB |
|    0   N/A  N/A     34770      G   /proc/self/exe                    158MiB |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

这样我就不会覆盖已安装的 NVIDIA 驱动程序 450(经过多次试验后我才这样做)。

当我尝试执行命令时

sudo apt-get -f install cuda-toolkit-10-1 cuda-libraries-10-1
Run Code Online (Sandbox Code Playgroud)

由于依赖性问题,它给了我错误。为了克服这些错误,我寻找了一个解决方案,然后我发现了这篇文章,其中建议:

为了更详细,不要尝试对 Ubuntu 20.04 使用 18.10 或 18.04 CUDA 10.1。我是通过艰难的方式才了解到这一点的,哈哈!

因此,您可以通过运行以下命令在 Ubuntu 20.04 中安装 CUDA 10.1:

$ sudo apt install nvidia-cuda-toolkit
Run Code Online (Sandbox Code Playgroud)

我卸载了使用CUDA 文档安装的 CUDA Toolkit 10.1,并遵循了此建议,命令成功通过。但现在我不确定是不是就是这样,还是我错过了什么?!

当我试图了解两种方式之间的区别时,我发现nvidia-cuda-toolkit使用命令的来源

apt-cache policy nvidia-cuda-toolkit
Run Code Online (Sandbox Code Playgroud)

它给了我以下结果,表明源是 Ubuntu 存储库

nvidia-cuda-toolkit:
  Installed: 10.1.243-3
  Candidate: 10.1.243-3
  Version table:
 *** 10.1.243-3 500
        500 http://eg.archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages
        100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)

我的问题

  1. 如果 CUDA 10.1 for Ubuntu 18.04 以及 CUDA 11 for Ubuntu 20.04 的官方安装文档没有指出任何有关安装软件包的信息,那么和nvidia-cuda-toolkit之间有什么区别nvidia-cuda-toolkitcuda-toolkit-10-1
  2. 是否按照文章所示只安装就足够了nvidia-cuda-toolkit所述,仅在我尝试使用 CUDA 工具包 10.1 时
  3. 现在是否安装了 CUDA 10.1 运行时库?如果没有,我现在如何安装它们?我应该删除nvidia-cuda-toolkit还是可以按照文档中的步骤操作?
  4. 如何验证我的安装?
  5. 当我尝试构建CUDA Samples时,在我的安装中没有找到该cuda-install-samples-10.1.sh文件。如何安装示例?

我一直在努力构建我的示例,但到目前为止我还没有做到这一点,所以我非常感谢您对此的支持。

haq*_*aqk 1

对于仍在寻找解决方案的人,我没有答案,但我可以向您指出一些资源:

\n\n

为了子孙后代,这些是步骤(感谢斯蒂芬·格雷戈里):

\n

1. 清理

\n

(a)\xc2\xa0打开终端窗口并键入以下三个命令以删除您可能已安装的任何 NVIDIA/CUDA 软件包:

\n

sudo rm /etc/apt/sources.list.d/cuda*
\nsudo apt 删除 --autoremove nvidia-cuda-toolkit
\nsudo apt 删除 --autoremove nvidia-*

\n

(b)\xc2\xa0清除任何剩余的 NVIDIA 配置文件以及它们可能已安装的相关依赖项。

\n

sudo apt-get purge nvidia*
\nsudo apt-get autoremove
\nsudo apt-get autoclean

\n

(c)\xc2\xa0删除\xc2\xa0/usr/local/中可能存在的任何现有 CUDA 文件夹

\n
\n

在我最初几次尝试安装 CUDA 时,这让我陷入了困境。此时\xc2\xa0usr/local/\xc2\xa0 中不应该有任何名为“cuda”或“cuda-anything”的文件夹!

\n
\n

须藤 rm -rf /usr/local/cuda*

\n

2. 安装

\n

(a)\xc2\xa0设置您的 CUDA PPA。(如果您对 PPA 是什么感到好奇,请阅读此处的\xc2\xa0 \xc2\xa0。)

\n
\n

本质上,我们将 CUDA 添加到我们的 \xc2\xa0sources.list 中,这是每当我们使用 \xc2\xa0apt\xc2\xa0 包管理器使用如下命令在终端中下载内容时引用的文件“须藤apt更新”

\n
\n

sudo apt update
\nsudo add-apt-repository ppa:graphics-driverssudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub sudo bash -c \'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list\'sudo bash -c \'echo "deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda_learn.list\'

\n

(b)\xc2\xa0安装CUDA 10.1包,包括CuDNN库

\n

sudo apt update
\nsudo apt install cuda-10-1
\nsudo apt install libcudnn7

\n

3. 将 CUDA 添加到路径

\n

(a)\xc2\xa0安装后,我们需要将CUDA添加到我们的PATH中,以便shell知道在哪里可以找到CUDA。要编辑我们的路径,请使用 vim 打开“.profile”文件。

\n

sudo vim ~/.profile

\n

(b)\xc2\xa0最后,将这些行添加到文件末尾。

\n

设置cuda 10.1安装的路径\\

\n

如果[-d“/usr/local/cuda-10.1/bin/”]; 然后
\nexport PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
\nexport LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH} }
\nfi

\n

4. 重新启动

\n

(a)\xc2\xa0重新启动计算机(安装任何驱动程序后应该如此)

\n

5. 最终检查

\n

现在,让我们检查一下以确保一切都已设置完毕!

\n

(a)\xc2\xa0检查NVIDIA驱动程序:

\n

英伟达-SMI

\n

(b)\xc2\xa0检查CUDA:

\n

nvcc--版本

\n

(c)\xc2\xa0检查 CuDNN

\n

/sbin/ldconfig -N -v $(sed \'s/:/ /\' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn

\n