Python 为什么PyTorch找不到我的NVDIA驱动程序来支持CUDA?

Python 为什么PyTorch找不到我的NVDIA驱动程序来支持CUDA?,python,anaconda,pytorch,Python,Anaconda,Pytorch,我已经在我的机器中添加了GeForce GTX 1080 Ti(运行Ubuntu18.04和Anaconda with Python 3.7),以便在使用PyTorch时使用GPU。两张卡均正确识别: $ lspci | grep VGA 03:00.0 VGA compatible controller: NVIDIA Corporation GF119 [NVS 310] (reva1) 04:00.0 VGA compatible controller: NVIDIA Corporatio

我已经在我的机器中添加了GeForce GTX 1080 Ti(运行Ubuntu18.04和Anaconda with Python 3.7),以便在使用PyTorch时使用GPU。两张卡均正确识别:

$ lspci | grep VGA
03:00.0 VGA compatible controller: NVIDIA Corporation GF119 [NVS 310] (reva1)
04:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
NVS 310处理我的双监视器设置,我只想利用1080用于PyTorch。我还安装了目前存储库中最新的NVIDIA驱动程序,看起来还不错:

$ nvidia-smi 
Sat Jan 19 12:42:18 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.87                 Driver Version: 390.87                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  NVS 310             Off  | 00000000:03:00.0 N/A |                  N/A |
| 30%   60C    P0    N/A /  N/A |    461MiB /   963MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 108...  Off  | 00000000:04:00.0 Off |                  N/A |
|  0%   41C    P8    10W / 250W |      2MiB / 11178MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0                    Not Supported                                       |
+-----------------------------------------------------------------------------+
驱动程序版本390.xx允许根据运行CUDA 9.1(9.1.85)。由于这也是Ubuntu存储库中的版本,我简单地安装了CUDA工具包,其中包括:

$ sudo apt-get-installed nvidia-cuda-toolkit
再说一次,这似乎没什么问题:

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

最后,我用康达从头安装了PyTorch

conda install pytorch torchvision -c pytorch
据我所知,还有一个错误:

$ conda list
...
pytorch                   1.0.0           py3.7_cuda9.0.176_cudnn7.4.1_1    pytorch
...
然而,PyTorch似乎没有找到CUDA:

$ python -c 'import torch; print(torch.cuda.is_available())'
False
更详细地说,如果我强制Pytork使用
x.CUDA()
将张量
x
转换为CUDA,我会得到错误:

Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from 82 http://...
我错过了什么?我是新来的,但我想我已经在网络上查了很多了,找到了像NVIDIA驱动程序和CUDA工具包版本这样的警告

编辑:PyTorch的更多输出:

print(torch.cuda.device_count())   # --> 0
print(torch.cuda.is_available())   # --> False
print(torch.version.cuda)          # --> 9.0.176

由于您有两个图形卡,因此选择一个卡ID
CUDA_VISIBLE_DEVICES=GPU_ID
应根据此解决问题。

我在尝试使用PyTorch在我们的服务器(有4个GPU)中进行训练时遇到了相同的问题,因此我没有选择仅删除GPU

但是,我使用docker和docker compose来运行我的培训。因此,我找到了这个pytorch图像,它带有所有必要的设置。请在拉取图像之前,确保检查此项,以确定哪个图像标签与您的nvidia驱动程序版本兼容(如果拉取错误的图像标签,它将无法工作)

然后,在docker compose文件中,您可以指定要使用的GPU,如下所示:

版本:“3.5”
服务:
培训:
建造:
上下文:“”
dockerfile:dockerfile
集装箱名称:培训
环境:
-CUDA_可见_设备=0,2
ipc:“主机”

确保将ipc设置为“主机”,这将允许您的docker容器使用主机共享内存,而不是分配给docker的共享内存(不足)。

我将放弃NVS 310。我将使用NVIDIA提供的linux安装指南中的说明验证CUDA安装。构建并运行一个示例代码,如
vectorad
bandwidthTest
。如果它们不能正常工作,那么你的CUDA安装就被破坏了。我实际上刚刚读过PyTorch二进制文件附带了所需的CUDA和cuDNN内容。所以现在就删除了CUDA工具包。实际上,我从一台机器上取下了1080,该机器的设置与它工作的NVS 310相同。我认为它会有助于一些负载平衡。@RobertCrovella我只用1080测试过它,它可以用它来工作。当只使用此卡时,我还可以使用更新的驱动程序(415而不是390)。我还尝试了只有NVS 310与390驱动程序。我知道这张卡的计算能力太低,但我记得错误是相应的,而不仅仅是说没有找到驱动程序。然而,这一次,它甚至找不到/看不见司机。所以,是的,我现在就把1080留在那里。谢谢您的PyTorch构建是针对CUDA 9.0.176的,而您已经安装了CUDA 9.1.85。但是,删除CUDA安装,让anaconda为您安装。
print(torch.cuda.device_count())   # --> 0
print(torch.cuda.is_available())   # --> False
print(torch.version.cuda)          # --> 9.0.176