【踩坑】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

相关推荐
从以前21 分钟前
python练习之“用 Python 的 Pygame 库创建五子棋游戏”
开发语言·python·游戏·pygame
Srlua38 分钟前
基于LSTM的情感分析
人工智能·python
乐茵安全1 小时前
基于python对pdf文件进行加密等操作
java·前端·python
我是阿萌1 小时前
案例讲解自然语言处理(NLP)
人工智能·学习·算法·自然语言处理
engchina1 小时前
音频数据采样入门详解 - 给Python初学者的简单解释
python·音视频
weixin---lwxmw88991 小时前
AI视频配音技术创新应用与商业机遇
人工智能
凡解2 小时前
24秋:数据采集-期末复习题:选择填空判断
python
湫ccc2 小时前
Python连接MySQL数据库教程
开发语言·python·mysql
AIWhispers2 小时前
Word2Vec:将词汇转化为向量的技术
人工智能·自然语言处理·word2vec
普密斯科技2 小时前
3D工具显微镜的测量范围
人工智能·计算机视觉·3d·自动化·视觉检测·集成测试