Pytorch无法找到CUDA设备。

5

我在我的设置中尝试使用Pytorch中的Cuda,但它无法被检测到,让我感到困惑。

torch.cuda.is_available()

返回 False。更深入地挖掘,

torch._C._cuda_getDeviceCount()

返回 0。例如,使用版本 1.5。

$ pip freeze | grep torch
torch==1.5.0

我尝试写了一个小型的C程序以实现相同的功能,例如:

#include <stdio.h>
#include <cuda_runtime_api.h>

int main() {
   int count = 0;
   cudaGetDeviceCount(&count);
   printf("Device count: %d\n", count);
   return 0;
}

输出为1,这表明Cuda运行时可以找到设备。同时,运行nvidia-smi命令:

+-----------------------------------------------------------------------------+
| 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 GTX 106...  Off  | 00000000:02:00.0  On |                  N/A |
|  0%   41C    P8     9W / 200W |    219MiB /  6075MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

那么我的 Cuda 设备在 Python 中去哪儿了呢?

1个回答

5
我现在才意识到,每个不同的 CUDA 次要版本都有一个不同版本的 Pytorch,因此在我的情况下,版本为 torch==1.5.0 的默认 CUDA 版本显然为 10.2,而特殊包 torch==1.5.0+cu101 可以使用。

我希望这可以澄清其他像我一样开始阅读 PyPi 文档的人的疑惑(如果您知道在哪里查找,则更新的文档在此处: https://pytorch.org/get-started/locally/ )。


1
另外,您可以提到如果有足够的磁盘空间并希望使用conda,pytorch会自带cudatoolkit包,确保在环境中可用正确的cuda库;) - Jan
1
我不想使用Conda。我想坚持使用我习惯的好老的requirements.txt :P - Krumelur
实际上,这个东西最终会进入一个 Docker 镜像中。但那是第二步。 - Krumelur
1
所以,您最终将使用一种环境技术... 旧好时光就这样消逝了... - Jan
除了运行 pip uninstall torch torchvision 命令外,我还需要在运行链接文档中的命令之前运行 pip cache purge 命令。 - crypdick
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接