转载请注明出处:小锋学长生活大爆炸[xfxuezhang.blog.csdn.net]
网上没一个体系的全流程教程,算了仍是自己来吧。
目录
彻底卸载旧版(可选)
装置NVIDIA驱动
CUDA Toolkit与驱动版别的对应联系表
装置CUDA Toolkit
装置CUDNN(可选)
报错cannot find -lcudart/cannot find -lcusparse的修正
SSH一段时间主动断开报Destination Host Unreachable
彻底卸载旧版(可选)
# 卸载CUDA Toolkit:
# 这儿的“11.6”改成你需求卸载的版别
sudo /usr/local/cuda-11.6/bin/cuda-uninstaller
sudo apt-get --purge remove "*cublas*" "cuda*"
# 卸载NVIDIA驱动
sudo apt-get --purge remove "*nvidia*"
# 删除无用包
sudo apt autoremove
装置NVIDIA驱动
sudo apt-get install build-essential gcc-multilib dkms
ubuntu-drivers devices
选一个装置版别,假如不懂,无脑选“recommended”的那个(但我选了510的;下面有驱动与cuda的版别对应表):
sudo apt install nvidia-driver-510 -y
装完必定需求重启,否则可能会报错的:
sudo reboot
这时候驱动就能够用了:
nvidia-smi
特别留意上面的“CUDA Version:11.6”!!后边装CUDA Toolkit的版别需求跟他一直,否则运行CUDA程序,就可能会报CUDA API过错等等。。。
一般来说,NVIDIA驱动程序的版别应该与CUDA版别相匹配,因为它们是相互依赖的。假如使用的NVIDIA驱动程序版别高于CUDA版别,可能会导致一些问题。
主要原因是CUDA版别和NVIDIA驱动版别之间有必定的兼容性要求。虽然某些情况下能够在不严厉匹配的情况下运行,可是这样做可能会导致GPU计算过错、崩溃等问题。
因此,主张使用与CUDA版别相匹配的NVIDIA驱动程序版别,以保证体系稳定性和计算精度。能够检查NVIDIA官方文档,了解CUDA版别和NVIDIA驱动程序版别之间的兼容性。
官方关于兼容性的阐明:docs.nvidia.com/deploy/cuda…
CUDA Toolkit与驱动版别的对应联系表
官方实时更新地址:docs.nvidia.com/cuda/cuda-t…
CUDA Toolkit | Toolkit Driver Version | |
---|---|---|
Linux x86_64 Driver Version | Windows x86_64 Driver Version | |
CUDA 11.8 GA | >=520.61.05 | >=522.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就行了
选一下,下面有指令行,复制过来运行就行。
不同版别不同选项下生成的指令都不相同。主张用这个runfile方法吧。(2G+,下载较慢)
wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run
sudo sh cuda_11.6.0_510.39.01_linux.run
由于前面现已装了驱动,这儿需求撤销驱动的装置:
装完后会提示要增加途径,假如不加,指令就履行不了:
假如你是自己用,就加在自己的环境变量中:
sudo vim ~/.bashrc
在最终增加:
export PATH=/usr/local/cuda-11.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH
然后更新:
source ~/.bashrc
sudo ldconfig
好了,能够用了:
nvcc --version
假如是大家一起用,那就增加到公共环境变量里,比如:
sudo vim /etc/bash.bashrc
增加的内容和履行的指令,跟上面是相同的,不多写了。
装置CUDNN(可选)
developer.nvidia.com/rdp/cudnn-d…
Installation Guide :: NVIDIA cuDNN Documentation
# 下载:Local Installer for Ubuntu20.04 x86_64 (Deb)
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2004-8.9.1.23/cudnn-local-A9C84908-keyring.gpg /usr/share/keyrings/
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64.deb
# 或许下载:Local Installer for Linux x86_64 (Tar)
tar -xvf cudnn-linux-x86_64-8.9.1.23_cuda11-archive.tar.xz
cd cudnn-linux-x86_64-8.9.1.23_cuda11-archive
# 留意替换为你的cuda
sudo cp -P include/cudnn*.h /usr/local/cuda-11.7/include
sudo cp -P lib/libcudnn* /usr/local/cuda-11.7/lib64
sudo chmod a+r /usr/local/cuda-11.7/include/cudnn*.h /usr/local/cuda-11.7/lib64/libcudnn*
# ls -l /usr/local/cuda-11.7/lib64 | grep libcudnn
# ls -l /usr/local/cuda-11.7/targets/x86_64-linux/lib/ | grep libcudnn
# ls -l /usr/local/cuda-11.7/include | grep cudnn
# ls -l /usr/local/cuda-11.7/targets/x86_64-linux/include/ | grep cudnn
报错cannot find -lcudart/cannot find -lcusparse的修正
有时装完上述内容,在编译时会呈现报错,如:
是因为库找不到,调整一下就行。
sudo ln -s /usr/local/cuda/lib64 /usr/local/lib64
动态库的查找途径先后顺序:
- 编译目标代码时指定的动态库查找途径;
- 环境变量LD_LIBRARY_PATH指定的动态库查找途径;
- 配置文件 /etc/ld.so.conf中指定的动态库查找途径;
- 默许的动态库查找途径 /lib;
- 默许的动态库查找途径 /usr/lib。
SSH一段时间主动断开报Destination Host Unreachable
报错长这样:
通过一系列测试,发现不管干啥,固定20~30分钟后就会呈现这个问题。榜首反应便是体系是不是主动进入睡觉状况了,就跟Windows相同。(确实是的)
看一下是不是有主动睡觉:
systemctl status sleep.target
能够发现loaded。阐明主动sleep是启用了。
关闭主动休眠:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
能够再看一下:
systemctl status sleep.target
能够发现masked。阐明主动sleep是关闭了。