torch.cuda.is_available()结果为false

我猜测是显卡驱动,cuda,pytorch不匹配(很可能是cuda版本高,显卡驱动版本低)
先查看驱动版本 nvidia-smi 发现是384.130
然后查看cuda版本
1、我直接用conda list查看cudatoolkit发现是cuda版本是10
2、用nvcc -V查看,结果命令运行不了让我安装东西,我稀里糊涂复制了提示里的命令,安装完毕后用nvcc -V查看发现cuda是7
3、用cat /usr/local/cuda/version.txt 命令查看发现版本是9
torch.cuda.is_available()结果为false_第1张图片
我靠,怎么三种情况,记得我最开始安装的是cuda9啊,应该是后来我conda upgrade all的时候更新了变成10了,没想到9和10共存了,,,至于7,我觉得可能是刚刚用nvcc -V的时候稀里糊涂安装上的。
但是为啥我使用三种命令查出来不一样

看了这个博客
torch.cuda.is_available()结果为false_第2张图片
还是不知道该咋整
后来看了这个博客好像说是环境变量没配好的原因。我就按照他的在bashrc里面加了两行,再重新试试,结果就如下了
torch.cuda.is_available()结果为false_第3张图片
nvcc 和cat 命令查出来的都是9了
我以为我成功了,结果试了试
torch.cuda.is_available()结果为false_第4张图片
GPU还是不能用

我现在想把cudatoolkit给卸载。
实在不行就把所有cuda,cudnn全部卸载重新装

慢着,我现在又发现了这篇文章
哎,还是不行
我现在打算升级显卡驱动

第二天:我没有升级显卡驱动,我现在知道了安装anaconda之前就安装过cuda9.0和cudnn
安装完anaconda以后,使用conda list会发现里面有cudatoolkit和cudnn,那么之前安装的cuda和cudnn是不是多余了呢?
在知乎上搜了一下,原来不是的,说是anaconda里面自带的cudatoolkit和cudnn不完整,一些功能可能不齐全。

后来我想我安装anaconda之前安装的是cuda9.0,安装pytorch时也是指定的cuda9.0的pytorch,结果因为做《动手学深度学习》的3.2节,使用了conda upgrade --all,把anaconda自带的cudatoolkit升级到了10,很有可能是这个原因导致的cuda版本过高,和安装anaconda之前的安装的cuda9.0不一致或者驱动版本过低,反正cudatoolkit应该保持9.0才对
我决定试验一下
新建mynewtorch环境,Python为3,然后安装Python,cuda指定9.0,conda list结果如下
在这里插入图片描述
然后我使用
source activate mynewtorch
python
import torch
print("torch.cuda.is_available())
进行测试,成功返回true!!!
torch.cuda.is_available()结果为false_第5张图片

看来真的极有可能是cudatoolkit版本过高的原因,继续试验
执行conda upgrade --all
提示我将要把pytorch从1.1.0升级到1.2.0
把cudatoolkit从9.0升级到10.0
我选择升级
torch.cuda.is_available()结果为false_第6张图片
现在变成了cudatoolkit10在这里插入图片描述
下面测试在cudatoolkit为10.的情况下能否使用gpu,结果变成了false,破案了!
torch.cuda.is_available()结果为false_第7张图片

我利用 conda list -r查询环境的历史版本
进行回滚,回到升级之前的状态可以看到rev 0是新建完mynewtorch环境的版本
rev 1是安装完cuda9.0 和pytorch1.1.0 的版本
rev 2是升级之后的版本
torch.cuda.is_available()结果为false_第8张图片
所以我用conda install --revision 1回滚到之前版本
torch.cuda.is_available()结果为false_第9张图片
并进行测试
如下,成功回滚
torch.cuda.is_available()结果为false_第10张图片
牛逼!
问题来了,当初更新所有包是为了解决某个bug,成功解决了那个bug
结果导致了版本不一致引起的gpu不可用bug
我现在又降级结局了使用gpu的bug
那之前的bug怎么搞???
conda upgrade --all这条命令太危险了吧!
怎么搞!!!???

你可能感兴趣的:(torch.cuda.is_available()结果为false)