CUDA capability sm_86 is not compatible with the current PyTorch(安装DRIVER 多个CUDA CUDNN PYTORCH )

环境

ubuntu20.04 RTX3080
conda虚拟环境

问题描述

使用pytorch时遇到报错:

UserWarning: NVIDIA GeForce RTX 3080 with CUDA capability sm_86 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75 compute_37.
If you want to use the NVIDIA GeForce RTX 3080 GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/

原因

显卡算力与CUDA toolkit版本不匹配

环境配置顺序

1.根据driver选择cuda
2.根据cuda选择pytorch
3.根据pytorch选择python
三者关系层层递进确定所需的python、cuda、pytorch版本。

深究:

官网1查询所用显卡的算力

如下图,我的是3080(同样适合笔记本显卡、非游戏显卡),算力是8.6,即8.X
在这里插入图片描述

官网2查询算力所对应的CUDA toolkit版本

此处没有明说,1.4.2节提到 CUDA Toolkit 11.0满足8.0算力(实际应该是8.X的意思,因为没有8.0算力的显卡)
这篇博客有对应的表格,可以参考。从而选择需要的CUDA toolkit版本,我选择11.7.

官网3查询CUDA toolkit对应的显卡驱动版本

请添加图片描述
可以发现11.7的CUDA需要515.43.04以上的显卡驱动,

安装

在 软件和更新 中的 附加驱动 处安装所需的驱动

这里的515具体版本是515.86.01满足要求,也可以选择更高版本。
请添加图片描述
可以在终端输入以下代码来检查,第一行就是驱动版本:

nvidia-smi

请添加图片描述

安装对应的CUDA toolkit

包括系统环境中的CUDA toolkitconda虚拟环境中的CUDA toolkit,方法很多,我就不一一介绍了。我的安装方法:
系统环境中:
官网方法(第一个CUDA):请添加图片描述
根据得到的命令在终端安装

conda环境中:

conda search cudatoolkit
conda install cudatoolkit==(所需版本)
conda install cudatoolkit==11.7# 举例,从官网可在后面加上 -c nvidia 

系统环境中安装多个CUDA

第一个CUDA安装见上一条
后续还需要安装仍然通过官网
请添加图片描述
根据得到的命令行安装。
可以通过ls /usr/local/ | grep cuda命令行检查是否成功安装了CUDA
但是环境还需要配置:

命令行输入gedit ~/.bashrc,在弹出窗口最下方注释掉#cuda下方的内容并添加:

# ${版本号}更改为CUDA版本 如11.7
export LD_LABRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-${版本号}/lib64
export PATH=$PATH:/usr/local/cuda-${版本号}/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-${版本号}
export PATH=/usr/local/cuda/bin:$PATH

source ~/.bashrc使配置生效,然后用nvcc -V检查环境是否配置成功

安装对应的pytorch

pytorch官网中找到相应的命令进行安装,Pytorch和CUDA对应的版本及Pytorch和Python对应的版本及Python与Anaconda的对应关系中提到了pytorch版本与cuda版本、python版本的关系。
卸载注意:
使用conda list查看pytorch版本并使用 conda uninstall pytorch卸载,如果发现卸载后还能查询torch版本,可以使用pip list查看是否存在torch并使用pip uninstall torch卸载。

系统环境中安装CUDNN(与报错问题无关,记录下环境配置)

文档中检查所需要的版本:
请添加图片描述
然后在CUDNN官网,需要注册和填写问卷,选择Local installer for Linux x86_64(Tar)下载。
请添加图片描述

#  ${cudnn版本}更改为CUDNN版本  即下载文件名称 如8.9.7.29  
#  ${cuda版本}更改为CUDA版本 如cuda11
#  在下载的文件夹内打开终端
tar -xvf cudnn-linux-x86_64-${cudnn版本}_${cuda版本号}-archive.tar.xz
sudo cp cudnn-linux-x86_64-${cudnn版本}_${cuda版本号}-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -p cudnn-linux-x86_64-${cudnn版本}_${cuda版本号}-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

参考了这篇博客,个人认为最简单的方法。
这些命令的作用是将cuDNN的头文件和库文件复制到CUDA的安装目录下,并修改它们的权限。让CUDA能够调用cuDNN的函数和算法,从而加速深度神经网络的计算。
cuDNN的安装并不需要执行任何可执行文件或脚本,只需要将它的头文件和库文件放到合适的位置,让CUDA能够找到它们就可以了。

cuDNN是一个用于深度神经网络的GPU加速库,它提供了一些高效的算法,如卷积、矩阵乘法、池化等https://zhuanlan.zhihu.com/p/99880204?from_voters_page=true。cuDNN的安装并不需要执行任何可执行文件或脚本,只需要将它的头文件和库文件放到合适的位置,让CUDA能够找到它们就可以了

注意

1.在系统中和conda虚拟环境中都可以安装CUDA toolkit,但是系统中安装的版本必须比虚拟环境中更新,原因:虚拟环境中cuda最重要的内核驱动它并没有安装,无论虚拟环境安装哪个版本的cudatoolkit,都会调用系统的cuda内核。
2.CUDA toolkit可以向下兼容,所以可以用新版本替换旧版本。
3.pytorch和cuda也有对应关系,所以建议下载cuda对应的新版本,但是pytorch1.X版本间存在一些兼容问题,需要更改API接口等。
4.关于pytorch调用的cuda版本问题,可以参考这篇博客

参考博客

显卡算力、驱动版本、CUDA、pytorch之间的关系
深入浅出pytorch笔记——第一章
cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version解决
Ubuntu cudnn安装
【深度学习】ubuntu18.04环境配置详细教程

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值