torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

我用的ubuntu18系统,torch.cuda.is_available()一直返回false,我看网上有很多解决方法,也都尝试了,总结有以下几点原因

1.系统驱动版本低,需要更新

2.cuda版本高,驱动不支持,以及没配置好驱动支持的cuda版本

3.cuda和torch版本不匹配,

4.安装的torch的指令不对,导致没有安装支持cuda的torch。

因为是小白所以我的解决之路比较辛酸,历时几天才把这个问题解决,感觉自己太菜了,其间遇到了好多别的问题,比如condahttperror,pip时read time out等,过五关斩六将才走向了成功。回过头看这个问题,发现只要保证每步都正确就会得到True的。

安装和解决办法

一、cuda的版本确实不能超过驱动对应的最高cuda版本,所有在安装的时候首先看一下驱动的版本。

打开软件和更新--附加驱动,看使用的驱动版本,我的开始是435。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

在终端输入nvidia-smi查看信息,看到驱动版本和对应的cuda。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

二、于是我去官网下载cuda10.1版本,但是最新的cuda是10.2,比驱动对应的版本高,应该不能用,我要下10.1所以要找以前的cuda版本下载,下载和安装步骤我写在另一篇当中,这里不重复说了,见https://blog.csdn.net/bird11111/article/details/105746686下载各版本cuda,下载以前版本的cuda。

网站能看到这个cuda和驱动对应的信息,可以看到我430的驱动对应的最高版本的cuda就是10.1

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

四、下载安装完cuda和cudnn后,要配置:终端输入gedit ~/.bashrc

打开后在末尾输入:

export PATH="/usr/local/cuda-10.1/bin:$PATH"

export LD_LIBRARY_PATH="/usr/lcoal/cuda-10.1/lib64:$LD_LIBRARY_PATH"

然后保存关闭,在终端输入source ~/.bashrc让其生效,可以将10.1修改成自己下载的版本。刚开始我cuda没有加版本信息,它当时返回10.1,但之后又有返回9.1的情况,所以还是加上版本比较好。

五、这时nvcc --version就变成10.1了。而配置前在终端输入nvcc --version查看对应的cuda是9.1,所以这两句配置很重要。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

有的博客里说要降gcc,但不一定都需要,以可看图对比,比如如果是ubuntu18则对应的gcc是7.3.0,我看了我的gcc是7.3.0,终端里输入python可以看到gcc版本,所以不用多此一举。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

六、安装配置好cuda后,可以看到torch.cuda.is_available()返回仍是false。因为我在安装torch的时候用conda指令安装出现condahttperror的问题,用pip指令有找不到版本的问题,我太难了,所以我用了别人ubuntu16下载torch的指令,下载成功了,我在虚拟环境里直接pip install torch和pip install torchvision也都能下载成功,并且不慢,但是一定要吸取我这次的教训,不要随便用别人的torch下载指令也不要直接用简单的pip install torch和pip install torchvision,就用自己在官网选版本后出现的指令不好吗,因为用别人的下载指令可能不支持cuda,pip install torch也不支持cuda,有图为证,可以看到它的版本虽然是最新版,torch-1.5.0但版本信息中没有cu字母,说明这是不支持cuda的,cp36是python3.6的意思。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

七、于是我卸载了torch和torchvsion,直接在终端pip uninstall torch和pip uninstall torchvision

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

八、然后用官网给的指令老老实实安装了对应cuda10.1的torch1.5,和torchvision,遇到问题就解决问题。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

用conda指令conda install pytorch torchvision cudatoolkit=10.1 -c pytorch下载的比较慢,加了清华源了还是很慢,于是我改用pip3 install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html,发现官网给的pip指令下载也很慢导致出现了read time out的问题

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

于是我在网上找了解决方法,在指令后面加上清华源(阿里源或其它源都行),--index https://pypi.tuna.tsinghua.edu.cn/simple/,也就是下载指令变成了pip3 install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html --index https://pypi.tuna.tsinghua.edu.cn/simple/

发现下载速度很给力。成功下载torch,从这里可以看出这次的torch版本信息torch==1.5.0+cu101是支持cuda10.1的意思,torchvision也是。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

九、可以pip list查看是否安装了以及安装的版本信息。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

十、为了解决返回false的问题我又更新了驱动,到440,这步比较简单,就用系统”软件更新“更新的。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤

十一、最后测试是否成功,在终端输入python,然后import torch,print(torch.cuda.is_available())返回True,真的是激动人心的时刻啊!到此战役结束。

torch.cuda.is_available()返回false的解决方法,ubuntu18正确安装cuda10.1的清晰步骤