当前位置: 首页 > news >正文

ubuntu配置cuda与torch

1 安装CUDA

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

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

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/130dbbc9814c469384e601c59cd447e9.png#pic_center

# 下载 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

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

http://www.dtcms.com/a/392903.html

相关文章:

  • C语言:输出水仙花数
  • 进程的创建
  • 如何用Anaconda Navigator和命令行管理Python库?
  • 28 种 LLM 越狱攻击全景拆解(2025.9 版)从“AIM”到“Generation Exploitation”,一张防御地图看懂所有套路
  • 第14章 智能床位
  • 总结一下MySQL数据库服务器性能优化的几个维度
  • IP 打造财富新机遇
  • linux系统如何查看文件位置在数据盘还是系统盘
  • C#关键字 unchecked与checked
  • EasyClick JavaScript 字符串进阶
  • 小明打砖块-算法
  • 【Open3D】在Conda环境下安装Open3D | Anaconda | VSCode
  • AWS 的存储方案全对比:EBS、S3、EFS 用在哪?
  • 【实证分析】上市公司债务违约风险KMV模型及违约距离(2000-2023年)
  • 【牛客网】dd爱科学 最长非递减子序列 二分查找
  • vmware安装uos v20无法识别网卡
  • 力扣hot100 | 动态规划1 | 70. 爬楼梯、118. 杨辉三角、198. 打家劫舍、279. 完全平方数、322. 零钱兑换
  • 每天五分钟深度学习:softmax回归的交叉熵损失的前向传播
  • leetcode算法刷题的第四十天
  • 算法基础篇(3)高精度
  • Java Log
  • 最常见的MCP服务
  • 如何安装tomcat服务器以及如何解决服务器的乱码问题
  • 软考中级习题与解答——第九章_信息安全(1)
  • 小迪安全v2023学习笔记(八十五讲)—— APP攻防反证书反代理反模拟器绕过XP框架
  • Oracle VM 设置CentOS7网络
  • lua代码解析1
  • C++特性之构造函数,析构函数和虚析构函数
  • 走进Linux的世界:gdb的使用
  • SCADE One vs Scade 6 - CNN池化层建模对比