Pytorch与CUDA版本的关系及安装指南
Pytorch与CUDA版本的关系及安装指南
在深度学习开发中,Pytorch和CUDA的版本兼容性是一个常见的问题。本文将详细介绍如何查看当前环境的CUDA版本、如何使用Python脚本检查Pytorch和CUDA的兼容性,以及如何安装和管理多个CUDA版本。
Pytorch、CUDA和CUDA Toolkit区分
在开始之前,我们先来区分一下几个重要的概念:
- CUDA(Compute Unified Device Architecture):这是NVIDIA开发的一套并行计算平台和编程模型,允许开发者利用GPU进行通用计算。
- CUDA Toolkit:这是一个完整的开发工具包,包含了进行CUDA程序开发所需的编译器、库、头文件等。
- Driver API CUDA:这是通过显卡驱动提供的CUDA版本,主要通过
nvidia-smi
命令查看。 - Runtime API CUDA:这是通过
nvcc --version
命令查看的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版本与之对应。
可以查看pytorch官网对应的版本兼容性信息:https://pytorch.org/get-started/previous-versions/
pytorch选择CUDA版本的顺序
Pytorch在选择CUDA版本时,会优先考虑系统中已安装的Runtime API cudatoolkit版本。如果系统中没有安装合适的cudatoolkit版本,Pytorch会尝试使用Driver API CUDA版本。因此,在安装Pytorch时,需要确保系统中已经安装了兼容的CUDA版本。
安装需要的CUDA,多版本共存和自由切换
建议使用虚拟环境来管理不同版本的CUDA,避免版本冲突。安装CUDA时,选择runfile类型,不要选择驱动、kernel objects和nvidia-fs。如果遇到nvidia错误,可以参考以下链接进行处理: