32

在带有 NVidia GeForce 820M 的 Windows 10 PC 上,我成功安装了 CUDA 9.2 和 cudnn 7.1,然后使用 pytorch.org 上的说明安装了 PyTorch。

具体来说,我使用了命令

pip install torch==1.4.0+cu92 torchvision==0.5.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html

因为我使用 pip 而不是 Anaconda。

然而我得到以下

>>> import torch
>>> torch.cuda.is_available()
False

为什么会这样?

4

5 回答 5

79

您的显卡不支持 CUDA 9.0。

由于我已经看到很多涉及此类问题的问题,因此我正在写一个关于如何检查您的系统是否与 CUDA 兼容的广泛答案,特别是针对将 PyTorch 与 CUDA 支持一起使用。此答案的最后一部分描述了用于解决问题的各种取决于环境的选项。


将 PyTorch 与 CUDA 结合使用的系统要求如下:

  • 您的显卡必须支持所需版本的 CUDA
  • 您的显卡驱动程序必须支持所需版本的 CUDA
  • PyTorch 二进制文件的构建必须支持显卡的计算能力

注意:如果您安装预构建的二进制文件(使用 pip 或 conda),那么在安装支持 CUDA 的 PyTorch 之前,您无需在系统上安装 CUDA 工具包或运行时。这是因为 PyTorch 除非从源代码编译,否则总是与 CUDA 库的副本一起交付。


1. 如何检查您的 GPU/显卡是否支持特定的 CUDA 版本

首先,确定您的显卡型号。

在继续之前,请确保您拥有 NVIDIA 显卡。AMD 和 Intel 显卡不支持 CUDA

NVIDIA 在单一位置提供 CUDA 兼容性信息方面做得并不好。最好的资源可能是 CUDA Wikipedia 页面上的这一部分。确定支持哪些版本的 CUDA

  1. 在大表中找到您的显卡型号,并记下计算能力版本。例如,GeForce 820M 的计算能力为 2.1。
  2. 在表格前面的项目符号列表中,检查您的显卡的计算能力是否支持所需的 CUDA 版本。例如,计算兼容性 2.1 不支持 CUDA 9.2。

如果您的卡不支持所需的 CUDA 版本,请参阅此答案第 4 节中的选项。

注意:计算能力是指您的显卡支持的计算功能。较新版本的 CUDA 库依赖于较新的硬件功能,这就是为什么我们需要确定计算能力以确定受支持的 CUDA 版本的原因。


2. 如何检查您的 GPU/图形驱动程序是否支持特定版本的 CUDA

图形驱动程序是允许操作系统与图形卡通信的软件。由于 CUDA 依赖于与显卡的低级通信,因此您需要拥有最新的驱动程序才能使用最新版本的 CUDA。

首先,确保您的系统上安装了 NVIDIA 图形驱动程序。您可以从NVIDIA 网站获取适用于您系统的最新驱动程序。

如果您安装了最新的驱动程序版本,那么您的显卡驱动程序可能支持与您的显卡兼容的所有 CUDA 版本(参见第 1 节)。要进行验证,您可以查看CUDA 发行说明中的​​表 2 。在极少数情况下,我听说最新推荐的图形驱动程序不支持最新的 CUDA 版本。您应该能够通过为所需的 CUDA 版本安装 CUDA 工具包并选择安装兼容驱动程序的选项来解决此问题,尽管这通常不是必需的。

如果您不能或不想升级图形驱动程序,则可以检查您当前的驱动程序是否支持特定的 CUDA 版本,如下所示:

在 Windows 上

  1. 确定您当前的图形驱动程序版本(来源https://www.nvidia.com/en-gb/drivers/drivers-faq/

右键单击您的桌面并选择 NVIDIA 控制面板。从 NVIDIA 控制面板菜单中,选择帮助 > 系统信息。驱动程序版本列在详细信息窗口的顶部。对于更高级的用户,您还可以从 Windows 设备管理器中获取驱动程序版本号。右键单击显示适配器下的图形设备,然后选择属性。选择驱动程序选项卡并阅读驱动程序版本。最后 5 位数字是 NVIDIA 驱动程序版本号。

  1. 访问CUDA 发行说明并向下滚动到表 2。使用此表来验证您的图形驱动程序是否足够新以支持所需的 CUDA 版本。

在 Linux/OS X 上

在终端窗口中运行以下命令

nvidia-smi

这应该会导致类似以下内容

Sat Apr  4 15:31:57 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 435.21       Driver Version: 435.21       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 206...  Off  | 00000000:01:00.0  On |                  N/A |
|  0%   35C    P8    16W / 175W |    502MiB /  7974MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1138      G   /usr/lib/xorg/Xorg                           300MiB |
|    0      2550      G   /usr/bin/compiz                              189MiB |
|    0      5735      G   /usr/lib/firefox/firefox                       5MiB |
|    0      7073      G   /usr/lib/firefox/firefox                       5MiB |
+-----------------------------------------------------------------------------+

Driver Version: ###.##是您的图形驱动程序版本。在上面的示例中,驱动程序版本是435.21.

CUDA Version: ##.#是您的图形驱动程序支持的最新版本的 CUDA。在上面的示例中,图形驱动程序支持 CUDA 10.1以及 10.1 之前的所有兼容 CUDA 版本

注意CUDA Version此表中显示的内容并不表示您的系统上实际安装了 CUDA 工具包或运行时。这只是表示您的图形驱动程序兼容的最新版本的 CUDA。

为了更加确定您的驱动程序支持所需的 CUDA 版本,您可以访问CUDA 发行说明页面上的表 2。


3. 如何检查特定版本的 PyTorch 是否与您的 GPU/显卡计算能力兼容

即使您的显卡支持所需的 CUDA 版本,也有可能预编译的 PyTorch 二进制文件未在支持您的计算能力的情况下进行编译。例如,在 PyTorch 0.3.1 中,对计算能力 <= 5.0 的支持被删除

首先,确认您的显卡和驱动程序都支持所需的 CUDA 版本(参见上面的第 1 和第 2 节),本节中的信息假设是这种情况。

检查 PyTorch 是否支持您的计算能力的最简单方法是安装具有 CUDA 支持的所需 PyTorch 版本,并从 python 解释器运行以下命令

>>> import torch
>>> torch.zeros(1).cuda()

如果您收到一条错误消息,内容为

Found GPU0 XXXXX which is of cuda capability #.#.
PyTorch no longer supports this GPU because it is too old.

那么这意味着 PyTorch 未在编译时支持您的计算能力。如果这运行没有问题,那么你应该很高兴。

更新如果您在具有较新 GPU 的系统上安装旧版本的 PyTorch,那么旧的 PyTorch 版本可能未在编译时支持您的计算能力。假设您的 GPU 支持 PyTorch 使用的 CUDA 版本,那么您应该能够使用所需的 CUDA 版本从源代码重建 PyTorch,或者升级到支持更新计算功能的最新版本 PyTorch。


4。结论

如果您的显卡和驱动程序支持所需版本的 CUDA(第 1 节和第 2 节),但 PyTorch 二进制文件不支持您的计算能力(第 3 节),那么您的选择是

  • 从源代码编译 PyTorch 并支持您的计算能力(参见此处
  • 在不支持 CUDA 的情况下安装 PyTorch(仅限 CPU)
  • 安装支持您的计算能力的旧版本的 PyTorch 二进制文件(不推荐,因为此时 PyTorch 0.3.1 非常过时)。预建二进制文件从未支持 AFAIK 计算能力早于 3.X
  • 升级你的显卡

如果您的显卡不支持所需的 CUDA 版本(第 1 节),那么您的选择是

  • 在不支持 CUDA 的情况下安装 PyTorch(仅限 CPU)
  • 安装支持图形卡支持的 CUDA 版本的旧版本 PyTorch(如果二进制文件不支持您的计算能力,仍可能需要从源代码编译)
  • 升级你的显卡
于 2020-04-04T20:29:30.373 回答
1

当您的 Pytorch 版本支持不同的 CUDA 时,可能会出现相同的错误。例如,我的 Pytorch 版本支持 CUDA 8.0,但我安装了 CUDA 9.0。为了解决这个问题,我必须将我的 Pytorch 升级为cu90这样:

pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cu90/torch_nightly.html

参考:这里

于 2020-07-13T09:17:02.030 回答
1

为了解决这个问题,以下方法为我解答:

1-首先你必须更新 Anaconda。

2- 在您的笔记本中,根据您的系统选择以下选项。

https://pytorch.org/

在此处输入图像描述

Windows 示例:(这可能需要一些时间。请耐心等待)

conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

3- 通过以下站点为您的系统查找并安装最新的显卡:

https://www.nvidia.com/Download/index.aspx

在此处输入图像描述

4-支持的GPU和卡的CUDA级别。看到 这个

于 2021-10-19T17:58:11.050 回答
1

我还想分享我的经验,尤其是在 WSL2 环境中。在这里查看我的帖子。

尽管我按照NVidia here提供的指南安装了正确和最新的驱动程序,但我的 WSL 无法在 PyTorch 和整个环境中检测到任何 GPU。

我的 GPU 是 Nvidia GeForce RTX 1650 Ti,它没有在上面的 Wiki链接中列出,但实际上显示在 NVidia页面中。

降级到此 NVidia 链接上的旧驱动程序版本,即Driver Version: 472.39帮助了我。现在 PyTorch 可以正确检测驱动程序,并且我可以运行需要 GPU 访问的容器,因为它被正确找到和使用。

希望这对我这种情况的人有所帮助。

于 2022-01-23T11:18:47.237 回答
0

好的,这是我的经验,我的系统是 ubuntu 20.4,gpu - nvidi gtx 1060

当我去更改运行我在 PRIME 配置文件下找到的“Nvidia X 服务器设置”应用程序时,选择了 Nvidia On-Demand 或 Inter(省电模式)

将 torch.cuda.is_available() 赋予 False

我将 GPU 模式更改为“NVIDIA(性能模式)然后我得到了 True

NVIDIA X 服务器设置-GUI

于 2022-02-01T05:42:56.443 回答