Linux安装CUDA+CUDNN+TRT+DS教程

2024-02-29 03:20
文章标签 linux 安装 教程 cuda cudnn ds trt

本文主要是介绍Linux安装CUDA+CUDNN+TRT+DS教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux安装CUDA+CUDNN+TRT+DS教程

一、系统部署及环境部署(CUDA,CUDNN,TRT,Deepstream)

在进行系统部署及环境部署时,要注意各组件的版本号是否对应,如下图:

在这里插入图片描述

1.1 安装CUDA

(1)查看显卡驱动是否安装

nvidia-smi

在这里插入图片描述
可以看到显示出CUDA 的对应信息,表示驱动已经安装了,如果没有返回,可以安装时进行勾选。这一步一定要检查,不然后面会报错。

(2)下载CUDA并安装

CUDA下载地址:https://developer.nvidia.com/cuda-toolkit-archive

查找对应的CUDA版本,并勾选匹配自己电脑的信息,比如我的电脑是Linux系统,X86_64平台,ubuntu18.04,进行如下勾选:

在这里插入图片描述
有三种安装方式,我们选择第三种“runfile(local)”,下面会出现相应的安装方式,在命令行输入显示的命令,比如我这里显示的是:

>wget
https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run
>sudo sh cuda_11.4.0_470.42.01_linux.run

第一步进行下载,第二步进行安装,一路输入“accept”,直到出现CUDA的安装页面,如下图:

在这里插入图片描述
如果没有驱动,则直接选择“Install”进行安装,如果安装了驱动,则把“Driver”勾选去掉,再进行安装。

等待一会,就可以了。

接下来进行环境配置(在root下进行)版本按自己来:

>vim ~/.bashrc  #修改环境变量
>export PATH=/usr/local/cuda-11.4/bin${PATH:+:${PATH}}   #添加CUDA路径
>export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
>source ~/.bashrc  #使之生效

测试是否安装成功:

nvcc -V

会出现一段信息:

在这里插入图片描述
这样就证明安装成功了。

(3)下载CUDNN并安装

CUDNN下载地址:https://developer.nvidia.com/rdp/cudnn-archive

这一步需要账号密码,登录后会出现所有版本的信息。

到这里需要注意版本的对应关系,在最上面可以看到,CUDA11.4对应的CUDNN要8.2+,所以在选择版本时,我们选择8.2+。比如我们选择8.2.4的版本。点击会出现以下界面:

在这里插入图片描述

这里我们选择第二个进行下载,也就是下载tgz包,下载完成后上传电脑,然后进行解压(自己的包),命令如下:

tar -xvf cudnn-11.4-linux-x64-v8.2.4.15.tgz

将CUDNN安装目录下部分文件复制到CUDA的安装目录下:

sudo cp cudnn-11.4-linux-x64-v8.2.4.15/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cudnn-11.4-linux-x64-v8.2.4.15/lib/libcudnn* /usr/local/cuda/lib64 

修改权限:

sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

通过以下命令查看CUDNN信息并测试是否成功:

cat /usr/local/cuda/include/cudnn_version.h
1.2 安装TRT

(1)下载TRT

TRT下载地址:https://developer.nvidia.com/nvidia-tensorrt-download

这里会显示所有历史版本,还是根据版本来,这里我们对应的是TRT8.0.1的(当然,一两个小版本是不会有影响,不用太执着,只需要满足最低需求就可以了)。点击后可以看到:

在这里插入图片描述

选择tgz包,进行下载,并上传至电脑。并进行解压。

tar zxf TensorRT-8.0.1.6.Linux.x86_64-gnu.cuda-11.3.cudnn8.2.tar.gz

放于一个好找的地方并重命名:

mv TensorRT-8.0.1.6 /opt

配置环境变量:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/TensorRT-8.0.1.6/lib
source ~./bashrc #使之生效

将复制tensorRT目录下 lib、include文件夹到系统文件夹(或者将这两个文件夹路径添加到.bashrc文件中)

sudo cp -r ./lib/* /usr/lib
sudo cp -r ./include/* /user/include

(2)安装python-TRT

将TRT安装到python里面,这里我们进入目录进行安装:

cd /opt/TensorRT-8.0.1.6/python
pip install tensorrt-8.0.1.6-cp36-none-linux_x86_64.whl 

安装自己python对应的版本,当然这里尽量选择python3.6或者3.8版本,后面和deepstream的python-api是相匹配的,而且这两个版本也是较为常用且稳定的。

(3)测试python-TRT

打开python,并输入:

import tensorrt

没报错,证明成功。如果报错,可以根据安装时的报错进行解决(无非是缺了什么库,再装就行)。

1.2 安装Deepstream

(1)安装依赖

这一步比较重要,很多报错,可以通过清除依赖,以及安装相关依赖进行解决

这是Deepstream的依赖。

>sudo apt install libssl1.0.0 libgstreamer1.0-0 gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav libgstrtspserver-1.0-0 libjansson4 gcc make git

这是Deepstream-python-apps的依赖。

>sudo apt install -y git python-dev python3 python3-pip python3.6-dev python3.8-dev cmake g++ build-essential libglib2.0-dev libglib2.0-dev-bin python-gi-dev libtool m4 autoconf automake libgirepository1.0-dev libcairo2-dev

这是gstreamer的依赖。

>sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgstrtspserver-1.0-dev libx11-dev

这是其他一些依赖。

>sudo apt-get update
>sudo apt-get install libnvinfer8=8.0.1-1+cuda11.3 libnvinfer-plugin8=8.0.1-1+cuda11.3 libnvparsers8=8.0.1-1+cuda11.3 libnvonnxparsers8=8.0.1-1+cuda11.3 libnvinfer-bin=8.0.1-1+cuda11.3 libnvinfer-dev=8.0.1-1+cuda11.3 libnvinfer-plugin-dev=8.0.1-1+cuda11.3 libnvparsers-dev=8.0.1-1+cuda11.3 libnvonnxparsers-dev=8.0.1-1+cuda11.3 libnvinfer-samples=8.0.1-1+cuda11.3 libnvinfer-doc=8.0.1-1+cuda11.3

(2)下载Deepstream

Deepstream下载地址:https://developer.nvidia.com/deepstream-sdk-download-tesla-archived

下载对应版本,这里是我们是Deepstream6.0,选择”servers and workstations“,下载tgz包,并上传电脑。

在这里插入图片描述
将下载好的Deepstream进行解压:

sudo tar -xvf deepstream_sdk_v6.0.1_x86_64.tbz2

转移位置(方便使用):

cd opt
cp nvidia \opt

进行安装:

cd /opt/nvidia/deepstream/deepstream-6.0/
sudo ./install.sh
sudo ldconfig

测试是否成功:

deepstream-app -h

返回相应的帮助文档即可。

(3)python deepstream安装

python-deepstream的github地址:https://github.com/NVIDIA-AI-IOT/deepstream_python_apps

将项目文件下载到DS目录里面:

cd /opt/nvidia/deepstream/deepstream/sources
git clone https://github.com/NVIDIA-AI-IOT/deepstream_python_apps

进行初始化:

cd /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/
git submodule update --init

它会把接下来要用的东西自动下载。

(3)GST-python安装

在上一步初始化后,可以进入目录进行安装:

sudo apt-get install -y apt-transport-https ca-certificates -y
sudo update-ca-certificates
cd 3rdparty/gst-python/
./autogen.sh
make
sudo make install

(4)python绑定

还是在初始化后的目录里,可以进行绑定:

cd deepstream_python_apps/bindings
mkdir build
cd build

到这里,我们需要对版本进行说明,以便编译时的安装。版本说明:

在这里插入图片描述
进行cmake,填写相应参数,比如我的电脑时DS6.0,python3.6,x86平台,命令就是:

>cmake ..  -DPYTHON_MAJOR_VERSION=3 -DPYTHON_MINOR_VERSION=6 -DPIP_PLATFORM=linux_x68-64 -DDS_PATH=/opt/nvidia/deepstream/deepstream -DDS_VERSION=6.0
>make

完成后,会在build目录下生成pyds的python包,然后进行安装,并转移pyds.so文件。

pip3 install pyds-1.1.1-py3-none-linux_x86_64.whl
cp pyds.so /opt/nvidia/deepstream/deepstream/lib

(5)测试DS

cd /opt/nvidia/deepstream/deepstream-6.0/sources/deepstream_python_apps/apps/deepstream-test1
python3 deepstream_test_1.py <input .h264 file>

能成功运行就安装完成了。

二、问题汇总

2.1 在测试DS是否成功运行时,出现缺少某些so文件。

第一种情况是,曾经装过其他版本的CUDA或者CUDNN,导致电脑存在两个版本,软连接指向不唯一。

解决办法:

将低版本删除,将高版本指向低版本。比如我报的是libcudnn.so.8这个找不到

cd /usr/local/cuda/lib64
ll libcudnn.so.8*  #会出现相关的文件
rm libcudnn.so.8   #删除低版本
ln -s libcudnn.so.8.2.4 libcudnn.so.8  #软连接指向

第二种情况是,没有装某些依赖,详情看DS安装时的”安装依赖“。

2. 2 在编译时,出现缺少某些h文件。

当进行DS的cmake或者是make时,会报关于h文件的错误。

原因:缺少某些组件没有安装。

解决办法:

比如报gst.h文件的错,可以这样解决:

sudo apt-get install libgstreamer1.0-dev 

或者是video.h文件:

>sudo apt-get install gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-plugins-bad-videoparsers gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libgstreamer1.0-0 libgstreamer1.0-dev python3-gst-1.0
>sudo apt-get install libgstreamer-plugins-base1.0-dev
>export GST_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/gstreamer-1.0

总结:就是某些东西缺了,具体缺啥具体分析。

2. 3 运行py文件时,报出缺少组件。

例如在运行范例时,会报gst导不进去的问题。

解决办法:

把依赖卸了,再装一遍。

2.4 运行py文件时,报找不到gi模块

原因:安装的gi模块的版本不对

解决办法:

第一种是将gi的版本信息修改为自己的版本

cd /usr/lib/python3/dist-packages/gi
#将36改成38
sudo mv _gi_cairo.cpython-36m-x86_64-linux-gnu.so _gi_cairo.cpython-38-x86_64-linux-gnu.so
sudo mv _gi.cpython-36m-x86_64-linux-gnu.so _gi.cpython-38-x86_64-linux-gnu.so

第二种是安装对应gi的python版本。

这也是为什么最开始的时候会强调python版本在3.6和3.8会比较合适。

这篇关于Linux安装CUDA+CUDNN+TRT+DS教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757418

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优