解决Pytorch的版本问题
1. 背景介绍2. 解决方案3. 相关资料
1. 背景介绍
最近,笔者在跑代码时,出现了如下问题。翻译过来,大意是目前所使用的RTX 3090的显卡的算力是8.6,而当前Pytorch所依赖的CUDA版本支持的算力只有3.7、5.0、6.0、6.1、7.0、7.5。
UserWarning: NVIDIA GeForce RTX 3090 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.
经查询得知,RTX 3090的显卡一般要安装11以上的CUDA版本及对应的Pytorch版本。
2. 解决方案
升级CUDA版本,然后安装与CUDA版本相对应的Pytorch。
第一步,笔者首先安装了11.6版本的CUDA,具体安装步骤,可以点这里。
第二步,进Pytorch官网,查询与CUDA版本相对应的Pytorch安装命令,如下:
第三步,进入到自己的虚拟环境中,执行上述命令,如下,这个过程比较漫长,不过等等应该是可以成功的。
完成上述三步,再跑代码就不会出现之前的问题了。
3. 相关资料
虽然,笔者参考网上的一些教程解决了问题,但是在深入查阅资料的过程中,发现对CUDA底层并不是很清楚,如果下面说的不对,希望大家指正!下面这些都是:虽然我没理解,但多少对我还是有所帮助的一些文档,我在阅读的同时顺便罗列在这里,以便大家查阅,及我日后的回顾。
适用于 CUDA 应用程序的 NVIDIA Ampere GPU 架构兼容性指南:https://docs.nvidia.com/cuda/ampere-compatibility-guide/。大致意思为:显卡的算力要高于CUDA的算力,并且在一般情况下,两者的算力应该在同一个版本下。例如,RTX 2080 Ti显卡的算力为7.5,那么在装CUDA时,应该装算力为7.X的CUDA,且7.5≥7.X。以笔者的经验来看,RTX 2080 Ti的显卡装CUDA Toolkit 10.x就行,RTX 3090的显卡装CUDA 11系列的就可以。
显卡的编译过程:https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#virtual-architectures
CUDA架构及对应编译参数:https://www.cnblogs.com/phillee/p/12049208.html
nvcc的code、arch、gencode选项:https://zhengqm.github.io/blog/2018/12/07/cuda-nvcc-tips.html