我用的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。
在终端输入nvidia-smi查看信息,看到驱动版本和对应的cuda。
二、于是我去官网下载cuda10.1版本,但是最新的cuda是10.2,比驱动对应的版本高,应该不能用,我要下10.1所以要找以前的cuda版本下载,下载和安装步骤我写在另一篇当中,这里不重复说了,见https://blog.csdn.net/bird11111/article/details/105746686下载各版本cuda,下载以前版本的cuda。
网站能看到这个cuda和驱动对应的信息,可以看到我430的驱动对应的最高版本的cuda就是10.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,所以这两句配置很重要。
有的博客里说要降gcc,但不一定都需要,以可看图对比,比如如果是ubuntu18则对应的gcc是7.3.0,我看了我的gcc是7.3.0,终端里输入python可以看到gcc版本,所以不用多此一举。
六、安装配置好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和torchvsion,直接在终端pip uninstall torch和pip uninstall torchvision
八、然后用官网给的指令老老实实安装了对应cuda10.1的torch1.5,和torchvision,遇到问题就解决问题。
用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的问题
于是我在网上找了解决方法,在指令后面加上清华源(阿里源或其它源都行),–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也是。
九、可以pip list查看是否安装了以及安装的版本信息。
十、为了解决返回false的问题我又更新了驱动,到440,这步比较简单,就用系统”软件更新“更新的。
十一、最后测试是否成功,在终端输入python,然后import torch,print(torch.cuda.is_available())返回True,真的是激动人心的时刻啊!到此战役结束。