【踩坑】Pytorch与CUDA版本的关系及安装

Pytorch、CUDA和CUDA Toolkit区分

本文参考
https://www.bilibili.com/opus/926860762897448993

一文讲清楚CUDA、CUDA toolkit、CUDNN、NVCC关系

显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么

查看当前环境常用

shell命令

bash 复制代码
# 显卡驱动信息,主要看driver API的CUDA版本,即Runtime API CUDA支持的最高版本
nvidia-smi

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

# 查看安装了几个CUDA,当前使用哪个版本的CUDA
ll /usr/local/

# 查看已安装的包的版本
conda list | grep cuda
conda list | grep torch

python脚本

bash 复制代码
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

Driver API CUDA(nvidia-smi)

Nvidia 官方提供安装的 CUDA Toolkit 包含了进行 CUDA 相关程序开发的编译、调试等过程相关的所有组件。

driver API级别的CUDA Toolkit和Nvidia Driver的关系可以不太在意

系统的Nvidia Driver决定着系统最高可以支持什么版本的driver API cuda和cudatoolkit,Nvidia Driver是向下兼容的,详情如下(见Nvidia Driver和driver API Cuda对应关系)

可以通过

bash 复制代码
nvidia-smi

查看NVIDIA GPU 的运行状态,包括Driver Version,左边的NVIDIA-SMI和Driver Version不一致大概率是因为这是子系统,一般是一致的,右边显示了系统的CUDA Version(对于我们使用pytorch来说这个driver API CUDA Version向下兼容torch对应的Runtime API CUDA Version)

这里是系统安装的cuda,它是由Nvidia官方提供的(/usr/local/cuda就是系统安装的cuda的软链接)

Runtime API CUDA(nvcc --version)

对于 Pytorch 之类的深度学习框架而言,其在大多数需要使用 GPU 的情况中只需要使用 CUDA 的动态链接库支持程序的运行( Pytorch 本身与 CUDA 相关的部分是提前编译好的 ),就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。

Anaconda 在安装 Pytorch 等会使用到 CUDA 的框架时,会自动为用户安装对应版本的 Runtime API cudatoolkit,其主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。在安装了 Runtime API cudatoolkit 后,只要系统上存在与当前的Runtime API cudatoolkit 所兼容的 Nvidia 驱动,则已经编译好的 CUDA 相关的程序就可以直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit .

pytorch和cudatoolkit版本并不是一一对应的关系,一个pytorch版本可以有多个cudatoolkit版本与之对应。例如1.5.1版本的pytorch,既可以使用9.2版本的cudatoolkit,也可以使用10.2版本的cudatoolkit。

可以查看pytorch官网对应的https://pytorch.org/get-started/previous-versions/

只指定pytorch版本来安装不一定是能work的,例如执行conda install pytorch=X.X.X -c pytorch时,conda会自动为你选择合适版本的 Runtime API cudatoolkit。但conda只能保证你的pytorch和cudatoolkit版本一定是对应的,但并不能保证pytorch可以正常使用,因为系统的Nvidia Driver有可能不支持你所安装的cudatoolkit版本。

所以,除非你对你的Nvidia driver版本很有自信,否则,还是先查看系统Driver API CUDA的版本

当然,如果你对pytorch版本有特别的要求,你可以同时指定pytorch和cudatoolkit的版本。如果这两个版本不能兼容,系统会报错

bash 复制代码
conda install pytorch=1.5.1 cudatoolkit=9.0 -c pytorch


Solving environment: failed

UnsatisfiableError: The following specifications were found to be in conflict:
  - cudatoolkit=9.0 -> __cuda[version='>=9.0']
  - pytorch=1.5.1
Use "conda info <package>" to see the dependencies for each package.

pytorch选择CUDA版本的顺序

参考cuda和cudatoolkit

安装需要的CUDA,多版本共存和自由切换

其实建议还是使用虚拟环境,不要安装多版本CUDA

参考安装需要的CUDA,多版本共存和自由切换

注意:

安装包类型要选择runfile,其它二者据说会有一些自动升级的行为,比较麻烦。

实际安装过程中,我选择了驱动,但是没选择kernel objects、nvidia-fs

可能会报nvidia的错误,看下面的处理

https://zhuanlan.zhihu.com/p/642632372

https://blog.csdn.net/hjxu2016/article/details/135128492

相关推荐
M1A129 分钟前
Python数据结构操作:全面解析与实践
后端·python
Jamence29 分钟前
多模态大语言模型arxiv论文略读(110)
论文阅读·人工智能·语言模型·自然语言处理·论文笔记
扑克中的黑桃A34 分钟前
Python-打印杨辉三角
python
袁庭新1 小时前
使用扣子+飞书+DeepSeek搭建批量提取公众号文章内容并改写的智能体
人工智能·aigc·coze
黑心萝卜三条杠1 小时前
解码微生物适应性的关键:基因组序列与栖息地预测的深度关联
人工智能
黑心萝卜三条杠1 小时前
Everywhere Attack:通过多目标植入提升对抗样本的目标迁移性
人工智能
程序员三藏2 小时前
如何使用Jmeter进行压力测试?
自动化测试·软件测试·python·测试工具·jmeter·测试用例·压力测试
carpell2 小时前
【语义分割专栏】3:Segnet原理篇
人工智能·python·深度学习·计算机视觉·语义分割
24K纯学渣2 小时前
Python编码格式化之PEP8编码规范
开发语言·ide·python·pycharm
怒视天下2 小时前
零基础玩转Python生物信息学:数据分析与算法实现
开发语言·python