2022.04.24
安装nvidia驱动,cuda,,cuDNN

  • 环境:ubuntu 21.04 + 2080Ti * 2
  • NVIDIA 驱动:网上有蛮多推荐下载NVIDIA驱动,然后再安装的,这种方法在本机上没成功。本机采用apt命令行安装 + 重启 的方法安装成功
  • CUDA:到官网下载安装文件 + 命令安装
  • cuDNN:到官网下载安装文件 + 命令安装

概述


总结性的话放前面:
装这个三个东西查阅了不少博客、教程,大同小异,基本上行得通,但是遇到转牛角尖的电脑,就难办了。我这机子就是。经过这一系列的折腾,对Nvidia drivers、CUDA、cuDNN三者之间的关系有了进一步的了解。

  • Nvidia drivers
    • Nvidia drivers 可以单独安装,也可以在安装CUDA时安装。推荐单独安装。
    • 安装CUDA时,里面会有安装Nvidia drivers的选项,但是,该驱动的版本是否能与本机GPU相匹配,就难说了。我的机子2块2080Ti,根据官网的指令(看2.1小节),驱动是440,而2080Ti并不支持440。所以这种默认的安装方式不适用。运气好的,刚好匹配上。
  • CUDA
    • 安装完Nvidia drivers后,再安装CUDA
    • 切记检查当前Nvidia drivers支持CUDA的最高版本(nvidia-smi),对CUDA是向下兼容的。

      1. NVIDIA 驱动安装


直接到官网(https://www.nvidia.com/Download/index.aspx?lang=en-us)找不到需要的470号显卡,可能是网址没找对。
image.png

1.1 查看显卡型号

  • sudo ubuntu-drivers devices

推荐安装 nvidia-driver-470
image.png

1.2 根据推荐安装驱动

  • sudo apt-get install nvidia-driver-470

    1.3 查看是否安装成功

    nvidia-smi

  • 在这遇到奇怪的坑,直接输入nvidia-smi,显示未安装:

    NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the…

  • 重启后,nvidia-smi,成功显示GPU信息,表示驱动安装成功。

image.png
CUDA Version: 11.4 表明最高支持CUDA 11.4版本,驱动可向下兼容。

1.4 常用命令

  • 删除原有驱动
    • sudo apt-get purge nvidia*
    • sudo apt-get autoremove

      2. CUDA


2.0 版本的选择

CUDA 10.2 的兼容性较好,所以采用该版本。
注意:要查看显卡的算力级别,比3080 的算力为8.6,那么对应的CUDA 11+ 才支持,否则报如下错误:当前CUDA 最高支持7.5算力的GPU,而3080的算力为8.6。
image.png
算力7.0的显卡可以在支持最高算力7.5的CUDA版本下运行,但是算力7.5的显卡不可以在支持最高算力7.0的CUDA版本下运行,即根据算力找到合适的CUDA 版本。

A CUDA application binary (with one or more GPU kernels) can contain the compiled GPU code in two forms, binary cubin objects and forward-compatible PTX assembly for each kernel. Both cubin and PTX are generated for a certain target compute capability. A cubin generated for a certain compute capability is supported to run on any GPU with the same major revision and same or higher minor revision of compute capability. For example, a cubin generated for compute capability 7.0 is supported to run on a GPU with compute capability 7.5, however a cubin generated for compute capability 7.5 is not supported to run on a GPU with compute capability 7.0, and a cubin generated with compute capability 7.x is not supported to run on a GPU with compute capability 8.x

查看显卡算力
image.png
版本匹配:
CUDA 10. 最高支持算力 7.
CUDA 11. 最高支持算力 8.

The nvcc compiler included with versions 10.x (10.0, 10.1 and 10.2) of the CUDA Toolkit can generate cubins native to the Volta and Turing architectures (compute capability 7.x)

2.1 下载CUDA

  • 官网获取链接(采用本地安装 runfile(local)

https://developer.nvidia.com/cuda-10.2-download-archive? target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal
image.png

  1. wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
  2. sudo sh cuda_10.2.89_440.33.01_linux.run

2.2 清理之前安装过的cuda

两个命令行一起清理,确保彻底删除

  1. sudo apt autoremove cuda
  2. sudo apt --purge remove "*cublas*" "cuda*"

2.3 安装

  • cd 到cuda_10.2.89_440.33.01_linux.run所在的目录
  • sudo sh cuda_10.2.89_440.33.01_linux.run —override

    • 不填写—override,可能会出现gcc版本不一致的问题,因为ubuntu21.04自带的gcc 是10+的版本,比较高

    failed to verify gcc version. see log at /var/log/cuda-installer.log for details.

  • 选择 Continue

    1. - 因为之前已经安装NVIDIA的驱动,选择 Continue 继续操作。

image.png

  • 输入 accpet

image.png

  • 取消安装驱动的选项(选中,按空格),然后选择 Install
    • 因为之前已经安装驱动了,所以这时不需要再次安装
    • 有些人直接在安装CUDA的时候安装NVIDIA驱动,就是在这个时候勾选的,但是此处的驱动版本不一定能适用于本机的GPU型号,这就看运气了。

image.png

  • 安装完成
    • 文件路径信息

image.png

  • 添加环境变量:
    • PATH是可执行文件路径,是三个中我们最常接触到的,因为我们命令行中的每句能运行的命令,如ls、top、ps等,都是系统通过PATH找到了这个命令执行文件的所在位置,再run这个命令(可执行文件)。 比如说,在用户的目录~/mycode/下有一个bin文件夹,里面放了有可执行的二进制文件、shell脚本等。
    • LIBRARY_PATH是程序编译期间查找动态链接库时指定查找共享库的路径
    • LD_LIBRARY_PATH是程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径 ``` sudo vim ~/.bashrc

export PATH=$PATH:/usr/local/cuda-10.1/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64

source ~/.bashrc # 保存修改 echo $PATH # 查看环境变量是否设置成功

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/26708373/1650856488480-deb07af8-fca1-4003-91aa-6245a24174b4.png#clientId=u170d6ea3-2199-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=58&id=u62189c4f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=63&originWidth=1491&originalType=binary&ratio=1&rotation=0&showTitle=false&size=13226&status=done&style=none&taskId=u24ab2513-ab6c-4c1f-8c3b-05a04893ae5&title=&width=1367.889866368578)
  2. <a name="opUhc"></a>
  3. ### 2.4 验证CUDA
  4. - 检查版本号 nvcc --version

cat “/usr/local/cuda-10.2/version.txt”

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/26708373/1650856823475-9b642cc4-dbec-44ab-9295-d4dc090d969c.png#clientId=u170d6ea3-2199-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=25&id=Wiazj&margin=%5Bobject%20Object%5D&name=image.png&originHeight=27&originWidth=739&originalType=binary&ratio=1&rotation=0&showTitle=false&size=4961&status=done&style=none&taskId=ufe235670-48a6-4b64-ae81-fbbd60bd70e&title=&width=677.981630614607)
  2. - 测试CUDA,查看显卡信息
  3. CUDA 分驱动版本(Driver version)、运行版本(Runtime version)。如下表,本机的驱动版本470系列,所以最高支持CUDA 11.4,且向下兼容。

cd “/usr/local/cuda-10.2/samples/1_Utilities/deviceQuery/“ sudo make ./deviceQuery

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/26708373/1650858376887-95d70c9f-782f-4a83-a8d5-6e4b27af436e.png#clientId=u170d6ea3-2199-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=33&id=udbd8537d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=36&originWidth=828&originalType=binary&ratio=1&rotation=0&showTitle=false&size=5100&status=done&style=none&taskId=u52116195-01cd-44cf-b5fd-51dcd73a222&title=&width=759.6330042610211)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/26708373/1650858702503-6187970c-adcc-46e4-b8b1-2ad60e9bd7d5.png#clientId=u170d6ea3-2199-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=561&id=u418c2975&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1082&originWidth=925&originalType=binary&ratio=1&rotation=0&showTitle=false&size=157429&status=done&style=none&taskId=u42b755ca-d3a6-48fd-9d0a-c10d150f2ff&title=&width=480.00286865234375)<br />[https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#major-components](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#major-components)
  2. <a name="ydYaE"></a>
  3. ### 2.4 多版本 CUDA 管理
  4. 1. 查看已安装的CUDA 版本
  5. 默认安装位置为 usr/local

ls -l /usr/local | grep cuda

  1. 2. 设置环境变量
  2. CUDA 环境变量(bashrc 文件)中的版本号删除(无版本号的路径),执行 source ~/.bashrc 使环境变量生效
  3. 3. 切换cuda 版本
  4. 建立对应版本的软链接(把服务器上多用户的CUDA版本都切换了,则删除原有链接,建立新的软链接即可,这样服务器上每个用户的版本都切换了)

sudo rm -rf /usr/local/cuda #删除之前创建的软链接 sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda #创建链接到cuda9.0的软链接 nvcc —version #查看当前cuda版本

  1. 4. 查看当前运行的CUDA 版本

cd /usr/local # cd 到CUDA 安装路径 stat cuda # 查看当前使用的CUDA

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/26708373/1658679223747-4d62c601-92ea-4515-9d0d-cdce729d0632.png#clientId=uc8d63e19-c04d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=134&id=tuls5&margin=%5Bobject%20Object%5D&name=image.png&originHeight=146&originWidth=575&originalType=binary&ratio=1&rotation=0&showTitle=false&size=18996&status=done&style=none&taskId=u371df0e5-4400-457e-a5bf-789da43ce80&title=&width=527.522919625709)
  2. <a name="R1lNj"></a>
  3. ### 2.5 卸载CUDA
  4. CUDA 有管理工具:

cd /usr/local/cuda/bin ./cuda-uninstaller

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/26708373/1658682396588-d77bacb2-f537-47d2-a4b2-528b570ebb11.png#clientId=uc684bff9-ecb8-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=161&id=ue2b1be9a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=175&originWidth=315&originalType=binary&ratio=1&rotation=0&showTitle=false&size=7160&status=done&style=none&taskId=uda1f87a4-a7a8-4161-bb2e-0d463f622c9&title=&width=288.99081683843195)<br />选择要卸载的CUDA-> Done
  2. <a name="vUOLt"></a>
  3. ## 3. cuDNN
  4. ---
  5. 官方指导:[https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html](https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html)
  6. <a name="hy41p"></a>
  7. ### 3.1 从官网下载cuDNN:
  8. - [https://developer.nvidia.com/rdp/cudnn-download](https://developer.nvidia.com/rdp/cudnn-download)
  9. - [https://developer.nvidia.com/rdp/cudnn-archive](https://developer.nvidia.com/rdp/cudnn-archive)
  10. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/26708373/1650939531442-5e041e03-0cf2-47b8-bb88-079b7740d2bf.png#clientId=udd843d7d-c267-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=325&id=u724801a2&margin=%5Bobject%20Object%5D&name=image.png&originHeight=558&originWidth=850&originalType=binary&ratio=1&rotation=0&showTitle=false&size=64108&status=done&style=none&taskId=uefbeab07-ab1c-4344-ab18-03cdbf4aa8b&title=&width=495.014892578125)
  11. <a name="GZ1bk"></a>
  12. ### 3.2 解压 & 将文件复制到CUDA路径
  13. 将解压后的cuDNN文件拷贝到CUDA相应的文件夹中,并赋予其权限。

tar -xzvf cudnn-xxx.tgz

sudo cp cuda/include/cudnn.h /usr/local/cuda-xx/include sudo cp cuda/lib64/libcudnn /usr/local/cuda-xx/lib64 sudo chmod a+r /usr/local/cuda-/include/cudnn.h /usr/local/cuda-/lib64/libcudnn ```