
无论是本地环境,还是云GPU环境,基本都事先装好了pytorch、cuda,想运行一个新项目,到底版本是否兼容?
解决思路: 从根本上出发:GPU、项目对pytorch的版本要求
最理想状态:如果能根据项目,直接选择完美匹配的平台,丝滑启动。
在我安装pytorch3d时,cuda版本不对,报错:
要解决这个问题,需要先了解当前环境的信息,然后根据GPU和项目版本要求推算出合适的版本,再安装。具体如下:
# 显卡驱动信息,主要看CUDA支持的最高版本
nvidia-smi
# 当前使用的CUDA的版本
nvcc -V
# 查看安装了几个CUDA,当前使用哪个版本的CUDA
ll /usr/local/
# 查看已安装的包的版本
conda list | grep cuda
conda list | grep torch 2.2 使用py脚本查看
vim version.py
import torch
print(torch.__version__) # 查看torch版本
print(torch.cuda.is_available()) # 看安装好的torch和cuda能不能用,也就是看GPU能不能用
print(torch.version.cuda) # 输出一个 cuda 版本,注意:上述输出的 cuda 的版本并不一定是 Pytorch 在实际系统上运行时使用的 cuda 版本,而是编译该 Pytorch release 版本时使用的 cuda 版本,详见:https://blog.csdn.net/xiqi4145/article/details/110254093
import torch.utils
import torch.utils.cpp_extension
print(torch.utils.cpp_extension.CUDA_HOME) #输出 Pytorch 运行时使用的 cuda 3 推算合适的pytorch和cuda版本
安装CUDA过程并不难,主要是理解CUDA、cudatoolkit以及3个cuda版本的关系。理解到位之后,安装就是落地而已。在边踩坑边学习的过程中,学到以下文章:
如何解决PyTorch版本和CUDA版本不匹配的关系 - 知乎 (zhihu.com)
https://zhuanlan.zhihu.com/p/633473214
核心步骤:
根据GPU型号,去官网CUDA GPUs上去查询版本号,下图1中显示,RTX 3090的计算能力架构版本号是8.6,对应sm_86。其中8是主版本号,6是次版本号。
仍然是上面的网页中,点链接进去,可查看到该GPU的架构。比如RTX 3090架构为Ampere
根据架构,从下图2中查到CUDA版本范围,比如Ampere为CUDA 11.0-12.2
项目一般会指定PyTorch版本,然后去PyTorch官网Start Locally | PyTorch找到PyTorch和CUDA的交集,选择CUDA最高的(运算更快)
官方提供的一般是pip方式安装,如果慢,可尝试换源、代理等方式。
除了pip安装方式,也可以whl方式下载离线安装包:
以Windows下为例。
假设在pytorch获得的pip安装命令为:
pip install torch===1.7.0+cu110 torchvision===0.8.1+cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
如何获取whl离线安装包并安装?
下载地址:https://download.pytorch.org/whl/torch_stable.html,下载以下安装包:
torch-1.7.0+cu110-cp37-cp37m-win_amd64.whl
torchvision-0.8.1+cu110-cp37-cp37m-win_amd64.whl
torchaudio-0.7.0-cp37-none-win_amd64.whl
注意:cu110表示CUDA是11.0版本的,cp37表示python3.7,win表示windows版本,具体选择什么版本,可以参考上图中的“Run this Command”。
安装方法:进入离线安装包所在位置,然后“shift+鼠标右键”,然后选择“在此处打开powershell窗口”,最后输入“pip install torch-1.7.0+cu110-cp37-cp37m-win_amd64.whl”,即输入“pip install xxxx.whl”。
有可能会出现[winError]拒绝访问的错误提示,并且要求你添加“--user”,你可以这样输入:"pip install xxxx.whl --user"


进一步,你有必要深入了解一下cuda、cudatoolkit以及多版本cuda共存时pytorch调用哪个 cuda和cudatoolkit-CSDN博客
https://blog.csdn.net/xiqi4145/article/details/110254093
了解完了以上知识,那么你需要的是:安装需要的CUDA,多版本共存,并自由切换! 【多版本cuda自由切换】在ubuntu上安装多个版本的CUDA,并且可以随时切换cuda-11.3//cuda-11.8//cuda-11.6//cuda-11.2_ubuntu切换cuda-CSDN博客
https://blog.csdn.net/BetrayFree/article/details/134870198
注意:
安装包类型要选择runfile,其它二者据说会有一些自动升级的行为,比较麻烦。
实际安装过程中,我选择了驱动,但是没选择kernel objects、nvidia-fs
可能会报nvidia的错误,看下面的处理
在安装过程中,会遇到报错,nvidia驱动需要卸载,参考: CUDA、驱动安装与踩坑记录 - 知乎 (zhihu.com) ubuntu升级NVIDIA驱动,遇到ERROR: An NVIDIA kernel module ‘nvidia-uvm‘ appears to already be loaded in your_error: an nvidia kernel module 'nvidia' appears to-CSDN博客
https://zhuanlan.zhihu.com/p/642632372
https://blog.csdn.net/hjxu2016/article/details/135128492