ubuntu系统pytorch中cuda提示因为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的话,进入你创建的环境,具体命令行语句如下:
在这里插入图片描述
一般出现True就说安装好了,可以用了。但实际不是这样,还需要实践一下代码,如下:

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

如果显示和我一样,那说明确实能用了,如果不行的话,那就需要重新装pytorch,下调pytorch的版本。
在这里插入图片描述

问题3 GPU用不了

在这里插入图片描述
从提示中我们可以看到这几个数字。其中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。
请添加图片描述
装完这个版本的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,得到如下,
在这里插入图片描述
在这里插入图片描述

可以看到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.youkuaiyun.com/weixin_45021364/article/details/104600802
问题:GPU算力太低,和我一样是3.0或者更低的,有安装pytorch用source的方法,这里放个链接,
链接:https://blog.youkuaiyun.com/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
`
<think>好的,我现在需要解决用户的问题:在Ubuntu系统上,PyTorchCUDA版本虽然匹配,但无法正常使用。根据用户提供的三个引用内容,我需要结合这些信息来分析可能的原因和解决方案。 首先,用户提到安装了Ubuntu 22.04,但推荐使用20.04,因为CUDA 11.3和PyTorch 1.10更兼容[^1]。这可能意味着在较新的Ubuntu版本中,驱动或库的版本可能存在兼容性问题。另一个引用指出,安装过程中可能出现分辨率问题、登录循环或CUDA调用失败[^2],这可能与NVIDIA驱动安装不正确有关。第三个引用提到需要检查PyTorch官网的版本对应关系,并正确安装CUDA和cuDNN[^3]。 接下来,我需要考虑可能的原因: 1. **驱动问题**:虽然CUDA版本正确,但NVIDIA驱动可能未正确安装或版本不兼容。例如,某些CUDA版本需要特定版本的驱动支持。 2. **系统环境冲突**:可能存在多个CUDA版本,导致PyTorch使用了错误的路径。或者,conda环境中的CUDA系统安装的CUDA冲突。 3. **cuDNN未正确安装**:PyTorch依赖cuDNN,如果未正确安装或链接,可能导致无法使用GPU。 4. **内核模块问题**:NVIDIA内核模块未加载,可能与Secure Boot或DKMS配置有关。 5. **PyTorch安装问题**:可能通过pip或conda安装时未正确指定CUDA版本,导致实际安装的PyTorch版本不带CUDA支持。 然后,解决方案需要针对这些可能的原因逐一排查: - 检查NVIDIA驱动状态,使用nvidia-smi和nvcc --version确认驱动和CUDA版本是否一致。 - 验证PyTorch是否能检测到CUDA,通过torch.cuda.is_available()。 - 确保cuDNN正确安装,可以通过测试样例或检查库文件。 - 处理环境变量问题,如PATH和LD_LIBRARY_PATH是否正确设置。 - 重新安装PyTorch,并指定正确的渠道和版本,避免依赖冲突。 另外,用户提到的登录循环问题[^2]可能与驱动安装方式有关,比如使用apt安装的驱动可能比.run文件更稳定。同时,确保系统更新后没有破坏原有的驱动或库,需要重新配置。 最后,结合引用中的建议,安装步骤可能需要严格按照教程,特别是Ubuntu版本和CUDA版本的搭配。可能还需要检查是否有其他软件或库干扰,比如Xorg配置问题导致驱动无法正常加载。</think>### PyTorchCUDA版本匹配但无法使用的原因及解决方案 #### 一、可能原因分析 1. **NVIDIA驱动未正确安装或版本冲突** - 系统可能安装了多个驱动版本,或驱动与当前内核不兼容(例如未启用`nouveau`禁用或未配置DKMS)。 - 验证方法:终端输入`nvidia-smi`,若报错或未显示GPU信息,则驱动异常。 2. **CUDAPyTorch的依赖库不匹配** - 虽然PyTorchCUDA版本对应,但可能缺少关键组件(如cuDNN、NCCL)或版本不兼容。 - 例如:CUDA 11.3需搭配cuDNN 8.2.x,而安装时可能误选其他版本。 3. **环境变量配置错误** - CUDA路径未加入`LD_LIBRARY_PATH`或`PATH`,导致PyTorch无法找到动态链接库。 - 检查命令:`echo $LD_LIBRARY_PATH`,应包含`/usr/local/cuda/lib64`。 4. **PyTorch安装渠道问题** - 通过`pip`安装的PyTorch可能未包含CUDA支持,需从官方渠道指定CUDA版本。 - 例如:`conda install pytorch torchvision cudatoolkit=11.3 -c pytorch`。 --- #### 二、逐步解决方案 1. **验证驱动与CUDA状态** - 运行以下命令确认驱动和CUDA版本: ```bash nvidia-smi # 显示驱动支持CUDA最高版本 nvcc --version # 显示当前CUDA编译器版本 ``` - 若两者版本不一致(如`nvidia-smi`显示CUDA 12.2,而`nvcc`显示11.3),需重新安装匹配的驱动[^1]。 2. **检查PyTorchCUDA识别能力** - 在Python中执行以下代码: ```python import torch print(torch.__version__) # 输出PyTorch版本 print(torch.cuda.is_available()) # 应为True ``` - 若返回`False`,则PyTorch未正确绑定CUDA。 3. **修复驱动与CUDA环境** - **步骤1:彻底卸载旧驱动** ```bash sudo apt purge nvidia-* sudo reboot ``` - **步骤2:安装推荐驱动** ```bash sudo ubuntu-drivers autoinstall # 自动选择兼容驱动 sudo apt install nvidia-driver-470 # 或指定版本 ``` - **步骤3:验证驱动加载** ```bash lsmod | grep nvidia # 应显示nvidia相关内核模块 ``` 4. **重装PyTorch并指定CUDA版本** - 使用conda清理环境后重新安装: ```bash conda create -n pytorch_env python=3.9 conda activate pytorch_env conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch ``` - 若使用pip,需明确CUDA版本: ```bash pip3 install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu113 ``` 5. **配置cuDNN与环境变量** - 从[NVIDIA官网](https://developer.nvidia.com/cudnn)下载与CUDA 11.3匹配的cuDNN,解压后复制到CUDA目录: ```bash sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include sudo cp cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn* ``` - 将CUDA库路径加入环境变量: ```bash echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc ``` --- #### 三、验证与调试 1. **运行CUDA测试程序** - 编译并运行CUDA样例代码(如`deviceQuery`): ```bash cd /usr/local/cuda/samples/1_Utilities/deviceQuery sudo make ./deviceQuery ``` - 若输出`Result = PASS`,则CUDA环境正常。 2. **检查PyTorchCUDA功能** - 执行以下代码测试张量计算: ```python import torch x = torch.randn(3,3).cuda() print(x.device) # 应输出cuda:0 ``` --- #### 四、典型问题案例 - **案例1:登录界面循环** **原因**:NVIDIA驱动与Ubuntu桌面环境(如LightDM)冲突。 **解决**:进入TTY终端(Ctrl+Alt+F3),重装驱动并禁用Wayland: ```bash sudo apt install gdm3 sudo dpkg-reconfigure gdm3 # 选择gdm3而非LightDM ``` - **案例2:CUDA版本混杂** **现象**:`conda list`显示CUDA 11.3,但`torch.version.cuda`返回10.2。 **原因**:conda环境中存在多个CUDA工具包。 **解决**:创建纯净环境并指定`cudatoolkit=11.3`。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值