ubuntu系统pytorch中cuda提示因为GPU太老而不再支持

ubuntu系统安装cuda和pytorch

  • 背景
    • 问题1 nvcc -V 不显示cuda版本
    • 问题2 测试cuda能不能用
    • 问题3 GPU用不了
    • 问题4 有两个GPU
    • 还可能报错的问题
    • 用到的命令

背景

ubutu系统,有两块GPU,一个是GPU算力3.5,一个是GPU算力3.0,之前下载安装过cuda,在/usr/local/下有cuda,且在cuda下有nvcc。
运行代码时出现错误:
PyTorch no longer supports this GPU because it is too old.
RuntimeError: CUDA error: no kernel image is available for execution on the device

问题1 nvcc -V 不显示cuda版本

安装好cuda以后,想看看是否安装成功,或者看看版本号,打开命令行窗口,输入nvcc -V,结果提示需要安装cuda。
如果你也和我背景一样的话,/usr/local/cuda/下有nvcc,那可能是没有把该命令路径添加到系统路径中,解决办法:
打开命令行窗口,输入以下三条命令:

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc

此时再输入nvcc -V,应该就有反应了。记得上面的路径要和你自己的匹配,而且在命令行输入的时候一个字符都不能错,/符号也不能丢。(不要问我怎么知道的)

问题2 测试cuda能不能用

cuda 是用来在GPU上运行的,所以需要实际应用一下才能确保到底能不能用。
一般的测试:
安装cuda以后,用anaconda创建一个新环境,安装pytorch,在pytorch中测试。(安装pytorch版本也有问题,建议先看完本文,再实现安装)如果你安装好pytorch的话,进入你创建的环境,具体命令行语句如下:
ubuntu系统pytorch中cuda提示因为GPU太老而不再支持_第1张图片
一般出现True就说安装好了,可以用了。但实际不是这样,还需要实践一下代码,如下:

a = torch.ones((1,1))
a
a = a.cuda(0)

如果显示和我一样,那说明确实能用了,如果不行的话,那就需要重新装pytorch,下调pytorch的版本。
ubuntu系统pytorch中cuda提示因为GPU太老而不再支持_第2张图片

问题3 GPU用不了

ubuntu系统pytorch中cuda提示因为GPU太老而不再支持_第3张图片
从提示中我们可以看到这几个数字。其中3.0说的是你的GPU的算力,但是pytorch支持的GPU算力最少也是3.5,那我们改不了GPU只能改pytorch,所以需要重装pytorch试一下。
通过网上找答案,我看到了这个回答:
从pytorch1.3开始,不再支持GPU的算力在3.5及其以下的显卡
也就是说,pytorch1.3及以上版本不能用于GPU算力在3.5和3.5以下的。所以,从这个网站中看,我们只能先试pytorch 版本1.2,或者1.1,这种比较低的了,但我们也没有能力嫌弃人家。
安装低版本的pytorch需要对应修改其python版本,所以我们在创建环境的时候可以设定python版本,具体命令如下:
conda create --name py4 python=3.7
py4是我的环境的名字,可以改成自己的名字。然后在该环境内安装pytorch,具体安装命令可以到这个网站中找:https://pytorch.org/get-started/previous-versions/
这个时候你已经不需要顾及自己的cuda是哪个版本了,先装pytorch。
ubuntu系统pytorch中cuda提示因为GPU太老而不再支持_第4张图片
装完这个版本的pytorch,再试应该就可以了,如果你是GPU算力在3.5的话,但如果你是GPU算力3.0的话,pytorch 1.2也不行。需要安装更低版本的pytorch,但我们都知道,版本低了,有些功能就更容易出错了,所以1.2是我现在能接受的最低版本了,之后再看出问题的情况吧。
说实话,之前不知道算力这个概念,只知道要下调pytorch版本,然后就从1.10开始几个版本几个版本的调,结果最后还是查到了算力这个概念和1.2版本。但在调的过程中,我是用conda新建了好几个环境,然后不行的话再删掉,关于删掉环境的命令:
conda remove -n pytest2 --all
pytest2是我自己环境的名字。

问题4 有两个GPU

可能有人看到了我上面的GPU算力是3.0,但因为我有两张GPU,所以,其实一开始我是一张算力3.5,一张算力3.0的,我用重新安装的pytorch1.2解决了GPU3.5出现的警告,但还有3.0的错误,基于我不想再下调pytorch版本,我决定就用这一张GPU来运行代码,另一张不用。所以就需要代码中进行设置。先查看GPU的序号,其实这个图中有,但我们还可用命令行来输出一下,命令行窗口输入nvidia-smi,得到如下,
ubuntu系统pytorch中cuda提示因为GPU太老而不再支持_第5张图片
ubuntu系统pytorch中cuda提示因为GPU太老而不再支持_第6张图片

可以看到GPU编号及情况。这里和我上面提示的不一样,提示中GPU1是Quadro K40,用nvidia-smi得到是Quadro K40是0,这个应该就是个列表,列出GPU名单,应该不是序号, 我们按照提示来。所以现在是GPU0可以用,GPU1不能用,那在python代码文件中进行设置就行了,代码中如下:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

这样运行代码就都用的GPU0了,还有这个代码要在每个调用的python文件中都写上,应该就不出错了。

还可能报错的问题

问题:ImportError: cannot import name ‘PILLOW_VERSION’ from ‘PIL’
解决办法:https://blog.csdn.net/weixin_45021364/article/details/104600802
问题:GPU算力太低,和我一样是3.0或者更低的,有安装pytorch用source的方法,这里放个链接,
链接:https://blog.csdn.net/qq_44061014/article/details/122096039
可以再找找资料。

用到的命令

卸载pytorch重装:

conda uninstall pytorch

指定GPU来跑代码:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

conda 创建环境

#打开命令窗口快捷键
Ctrl+Alt+T
#进入conda
source activate
#创建环境
conda create --name 环境名 python = 版本号
#激活进入环境
conda activate 环境名
#退出环境
conda deactivate
#查看已安装环境
conda info --envs
#退出conda
source deactivate
`

你可能感兴趣的:(pytorch,ubuntu,深度学习)