• 显卡---显卡驱动---CUDA---Cudnn


    1. 背景

      最近在follow百度的CAE这篇论文时,源码需要的环境为:

    python 3.7 cuda: 11.0 cudnn: 8.0.4 gcc 8.2

      该版本要求与我目前使用的服务器上的CUDA版本不相符合。因此搜索了一篇国外小哥的文章,讲述了如何在一台服务器上安装多个CUDA和Cudnn环境。
      该文章不但对安装多版本的CUDA和cudnn有帮助,而且也一定程度上帮助自己理解了显卡,显卡驱动,CUDA, Cudnn之间的关系。

    2. 显卡,显卡驱动,CUDA,Cudnn四者之间的关系

    2.1 显卡

      当面对一台陌生的机器,可以通过lshw指令来获取该机器上是否有显卡,以及显卡的型号是什么?
    在这里插入图片描述
      lshw指令会输出所有和hard ware相关的信息,这里增加了参数-C display,来过滤出和显卡相关的信息。可以看到,我目前所使用的这台机器是1080TI的显卡。

    2.2 显卡驱动

      显卡驱动可以理解为硬件和软件之间的中间层,实现最基本的显卡功能。可以通过nvidia-smi指令来查看显卡驱动是否安装,如果驱动安装的话,会显示类似于如下的信息。
    在这里插入图片描述
      这里要注意的一点是nvidia-smi右上角显示的CUDA Version版本并不是表示当前机器上(已经)安装的CUDA版本是11.4,而是指当前显卡驱动支持的最高CUDA版本为11.4。

    2.3 CUDA&&Cudnn

      CUDA是一个并行计算平台。而Cudnn(Cuda deep neural network)则是在CUDA的基础上,构建的一个专门的针对深度学习网络的库。
      这里可以查看两个点:第一点是第一版cudnn的发布日期,如下图所示,v1版本的时间没有给出,但推算大概是在2014年左右,相当于2012年alexnet出来之后的两年左右。
    在这里插入图片描述
      另外一点是可以看一下cudnn库中的头文件内容,会看到我们熟悉的神经网络层的名称。
    在这里插入图片描述

    2.4 小结

    在这里插入图片描述

    3. 如何安装显卡,显卡驱动,CUDA, Cudnn

      这里仅记录一些关键词,具体可以参考国外小哥的安装过程

    3.1 安装显卡驱动

    sudo ubuntu-drivers devices
    
    • 1

    查看,适合硬件的驱动版本。

    sudo apt install xxx
    
    • 1

    安装驱动driver

    3.2 安装cuda&&cudnn

      直接去nvidia官网,会提供安装方式和指令。这里要说明的是可以根据nvidia-smi上显示的cuda version来确定自己能安装version的范围。安装cudnn版本的选择则是根据cuda版本来确定。

    3.3 设置环境变量

    sudo gedit ~./bashrc
    export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
    
    export LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/cuda-10.1/lib64:/usr/local/cuda-11/lib64:/usr/local/cuda-11.1/lib64:/usr/local/cuda-11.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
    #make sure you add your cuda-X.x lib64 paths
    
    • 1
    • 2
    • 3
    • 4
    • 5

      最后要将所有的安装路径都放到LD_LIBRARY_PATH中,就可以依次搜索不同的cuda版本。

    ${PATH:+:${PATH}}
    
    • 1

    这里的意思是${PATH}变量可能在之前还未定义,因此要这样进行保护。等价于:

    if [ -z "$PATH" ]; then
        PATH=/usr/local/cuda/bin
    else
        PATH=/usr/local/cuda/bin:$PATH
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4. 总结

      本文是以日常工作中“需要安装多个CUDA、cudnn版本”实际需求为契机,梳理了一些相关概念、关系和操作流程。

  • 相关阅读:
    学院打卡第十天
    使用Python将MySQL查询结果导出到Excel(xlsxwriter)
    云计算时代的采集利器
    9.Linear Maps
    Leetcode 1834. Single-Threaded CPU (堆好题)
    计算机竞赛 基于深度学习的中文情感分类 - 卷积神经网络 情感分类 情感分析 情感识别 评论情感分类
    PG第十一章-基准测试与 pgbench
    13model selection和bias/variance1
    STM32概念和安装【第一天】
    深度学习(五)softmax 回归之:分类算法介绍,如何加载 Fashion-MINIST 数据集
  • 原文地址:https://blog.csdn.net/u011345885/article/details/128107167