# cudatoolkit介绍及配置

# 1.GPU与CUDA、cudatoolkit、cuDNN之间的关系

# 1.1 GPU

GPU是图形处理器(Graphics Processing Unit)的缩写,是一种专门在计算机上执行绘图运算工作的微处理器。图形处理器使显卡减少对中央处理器(CPU)的依赖,GPU为大规模的并行运算而优化,因此有着比为串行指令而优化的CPU快的多的运算速度1 (opens new window)。常用的GPU品牌厂商有NVIDIA,INTEL,AMD等。

确定显卡型号后,可在Nvidia官网上下载对应的GPU驱动,驱动下载地址 (opens new window)

# 1.2 CUDA

CUDA英文全称是Compute Unified Device Architecture,是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。按照官方的说法是,CUDA是一个并行计算平台和编程模型,能够使得使用GPU进行通用计算变得简单和优雅

# 1.3 CUDA Toolkit

CUDA toolkit即是实现CUDA并行计算平台和编程模型的工具箱,包含了一系列套件。包括GPU加速库,程序调试和优化工具,在主流x86\ARM\POWER平台上构建和部署应用的运行时库。cudatoolkit可以从NVIDIA官网下载,也可在通过虚拟环境管理工具conda\pip下载。通过NVIDIA官网下载的CUDA toolkit中包含有如GDB,NVCC及显卡驱动等工具。通过pip安装的cudatoolkit通常仅包括必要的库文件,完整的CUDA Toolkit中包含的模块及CUDA Toolkit与显卡驱动的版本对应关系可见2 (opens new window)

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

  • nvcc命令是NVIDIA CUDA Compiler,就是CUDA的编译器,可以从CUDA Toolkit/bin目录中获取,类似于gcc就是c语言的编译器
  • nvidia-smiNVIDIA System Management InterfaceNVIDIA Management Library(NVML)构建的命令行实用工具,包含在显卡驱动(NVIDIA display driver)中,
  • nvccnvidia-smi输出的CUDA版本不一致,CUDA有两个主要的API:runtime(运行时) APIdriver API。这两个API都有对应的CUDA版本(如9.2和10.0等)。用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的。nvidia-smi就属于这一类API。用于支持runtime API的必要文件(如libcudart.so以及nvcc)是由CUDA Toolkit 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。
  • runtimedriver API的区别,runtime是更高级的封装,开发人员用起来更方便,而driver API更接近底层,速度可能会更快

# 1.4 cuDNN

https://blog.csdn.net/qq_42406643/article/details/109545766

cuDNN的全称为NVIDIA CUDA® Deep Neural Network library,是NVIDIA专门针对深度神经网络中的基础操作而设计基于GPU的加速库。cuDNN为深度神经网络中的标准流程提供了高度优化的实现方式,例如convolution、pooling、normalization以及activation layers的前向以及后向过程。
CUDA这个平台一开始并没有安装cuDNN库,当开发者们需要用到深度学习GPU加速时才安装cuDNN库,工作速度相较CPU快很多。

查看cuDNN版本:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

# 2.Linux下安装GPU Driver/CUDA Toolkit/cuDNN

  • 安装显卡驱动 (opens new window)

    sudo add-apt-repository ppa:graphics-drivers/ppa ubuntu-drivers devices
    sudo apt-get install nvidia-driver-*
    

    或者使用ubuntu发行版推荐的驱动

    # sudo sh NVIDIA-Linux-x86_64-440.44.run -no-x-check -no-nouveau-check -no-opengl- files
    sudo apt ubuntu-drivers autoinstall
    
  • 安装cudatoolkit,在官网 (opens new window)下载对应的cudatoolkit,与驱动版本需对应,版本对应关系 (opens new window)

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    export PATH=$PATH:/usr/local/cuda/bin
    

    安装成功后,输出为:

    nvcc --version
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2021 NVIDIA Corporation
    Built on Sun_Aug_15_21:14:11_PDT_2021
    Cuda compilation tools, release 11.4, V11.4.120 
    Build cuda_11.4.r11.4/compiler.30300941_0
    2.2
    
  • 安装cuDNN,下载文件 (opens new window),执行如下命令。

tar -xzvf cudnn-x.x-linux-x64-v8.x.x.x.tgz 
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

# 参考资料