ubuntu2204安装显卡驱动+多版本的cuda+cudnn+多版本tensorRT
cuda的版本更新速度很快,这也带动TensorRT的更新速度。TensorRT SDK的更新直接从版本8升级到版本10(其实有版本9,和8相比没有大的改变)。tensorRT部署模型的很多接口都发生了较大的改变。为了体验不同版本的cuda和tensorRT的推理,本文考虑在ubuntu2204系统中安装多个版本的cuda和tensorRT。
1. 检查自己电脑的硬件情况
(1)检查显卡硬件
lspci | grep VGA
我的硬件情况如下:
(2)检查电脑系统
lsb_release -a
我的电脑系统显示如下:
(3)检查电脑的驱动以及安装驱动
ubuntu-drivers devices
比如我的输出就是这样的:
如果没有驱动的话,看电脑推荐的来直接安装就可以,比如我的recommended是550,那么直接随时用如下指令安装即可
sudo apt install nvidia-driver-550
(4) 查看GPU相关信息
nvidia-smi
我的显示如下:
注意这里的右上角的CUDA Version:12.4,这个表示当前的驱动可以最高支持安装的cuda是12.4版本的。
2. 安装cuda+cudnn
2.1 安装cuda
cuda的下载地址:CUDA Toolkit Archive | NVIDIA Developer
下载的网页如下:
在Archived Releases下面找到合适自己的电脑的版本,然后点击CUDA Tookit出现如下界面,需要根据自己的电脑系统选择安装方式,如下是我选择的参数
我这里直接使用runfile(local)的方式安装cuda,下面的提示直接wget下载这个软件。复制下载链接终端输入回车即可
终端输入:
wget https://developer.download.nvidia.com/compute/cuda/12.0.1/local_installers/cuda_12.0.1_525.85.12_linux.run
显示下载如下:
下载完成后,把这个.run的安装包复制到新建的文件夹内,比如移动到/home/zpec/software/cuda-12.0文件夹下面。然后执行安装指令
sudo sh cuda_12.0.0_525.60.13_linux.run
输入电脑的安装密码之后,终端弹出如下几个选项:
因为我们之前已经安装过驱动,如果选择abort,这里会直接删除电脑的驱动,然后后面的步骤安装驱动。我这里直接选择continue然后回车;出现如下选项
输入accept后然后回车;出现如下选项:
这里我做的这个选项,只选择cuda tookit然后install,回车后出现如下:
这里的表示建立软链接给/usr/local/cuda。此时安装cuda的一些选项参数选择完毕后,系统开始安装cuda,安装完成后的情况如下:
输出界面显示当前的cuda需要至少525的确定可以使用,我们安装的驱动是550,这里不用管它。配置当前cuda的环境变量,打开./bashrc输入
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
然后保存就可以配置好环境变量了。检查cuda版本
nvcc -V
我的正常显示的环境如下:
注意:在/usr/local/文件夹下面原本不存在cuda的文件夹的,但是当我们安装cuda的时候,会创建一个cuda的文件夹,当前cuda文件夹是被链接到其他cuda版本的。
在我的电脑中,我安装了多个不同cuda版本,比如cuda11.8,cuda12.0,cuda12.3。如下
如何需要链接其他版本的cuda,可以如下:
sudo rm /usr/local/cuda #删除当前被软连接的cuda
sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda #链接需要的cuda版本即可
通过这两条指令就可以重新建立cuda11.8软链接,然后执行nvcc -V后出现如下:
根据自己的电脑的实际使用,建立合适的软连接。
2.2 安装cudnn
cudnn的下载地址是:cuDNN Archive | NVIDIA Developer
下载界面是:
选择合适的cudnn版本,由于我下载的cuda12.0,我这里下载8.9.7,下载到cuda-12的文件夹内
解压:
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
cudnn的安装只是把cudnn的头文件和动态库复制到对应的cuda安装包里面,执行
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/* /usr/local/cuda-12.0/include
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.0/lib64
验证cudnn安装是否正确:
cat /usr/local/cuda-12.0/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
出现如下结果说明安装成功:
3 安装TensorRT
TensorRT的下载地址:TensorRT Download | NVIDIA Developer
选择合适的自己cuda版本的TensorRT,选择Tar安装包安装。把安装包移动到文件夹内,我把下载的软件包复制到/opt/TensorRT/
然后直接解压:
sudo tar -xvf TensorRT-10.3.0.26.Linux.x86_64-gnu.cuda-12.5.tar.gz
然后把TensorRT的环境变量添加到系统中即可:
我的配置环境如下:
# tensorRT10.3的路径
export LD_LIBRARY_PATH=/opt/TensorRT/TensorRT-10.3.0.26/lib:$LD_LIBRARY_PATH
export PATH=/opt/TensorRT/TensorRT-10.3.0.26/bin:$PATH
这里可以配置多个TensorRT的版本。
使用同样的方法可以安装多个不同版本的TensorRT,同样配置好环境。
验证是否安装正确:
进入/opt/TensorRT/TensorRT-10.3.0.26/samples/sampleOnnxMNIST文件夹,执行如下指令:
sudo make
可以出现如下界面:
说明可执行程序运行成功,然后进入/opt/TensorRT/TensorRT-10.3.0.26/bin,在当前文件夹有刚刚make的结果sample_onnx_mnist。直接运行
看到这个说明执行成功。
可以看到我的tensoRT安装的版本有如下