• Ubuntu20.04安装NVIDIA CUDA全纪录+解决SSH一段时间自动断开报Destination Host Unreachable


    转载请注明出处:小锋学长生活大爆炸[xfxuezhang.blog.csdn.net]

    网上没一个系统的全流程教程,算了还是自己来吧。

    目录

    完全卸载旧版(可选)

    安装NVIDIA驱动

    CUDA Toolkit与驱动版本的对应关系表

    安装CUDA Toolkit

    安装CUDNN(可选)

    报错cannot find -lcudart/cannot find -lcusparse的修复

    SSH一段时间自动断开报Destination Host Unreachable


    完全卸载旧版(可选)

    1. # 卸载CUDA Toolkit:
    2. # 这里的“11.6”改成你需要卸载的版本
    3. sudo /usr/local/cuda-11.6/bin/cuda-uninstaller
    4. sudo apt-get --purge remove "*cublas*" "cuda*"
    5. # 卸载NVIDIA驱动
    6. sudo apt-get --purge remove "*nvidia*"
    7. # 删除无用包
    8. sudo apt autoremove
    9. sudo apt-get autoclean
    10. # 查看是否卸载干净。如果卸载干净了,这条指令后将无提示
    11. dpkg -l | grep nvidia

    安装NVIDIA驱动

    1. sudo apt-get install build-essential gcc-multilib dkms gcc g++ make -y
    2. sudo apt install nvidia-common -y
    ubuntu-drivers devices

            选一个安装版本,如果不懂,无脑选“recommended”的那个(但我选了510的;下面有驱动与cuda的版本对应表):

    eb802d34eb134bd3aa630a5c89e72e82.png

    1. # 安装指定版本
    2. sudo apt install nvidia-driver-510 -y
    3. # 或者使用自动选择最合适的安装
    4. sudo ubuntu-drivers autoinstall

    如果安装时遇到了问题,如:Error! Bad return status for module build on kernel

    通常是安装了多个版本的驱动引起,这里是DKMS编译出问题了。可以参考以下修复步骤(注意我的报错是550,对于你的情况注意修改版本):

    1. # 移除现有的NVIDIA DKMS模块
    2. sudo dkms remove nvidia/550.54.14 --all
    3. # 删除任何残余的NVIDIA崩溃文件
    4. sudo rm /var/crash/nvidia-*.crash
    5. # 重新安装驱动
    6. sudo apt install nvidia-driver-550

    如果问题仍然存在,看看是不是卸载干净了:

    1. # 查看是否卸载干净。如果卸载干净了,这条指令后将无提示
    2. dpkg -l | grep nvidia

    把没有卸载的全部手动卸载了,然后再重新安装驱动即可。

            装完一定需要重启,不然可能会报错的:

    sudo reboot

            这时候驱动就可以用了:

    nvidia-smi

    359a61c58c6447abac10ff6b81e02f00.png

            特别注意上面的“CUDA Version:11.6”!!后面装CUDA Toolkit的版本需要跟他一直,不然运行CUDA程序,就可能会报CUDA API错误等等。。。

            通常来说,NVIDIA驱动程序的版本应该与CUDA版本相匹配,因为它们是相互依赖的。如果使用的NVIDIA驱动程序版本高于CUDA版本,可能会导致一些问题。

            主要原因是CUDA版本和NVIDIA驱动版本之间有一定的兼容性要求。虽然某些情况下可以在不严格匹配的情况下运行,但是这样做可能会导致GPU计算错误、崩溃等问题。

            因此,建议使用与CUDA版本相匹配的NVIDIA驱动程序版本,以确保系统稳定性和计算精度。可以查看NVIDIA官方文档,了解CUDA版本和NVIDIA驱动程序版本之间的兼容性。

            官方对于兼容性的说明:https://docs.nvidia.com/deploy/cuda-compatibility/

    CUDA Toolkit与驱动版本的对应关系表

    官方实时更新地址:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

    CUDA Toolkit

    Toolkit Driver Version

    Linux x86_64 Driver Version

    Windows x86_64 Driver Version

    CUDA 12.4 Update 1

    >=550.54.15

    >=551.78

    CUDA 12.4 GA

    >=550.54.14

    >=551.61

    CUDA 12.3 Update 1

    >=545.23.08

    >=546.12

    CUDA 12.3 GA

    >=545.23.06

    >=545.84

    CUDA 12.2 Update 2

    >=535.104.05

    >=537.13

    CUDA 12.2 Update 1

    >=535.86.09

    >=536.67

    CUDA 12.2 GA

    >=535.54.03

    >=536.25

    CUDA 12.1 Update 1

    >=530.30.02

    >=531.14

    CUDA 12.1 GA

    >=530.30.02

    >=531.14

    CUDA 12.0 Update 1

    >=525.85.12

    >=528.33

    CUDA 12.0 GA

    >=525.60.13

    >=527.41

    CUDA 11.8 GA

    >=520.61.05

    >=520.06

    CUDA 11.7 Update 1

    >=515.48.07

    >=516.31

    CUDA 11.7 GA

    >=515.43.04

    >=516.01

    CUDA 11.6 Update 2

    >=510.47.03

    >=511.65

    CUDA 11.6 Update 1

    >=510.47.03

    >=511.65

    CUDA 11.6 GA

    >=510.39.01

    >=511.23

    CUDA 11.5 Update 2

    >=495.29.05

    >=496.13

    CUDA 11.5 Update 1

    >=495.29.05

    >=496.13

    CUDA 11.5 GA

    >=495.29.05

    >=496.04

    CUDA 11.4 Update 4

    >=470.82.01

    >=472.50

    CUDA 11.4 Update 3

    >=470.82.01

    >=472.50

    CUDA 11.4 Update 2

    >=470.57.02

    >=471.41

    CUDA 11.4 Update 1

    >=470.57.02

    >=471.41

    CUDA 11.4.0 GA

    >=470.42.01

    >=471.11

    CUDA 11.3.1 Update 1

    >=465.19.01

    >=465.89

    CUDA 11.3.0 GA

    >=465.19.01

    >=465.89

    CUDA 11.2.2 Update 2

    >=460.32.03

    >=461.33

    CUDA 11.2.1 Update 1

    >=460.32.03

    >=461.09

    CUDA 11.2.0 GA

    >=460.27.03

    >=460.82

    CUDA 11.1.1 Update 1

    >=455.32

    >=456.81

    CUDA 11.1 GA

    >=455.23

    >=456.38

    CUDA 11.0.3 Update 1

    >= 450.51.06

    >= 451.82

    CUDA 11.0.2 GA

    >= 450.51.05

    >= 451.48

    CUDA 11.0.1 RC

    >= 450.36.06

    >= 451.22

    CUDA 10.2.89

    >= 440.33

    >= 441.22

    CUDA 10.1 (10.1.105 general release, and updates)

    >= 418.39

    >= 418.96

    CUDA 10.0.130

    >= 410.48

    >= 411.31

    CUDA 9.2 (9.2.148 Update 1)

    >= 396.37

    >= 398.26

    CUDA 9.2 (9.2.88)

    >= 396.26

    >= 397.44

    CUDA 9.1 (9.1.85)

    >= 390.46

    >= 391.29

    CUDA 9.0 (9.0.76)

    >= 384.81

    >= 385.54

    CUDA 8.0 (8.0.61 GA2)

    >= 375.26

    >= 376.51

    CUDA 8.0 (8.0.44)

    >= 367.48

    >= 369.30

    CUDA 7.5 (7.5.16)

    >= 352.31

    >= 353.66

    CUDA 7.0 (7.0.28)

    >= 346.46

    >= 347.62

    安装CUDA Toolkit

            去官网找到你需要的版本:

    CUDA Toolkit Archive | NVIDIA Developer

           我这选个11.6.0就行了

    9eaeeb5f86d94600a2f857516193ba77.png

            选一下,下面有命令行,复制过来运行就行。

    6aecd0538eb54f009017a640860b277e.png

            不同版本不同选项下生成的命令都不一样。建议用这个runfile方式吧。(2G+,下载较慢)

    1. wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run
    2. sudo sh cuda_11.6.0_510.39.01_linux.run

            由于前面已经装了驱动,这里需要取消驱动的安装:

    fdb1fdfc9c884ae28586947185aa56fd.png

    057b5dc8f1804205915f673d38b0fa9e.png

    69eee7ce22d54be193decef5fed20a9c.png

    d7a3a7aa0e6a4cd4a147b9a9cc4d3986.png

            装完后会提示要添加路径,如果不加,命令就执行不了:

    75a85d152d6c4d4d9b395d8e958dce9d.png

            如果你是自己用,就加在自己的环境变量中:

    sudo vim ~/.bashrc

            在最后添加:

    1. export PATH=/usr/local/cuda-11.6/bin:$PATH
    2. export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH

            然后更新:

    1. source ~/.bashrc
    2. sudo ldconfig

            好了,可以用了:

    nvcc --version

    50d01fd88f884739b7b8bf3ba6322a80.png

            如果是大家一起用,那就添加到公共环境变量里,比如:

    sudo vim /etc/bash.bashrc

            添加的内容和执行的命令,跟上面是一样的,不多写了。

    安装CUDNN(可选)

    https://developer.nvidia.com/rdp/cudnn-download

    Installation Guide :: NVIDIA cuDNN Documentation

    1. # 下载:Local Installer for Ubuntu20.04 x86_64 (Deb)
    2. sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64.deb
    3. sudo cp /var/cudnn-local-repo-ubuntu2004-8.9.1.23/cudnn-local-A9C84908-keyring.gpg /usr/share/keyrings/
    4. sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64.deb
    5. # 或者下载:Local Installer for Linux x86_64 (Tar)
    6. tar -xvf cudnn-linux-x86_64-8.9.1.23_cuda11-archive.tar.xz
    7. cd cudnn-linux-x86_64-8.9.1.23_cuda11-archive
    8. # 注意替换为你的cuda
    9. sudo cp -P include/cudnn*.h /usr/local/cuda-11.7/include
    10. sudo cp -P lib/libcudnn* /usr/local/cuda-11.7/lib64
    11. sudo chmod a+r /usr/local/cuda-11.7/include/cudnn*.h /usr/local/cuda-11.7/lib64/libcudnn*
    12. # ls -l /usr/local/cuda-11.7/lib64 | grep libcudnn
    13. # ls -l /usr/local/cuda-11.7/targets/x86_64-linux/lib/ | grep libcudnn
    14. # ls -l /usr/local/cuda-11.7/include | grep cudnn
    15. # ls -l /usr/local/cuda-11.7/targets/x86_64-linux/include/ | grep cudnn
    16. sudo ldconfig

    报错cannot find -lcudart/cannot find -lcusparse的修复

            有时装完上述内容,在编译时会出现报错,如:

    fa3adbca212a461db6ff1ec41f356db4.png

            是因为库找不到,调整一下就行。

    sudo ln -s /usr/local/cuda/lib64 /usr/local/lib64

    动态库的搜索路径先后顺序:

    1. 编译目标代码时指定的动态库搜索路径;
    2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
    3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径;
    4. 默认的动态库搜索路径/lib
    5. 默认的动态库搜索路径/usr/lib

    SSH一段时间自动断开报Destination Host Unreachable

            报错长这样: 

    e9acec1b047846e3b24b4fc416b4510c.png

            经过一系列测试,发现不管干啥,固定20~30分钟后就会出现这个问题。第一反应就是系统是不是自动进入睡眠状态了,就跟Windows一样。(确实是的)

            看一下是不是有自动睡眠:

    systemctl status sleep.target

    a71fbecd2cda4d4fa3fc58f59459ab6a.png

            可以发现loaded。说明自动sleep是启用了。

            关闭自动休眠:

    sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

            可以再看一下:

    systemctl status sleep.target

    7b3bc80f99094d638443e5f054a31495.png

            可以发现masked。说明自动sleep是关闭了。

  • 相关阅读:
    Android HAL 层
    梳理RWKV 4,5(Eagle),6(Finch)架构的区别以及个人理解和建议
    CSS3提高: CSS3 3D转换
    Sentry 后端云原生中间件实践 ClickHouse PaaS ,为 Snuba 事件分析引擎提供动力
    新学期 新气象
    商品标题 内容 向量特征提取
    数据泵(impdb)导入Oracle分片的数据库dump文件
    C# - 常用API
    软件概要设计-架构真题(二十五)
    #422 编码人声:行业大会的幕后故事
  • 原文地址:https://blog.csdn.net/sxf1061700625/article/details/127705588