admin管理员组

文章数量:1646245

文章目录

  • 查看自己电脑支持的cuda信息
    • cuda toolkits与cuda driver
    • nvidia-smi与nvcc -V
      • driver API与runtime API
  • 下载CUDA和cuDNN
    • pytorch与cuda版本对应
    • cuda与cudnn版本对应
  • 安装CUDA和cudnn
    • CUDA
    • cudnn
    • 环境变量配置
    • 安装完成后的验证
  • CUDA多版本切换
  • 下载并安装Pytorch
    • pytorch1.8.2 GPU版安装
    • 检查PyTorch GPU版本是否安装成功
  • 参考

前言:“升级至cuda 不需要将老的cuda版本手动卸载”,在安装新版本后,在默认安装地址下会同时存在多个版本,可进行多版本的切换;如确需卸载,可参考 cuda 和 cudnn 库的卸载与安装或其他博客。

  • cuda默认安装地址:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\
  • 本机原版本:CUDA Version 10.0.130;cudnn Version 7.6.4;新版本:CUDA Version 10.2.89,cudnn Version 8.2.1
  • 重装新版本后,在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\目录下存在v10.0v10.2两个文件夹。

查看自己电脑支持的cuda信息

cuda toolkits与cuda driver

  • 每个版本的CUDA toolkits都对应一个最低版本的CUDA Driver;
  • CUDA Driver是向后兼容的,这意味着根据CUDA的特定版本编译的应用程序将继续在后续发布的Driver上也能继续工作。

CUDA Toolkit和CUDA Driver版本的对应情况部分如下,源自:https://docs.nvidia/cuda/cuda-toolkit-release-notes/index.html?spm=a2c6h.12873639.0.0.6ae46238jQLxD6#major-components

nvidia-smi与nvcc -V

  • nvidia-smi:全程是NVIDIA System Management Interface ,在命令行中使用该语句可监控NVIDIA GPU设备;
  • nvvv -V:如本机安装有CUDA,执行该命令查看CUDA安装版本。

下图中,nvidia-smi显示Driver Version 462.42,查上表可知该版本最高支持CUDA 11.2。

至于nvidia-smi显示CUDA Version 11.2,nvcc -V显示CUDA Version 10.0,这是由于driver API与runtime API的区别。

driver API与runtime API

CUDA有两个主要的API:runtime API和driver API,这两个API都有对应的CUDA版本(如10.0和11.2等)。

  • 用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的,nvidia-smi就属于这一类API。
  • 用于支持runtime API的必要文件(如libcudart.so以及nvcc)是由CUDA Toolkit installer安装的(CUDA Toolkit Installer有时可能会集成了GPU driver Installer)。nvcc是与CUDA Toolkit一起安装的CUDA compiler-driver tool,它只知道自身构建时的CUDA runtime版本,不知道GPU driver版本,甚至不知道是否安装了GPU driver。

综上,如果driver API和runtime API的CUDA版本不一致可能是因为使用的是单独的GPU driver installer,而不是CUDA Toolkit installer里的GPU driver installer。因为一般情况下,我们的笔记本电脑安装个CUDA Driver就可正常看视频、办公和玩游戏了,几乎用不到CUDA Toolkit,就没有安装CUDA Toolkit。

下载CUDA和cuDNN

  • CUDA:是一个并行计算平台和编程模型,能够使得使用GPU进行通用计算变得简单和优雅;
  • cudnn:是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算,它强调性能、易用性和低内存开销,还可以集成到高级别的机器学习框架中。

在确定自己电脑支持的CUDA最高版本后,还需要结合pytorch版本选择合适的CUDA版本。

pytorch与cuda版本对应

PyTorch官网:https://pytorch/

PyTorch历史版本:https://pytorch/get-started/previous-versions/

cuda最新版本:https://developer.nvidia/cuda-downloads

cuda历史版本:https://developer.nvidia/cuda-toolkit-archive

cuda与cudnn版本对应

cuDNN下载:https://developer.nvidia/rdp/cudnn-archive

安装CUDA和cudnn

CUDA

  • 双击cuda安装包启动安装程序,默认位置安装即可;

  • 选择自定义安装,去掉VS Intergration;

    • 其余可全部勾选,网上很多教程都是只选cuda,但是其他选项会自动更新显卡其它的相关驱动,为避免后续可能出现的不兼容问题,可以都选上;

    • 但是需要注意:如果电脑目前安装的驱动版本号高于Cuda本身自带的驱动版本号(如下图版本号对比),那一定不可勾选图示三个选项,否则安装失败。

  • 安装位置选择用系统默认,也可自行更改,但要记住自己的安装位置,以便后续导入cudnn和系统变量设置;

  • 等待安装完成。

cudnn

cudnn解压后内部总共3个文件夹,将三个文件夹的内容分别复制添加到cuda10.2文件夹中对应的文件夹内,注意不是替换/覆盖掉三个文件夹。

环境变量配置

CUDA

CUDA安装完成后,系统变量中会自动添加CUDA_PATHCUDA_PATH_V10_2CUDA_PATH由原来的10.0自动变更为10.2,如下图。

cudnn

见下图(以未安装10.2之前的10.0版本示例),在环境变量path中添加路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\includeC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64

图中路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\binC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp是与之前的CUDA_PATH同步自动添加的,如果没有就手动添加。

安装完成后的验证

CUDA

  • 在命令行中运行nvcc -V,会显示CUDA安装版本;

  • 或是进入到cuda的安装路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\demo_suite,执行deviceQuery.exe,出现如下界面。

cudnn

  • 同样在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\demo_suite目录下执行bandwidthTest.exe,出现如下界面。

注意,两个exe文件需要命令行cd到安装目录,命令行运行文件,如上图所示;否则,直接在文件夹中运行会一闪而过。

CUDA多版本切换

切换CUDA版本时,只需要切换环境变量中CUDA的顺序即可,比如让CUDA10.2生效,只需将CUDA10.2环境变量上移至CUDA10.0之前。

详情可参考Windows下CUDA多版本共存

下载并安装Pytorch

pytorch1.8.2 GPU版安装

conda create -n py18 python=3.8

conda activate py18

conda install pytorch torchvision torchaudio cudatoolkit=10.2

在第三步因为网络安装失败的问题,更换国内源,如清华镜像https://mirrors.tuna.tsinghua.edu/anaconda/cloud/pytorch/;若换源后仍无法安装心仪版本,比如本次试图安装的1.8.2版本国内源未更新(见下图),到官网https://download.pytorch/whl/lts/1.8/torch_lts.html下载合适版本的whl文件,然后本地安装:

  • pip install cudatoolkit=10.2
  • pip install torch-1.8.2+cu102-cp38-cp38-win_amd64.whl
  • pip install torchvision-0.9.2+cu102-cp38-cp38-win_amd64.whl
  • pip install torchaudio-0.8.2-cp38-none-win_amd64.whl

检查PyTorch GPU版本是否安装成功

import torch

print(torch.__version__)
print(torch.cuda.is_available())

device = torch.device("cuda:0" if (torch.cuda.is_available()) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))

参考

  1. 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn区别?
  2. TensorFlow、PyTorch各版本对应的CUDA、cuDNN关系
  3. win10升级cuda+cudnn 至 cuda10.1适配pytorch
  4. Windows10检查Cuda和cuDNN是否安装成功?
  5. Windows下CUDA多版本共存

本文标签: CUDAPytorchcuDNN