我猜测是显卡驱动,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

我靠,怎么三种情况,记得我最开始安装的是cuda9啊,应该是后来我conda upgrade all的时候更新了变成10了,没想到9和10共存了,,,至于7,我觉得可能是刚刚用nvcc -V的时候稀里糊涂安装上的。
但是为啥我使用三种命令查出来不一样
看了这个博客

还是不知道该咋整
后来看了这个博客好像说是环境变量没配好的原因。我就按照他的在bashrc里面加了两行,再重新试试,结果就如下了

nvcc 和cat 命令查出来的都是9了
我以为我成功了,结果试了试

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!!!

看来真的极有可能是cudatoolkit版本过高的原因,继续试验
执行conda upgrade --all
提示我将要把pytorch从1.1.0升级到1.2.0
把cudatoolkit从9.0升级到10.0
我选择升级

现在变成了cudatoolkit10
下面测试在cudatoolkit为10.的情况下能否使用gpu,结果变成了false,破案了!

我利用 conda list -r查询环境的历史版本
进行回滚,回到升级之前的状态可以看到rev 0是新建完mynewtorch环境的版本
rev 1是安装完cuda9.0 和pytorch1.1.0 的版本
rev 2是升级之后的版本

所以我用conda install --revision 1回滚到之前版本

并进行测试
如下,成功回滚

牛逼!
问题来了,当初更新所有包是为了解决某个bug,成功解决了那个bug
结果导致了版本不一致引起的gpu不可用bug
我现在又降级结局了使用gpu的bug
那之前的bug怎么搞???
conda upgrade --all这条命令太危险了吧!
怎么搞!!!???
博主在使用PyTorch时遇到GPU无法使用的问题,经过排查发现是由于CUDA、cuDNN版本与显卡驱动不匹配所致。通过调整环境变量、卸载重装及版本回滚等操作,最终确定问题是由conda upgrade --all命令导致的CUDA版本升级,从而引发的版本不一致。通过创建新环境并指定CUDA版本,成功解决了GPU可用性问题。
4089

被折叠的 条评论
为什么被折叠?



