Pytorch与CUDA版本关系及安装指南
Pytorch与CUDA版本关系及安装指南
在使用Pytorch进行深度学习开发时,CUDA版本的兼容性是一个常见的问题。本文将详细介绍如何查看当前环境的CUDA版本、如何使用Python脚本检查Pytorch与CUDA的兼容性、以及如何安装和管理多个CUDA版本。
Pytorch、CUDA和CUDA Toolkit区分
- 查看当前环境常用
- shell命令
- python脚本
- Driver API CUDA(nvidia-smi)
- Runtime API CUDA(nvcc --version)
- pytorch选择CUDA版本的顺序
- 安装需要的CUDA,多版本共存和自由切换
查看当前环境常用
shell命令
# 显卡驱动信息,主要看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脚本
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
Driver API CUDA(nvidia-smi)
Nvidia 官方提供安装的 CUDA Toolkit 包含了进行 CUDA 相关程序开发的编译、调试等过程相关的所有组件。driver API级别的CUDA Toolkit和Nvidia Driver的关系可以不太在意。系统的Nvidia Driver决定着系统最高可以支持什么版本的driver API cuda和cudatoolkit,Nvidia Driver是向下兼容的。
可以通过以下命令查看NVIDIA GPU 的运行状态:
nvidia-smi
Runtime API CUDA(nvcc --version)
对于 Pytorch 之类的深度学习框架而言,其在大多数需要使用 GPU 的情况中只需要使用 CUDA 的动态链接库支持程序的运行。Anaconda 在安装 Pytorch 等会使用到 CUDA 的框架时,会自动为用户安装对应版本的 Runtime API cudatoolkit。
pytorch和cudatoolkit版本并不是一一对应的关系,一个pytorch版本可以有多个cudatoolkit版本与之对应。例如1.5.1版本的pytorch,既可以使用9.2版本的cudatoolkit,也可以使用10.2版本的cudatoolkit。
可以查看pytorch官网对应的版本兼容性列表。只指定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的版本。如果这两个版本不能兼容,系统会报错:
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的错误,看下面的处理: