1 安装CUDA

以安装 CUDA 12.1.1为例
在这里插入图片描述
其实安装cuda tookit就是安装cuda,但是一个很搞的点就是从cuda的previous release选择deb方式下载的会默认再给你装一个nvdia driver,导致本地的和新装的同时存在,发生冲突,导致nvcc -V输出无法通信的错误。

此时建议使用下载sh指令的方法,这种会让你选择是否安装nvidia driver,从而避免了多内核冲突。

在这里插入图片描述

# 下载 CUDA Toolkit 安装包
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run

# 安装 CUDA Toolkit
sudo sh cuda_12.1.1_530.30.02_linux.run

等待片刻会出现下面的提示,该提示是说是否放弃系统原来装的内核而使用此安装包推荐的内核。注意:这里一定要选择continue,我们继续选择自己系统原内核,否则会遇到很多兼容性问题。
在这里插入图片描述
再接下来取消勾选安装推荐内核(使页面与我下面保持一致):
在这里插入图片描述此外,还需要添加环境变量,我安装的是cuda-12.1,这里根据安装的cuda版本自行更改下面的配置, vim ~/.bashrc:

export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
source ~/.bashrc 
nvcc -V

我的输出是:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Mon_Apr__3_17:16:06_PDT_2023
Cuda compilation tools, release 12.1, V12.1.105
Build cuda_12.1.r12.1/compiler.32688072_0

2 查看当前环境信息

2.1 使用bash查看

# 显卡驱动信息,主要看CUDA支持的最高版本
nvidia-smi

在这里插入图片描述

# 当前使用的CUDA的版本
nvcc -V

在这里插入图片描述

which nvcc

在这里插入图片描述

# 查看安装了几个CUDA,当前使用哪个版本的CUDA
ll /usr/local/ 
# ll是 ls -l 命令的别名
#以长格式(详细列表) 显示当前目录下的文件和目录信息,包括:
    # 文件类型(开头的字母,如 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

核心步骤:

  1. 根据GPU型号,去官网CUDA GPUs上去查询版本号,下图1中显示,RTX 3090的计算能力架构版本号是8.6,对应sm_86。其中8是主版本号,6是次版本号。
  2. 仍然是上面的网页中,点链接进去,可查看到该GPU的架构。比如RTX 3090架构为Ampere
  3. 根据架构,从下图2中查到CUDA版本范围,比如Ampere为CUDA 11.0-12.2
  4. 项目一般会指定PyTorch版本,然后去PyTorch官网Start Locally | PyTorch找到PyTorch和CUDA的交集,选择CUDA最高的(运算更快)
  5. 官方提供的一般是pip方式安装,如果慢,可尝试换源、代理等方式。
  6. 除了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

Logo

欢迎来到FlagOS开发社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐