参考:显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?
如果从零开始安装的话,需要注意要安装的东西之间的关系,从下到上依次是NVIDIA-Driver
,CUDA
,cuDNN
。
NVIDIA-Driver
是显卡驱动,这个是直接和显卡硬件打交道的,所以它是最底层的。
CUDA
(Compute Unified Device Architecture,统一计算架构)是由NVIDIA所推出的一种集成技术,可以看成一个库,所以它其次安装。
cuDNN
准确的说并不需要安装,它只是一些单纯的库文件和头文件,专门为深度学习加速所使用的,比如卷积算子的快速实现。只需要把它的头文件和库文件拷贝到CUDA
安装的目录下,这样其他程序就可以使用它了。因此cuDNN
的版本必须和CUDA
的版本相对应。
NVIDIA-Driver就是显卡驱动,显卡驱动的版本和后面要安装的CUDA
的版本有关,因为不同的CUDA
版本对最低的显卡驱动版本有不同的要求。要求可以参考 官网 。
关于独立显卡的驱动安装,有两个来源。这里推荐一个写的比较好的安装教程:ubuntu全版本安装 NVIDIA显卡驱动
安装完毕后,可以使用nvidia-smi
命令来查看驱动版本。如下图所示,注意图中的Driver Version
版本就是显卡驱动版本,这里我直接使用的是ubuntu软件源中的驱动进行安装的。而后面的CUDA Version
并非是我们所说的CUDA
版本,可以简单的认为,只要这里的版本大于我们后面真正要安装的CUDA
版本就可以。
参考:【禁用nouveau驱动】Ubuntu下使用Nvidia显卡导致异常重启
首先我们来谈一下nouveau是什么:
Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,也没能得到NVIDIA的认可与支持。虽然Nouveau Gallium3D在游戏速度上还远远无法和NVIDIA官方私有驱动相提并论,不过确让Linux更容易的应对各种复杂的NVIDIA显卡环境,让用户安装完系统即可进入桌面并且有不错的显示效果,所以,很多Linux发行版默认集成了Nouveau驱动,在遇到NVIDIA显卡时默认安装。企业版的Linux更是如此,几乎所有支持图形界面的企业Linux发行版都将Nouveau收入其中。
上面的介绍里面已经提到了,它就是一个显卡驱动,虽然初衷是好的,但是并没有得到NVIDIA的认可,所以对于显卡的调用来说,是不如现在官方提供的驱动来的效果好的。所以,一般情况下, 我们都会选择安装官方的驱动,但是两个驱动难免又互掐的场面,这就会导致系统莫名重启(这一点已经被年轻的我在生产环境测试过了,差点就我曾经有一份工作了,惨啊)。所以,为了我们的官方驱动,就只能忍痛割爱的把它禁用掉。
1.在禁用之前,我们可以先看一下现在系统中的nouveau驱动状态:
lsmod | grep nouveau
如果有返回内容,那么就表示还没有被禁用,如果什么结果都没有,那就是成本被禁用掉了,下面的内容不用看了。
2.继续回到禁用的步骤:
vi /etc/modprobe.d/blacklist-nouveau.conf
正常情况下是没有blacklist-nouveau.conf这个文件,你直接在blacklist.conf文件中添加下面的规则也是可以的。不过为了方便区分,可以新建单独的文件,只要命名符合规则就没有问题。
blacklist nouveau
options nouveau modeset=0
update-initramfs -u
reboot
CUDA
的安装又有两种方式(参考:deb版本cuda安装),一种是使用run
文件安装, 一种是使用deb
文件安装。区别如下:
run形式安装cuda(推荐):可以选择是否使用run
文件自带的显卡驱动。在安装步骤中出现Would you like to run the nvidia-xconfig utility to automatically update your X configuration file…
时,如果选择yes,则安装run文件自带的显卡驱动,但是这个驱动一般都是旧版本的。所以更常见的方式是事先手动安装符合要求的版本的显卡驱动,然后在这一步选择 No不使用该文件自带的旧版本驱动。
deb形式安装cuda(不推荐):会默认安装自带的旧版本驱动,故安装成功后还卸载此驱动,再重新安装新版本的显卡对应的驱动。
官网教程
参考博客(写的比较好):Ubuntu安装和卸载CUDA和CUDNN
这里以自己宿舍台式机的系统为例,这里准备安装的CUDA=10.2
,。
sodo sh cuda_xxxxx.run
(是否同意条款,必须同意才能继续安装)
accept/decline/quit: accept
(这里不要安装驱动,因为已经安装最新的驱动了,否则可能会安装旧版本的显卡驱动,导致重复登录的情况)
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n
(是否安装CUDA 10.2 ,这里必须要安装)
Install the CUDA 10.2 Toolkit?
(y)es/(n)o/(q)uit: y
(安装路径,使用默认,直接回车就行)
Enter Toolkit Location
[ default is /usr/local/cuda-10.2 ]:
(1.是否创建软链接,如果创建的话就会创建一个/usr/local/cuda的软连接,实际指向/usr/local/cuda-10.2)
(2.注意这个连接,如果你之前安装过另一个版本的cuda,除非你确定想要用这个新版本的cuda,否则这里就建议选no,因为指定该链接后会将cuda指向这个新的版本)
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
(不用安装测试,这里的安装测试应该是安装到用户目录下,但实际上在cuda的安装路径,即/usr/local/cuda-10.2下就已经有sample测试文件了)
Install the CUDA 10.2 Samples?
(y)es/(n)o/(q)uit: n
Installing the CUDA Toolkit in /usr/local/cuda-10.2 ...(开始安装)
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-10.2/
Samples: Installed in /home/cc/
Please make sure that
- PATH includes /usr/local/cuda-10.2/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-10.2/lib64, or, add /usr/local/cuda-10.2/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-10.2/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-10.2/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 440.00 is required for CUDA 10.2 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run --silent --driver
Logfile is /var/log/cuda-installer.log
~/.bashrc
的最后加上以下配置信息export CUDA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
最后使用命令source ~/.bashrc
使它生效。
nvcc -V
查看安装的版本信息:
这里可以发现,安装的CUDA
版本是10.2,而之前使用nvidia-smi
看到的版本是11.4,两个版本并不一样。原因参考:【CUDA】nvcc和nvidia-smi显示的版本不一致? 简单来说,只要nvidia-smi
的显示版本大于CUDA
版本一般就没有问题。
cd /usr/local/cuda-10.2/samples/1_Utilities/deviceQuery
make
./deviceQuery
正常情况下输出如下:
cuDNN实际上不用安装,就是把头文件和库文件拷贝到CUDA的安装目录下,然后给这些文件读写权限即可。
这里以安装cuDNN=8.1.0
,官网下载地址, 官网安装教程
sudo cp include/* /usr/local/cuda/include/
sudo cp lib64/* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
Ubuntu 18.4 查看CUDNN版本
在/usr/local/cuda/include
目录下有一个cudnn_version.h
头文件,这里面就定义了关于cuDNN的版本,内容如下:
参考:什么是TensorRT
Tensor是一个有助于在NVIDIA图形处理单元(GPU)上高性能推理c++库。它旨在与TesnsorFlow、Caffe、Pytorch以及MXNet等训练框架以互补的方式进行工作,专门致力于在GPU上快速有效地进行网络推理。
如今现有的一些训练框架(例如TensorFlow)已经集成了TensorRT,因此可以将其用于加速框架中的推理。另外,TensorRT可以作为用户应用程序中的库,它包括用于从Caffe,ONNX或TensorFlow导入现有模型的解析器,以及用于以编程方式(C++或Python API)构建模型。
官网下载地址 官网安装教程
这里以TensorRT=7.2.3
为例,下载适配CUDA版本的安装包。
安装步骤按照官网来进行,同时可以参考这篇博客。
- 解压下载的安装包,没下面这么复杂,直接解压即可
onnx-graphsurgeon
的时候,报了一大堆错误,内容大致如下:python3 -m pip install --upgrade pip
python3 -m pip install onnx_graphsurgeon-0.2.6-py2.py3-none-any.whl