解决 NVIDIA GeForce XXXX with CUDA capability sm_86 is not compatible with the current 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查询所用显卡的算力

如下图,我的是3080(同样适合笔记本显卡、非游戏显卡),算力是8.6,即8.X
解决 NVIDIA GeForce XXXX with CUDA capability sm_86 is not compatible with the current PyTorch。。。。_第1张图片

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

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

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

解决 NVIDIA GeForce XXXX with CUDA capability sm_86 is not compatible with the current PyTorch。。。。_第2张图片
可以发现11.7的CUDA需要515.43.04以上的显卡驱动,

安装

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

这里的515具体版本是515.86.01满足要求,也可以选择更高版本。
解决 NVIDIA GeForce XXXX with CUDA capability sm_86 is not compatible with the current PyTorch。。。。_第3张图片
可以在终端输入以下代码来检查,第一行就是驱动版本:

nvidia-smi

解决 NVIDIA GeForce XXXX with CUDA capability sm_86 is not compatible with the current PyTorch。。。。_第4张图片

安装对应的CUDA toolkit

包括系统环境中的CUDA toolkitconda虚拟环境中的CUDA toolkit,方法很多,我就不一一介绍了。我的安装方法:
conda环境中:conda install cudatoolkit=11.7 -c nvidia
系统环境中:官网方法。

安装对应的pytorch

在pytorch官网中找到相应的命令进行安装,Pytorch和CUDA对应的版本及Pytorch和Python对应的版本及Python与Anaconda的对应关系中提到了pytorch版本与cuda版本、python版本的关系。

注意

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解决

你可能感兴趣的:(pytorch,python)