ubuntu配置cuda与torch
1 安装CUDA
以安装 CUDA 12.1.1为例
其实安装cuda tookit就是安装cuda,但是一个很搞的点就是从cuda的previous release选择deb方式下载的会默认再给你装一个nvdia driver,导致本地的和新装的同时存在,发生冲突,导致nvcc -V输出无法通信的错误。
此时建议使用下载sh指令的方法,这种会让你选择是否安装nvidia driver,从而避免了多内核冲突。
 显示当前目录下的文件和目录信息,包括:# 文件类型(开头的字母,如 d 表示目录、l 表示软链接、- 表示普通文件)# 权限(如 rwxr-xr-x)# 硬链接数量# 所有者和所属组# 文件大小# 最后修改时间# 文件名或目录名
# 查看已安装的包的版本
conda list | grep cuda
conda list | grep torch
2.2 使用py脚本查看
下面文件在指定conda环境的运行结果才是代码运行时真正调用的版本
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 版本import torch.utils
import torch.utils.cpp_extension
print(torch.utils.cpp_extension.CUDA_HOME) #输出 Pytorch 运行时使用的 cuda
笔者示例:
上面两例子中 print(torch.version.cuda) 输出的11.6和11.7不是实际运行时调用的版本
实际运行中真正调用的版本(即 本例子中的12.2,也是上一小节使用软链接所指向的版本)是 print(torch.utils.cpp_extension.CUDA_HOME) 输出的
3 推算合适的pytorch和cuda版本
安装CUDA过程并不难,主要是理解CUDA、cudatoolkit以及3个cuda版本的关系。理解到位之后,安装就是落地而已。在边踩坑边学习的过程中,学到以下文章:
3.1 pytorch和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”
3.2 深入了解cuda、cudatoolkit以及多版本cuda共存时pytorch调用哪个
进一步,你有必要深入了解一下cuda、cudatoolkit以及多版本cuda共存时pytorch调用哪个 cuda和cudatoolkit-CSDN博客
https://blog.csdn.net/xiqi4145/article/details/110254093
3.3 安装需要的CUDA,多版本共存,并自由切换!
了解完了以上知识,那么你需要的是:安装需要的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的错误,看下面的处理
3.4 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