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

时间:2019-01-19 05:30:13

标签: python anaconda pytorch

我已经在我的机器(运行Ubuntu 18.04和带有Python 3.7的Anaconda)中添加了GeForce GTX 1080 Ti,以便在使用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处理我的2显示器设置,我只想将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允许根据NVIDIA docs运行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

$ apt-cache policy nvidia-cuda-toolkit
nvidia-cuda-toolkit:
  Installed: 9.1.85-3ubuntu1
  Candidate: 9.1.85-3ubuntu1
  Version table:
 *** 9.1.85-3ubuntu1 500
        500 http://sg.archive.ubuntu.com/ubuntu bionic/multiverse amd64 Packages
        100 /var/lib/dpkg/status

最后,我已经使用conda从零开始安装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

更详细地讲,如果我强迫PyTorch用x将张量x.cuda()转换为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

2 个答案:

答案 0 :(得分:0)

由于您有两张图形卡,因此按照此explanation来选择卡ID CUDA_VISIBLE_DEVICES=GPU_ID应该可以解决此问题。

答案 1 :(得分:0)

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

但是,我正在使用docker和docker-compose进行培训。因此,我从nvidia找到了这个pytorch图片,其中包含所有必需的设置。请在拉取图像之前,请确保检查此page以确定哪个图像标签与您的nvidia驱动程序版本兼容(如果拉错了图像,将无法使用)。

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

version: '3.5'

services:
  training:
    build:
      context: ""
      dockerfile: Dockerfile
    container_name: training
    environment:
      - CUDA_VISIBLE_DEVICES=0,2
    ipc: "host"

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