dGPU Setup for Ubuntu

本节介绍在安装DeepStream SDK之前,如何准备一个NVIDIA dGPU设备的Ubuntu x86_64系统。

注意:本文使用术语“dGPU”独立GPU(discrete GPU)来指代NVIDIA GPU扩展卡产品,例如NVIDIA Tesla® T4、NVIDIA® Hopper、NVIDIA® Ampere、NVIDIA® ADA、NVIDIA GeForce® GTX 1080、NVIDIA GeForce® RTX 2080、NVIDIA GeForce® RTX 3080、NVIDIA GeForce® RTX 4080以及GeForce®/NVIDIA RTX/QUADRO系列。此版本的DeepStream SDK在支持NVIDIA驱动程序版本535.104.12以及NVIDIA TensorRT™ 8.6.1.6及更高版本的GPU上运行。

您必须安装以下组件:

  • Ubuntu 22.04
  • GStreamer 1.20.3
  • NVIDIA driver 535.104.12
  • CUDA 12.2
  • TensorRT 8.6.1.6

删除所有以前的DeepStream安装

输入以下命令删除所有DeepStream 3.0或者3.0以前的安装:

sudo rm -rf /usr/local/deepstream /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnv* \
            /usr/bin/deepstream* /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libnvdsgst* \
            /usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream* \
            /opt/nvidia/deepstream/deepstream*

要删除DeepStream 4.0或更高版本的安装:

  1. 打开 /opt/nvidia/deepstream/deepstream/ 目录下的 uninstall.sh 文件
  2. 设定 PREV_DS_VER 为 4.0
  3. 执行脚本 sudo ./uninstall.sh

安装所需依赖

在安装DeepStream SDK之前,请输入以下命令安装所需的包:

sudo apt install \
libssl3 \
libssl-dev \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstreamer-plugins-base1.0-dev \
libgstrtspserver-1.0-0 \
libjansson4 \
libyaml-cpp-dev \
libjsoncpp-dev \
protobuf-compiler \
gcc \
make \
git \
python3 -y

注意: 有时在使用RTSP流时,应用程序可能会在达到EOS(End of Stream)时卡住。这是由于rtpjitterbuffer组件中存在的问题引起的。为了解决这个问题,在/opt/nvidia/deepstream/deepstream/目录下提供了一个名为“update_rtpmanager.sh”的脚本,其中提供了更新gstrtpmanager库所需的详细信息。在安装了上述提到的软件包作为前提条件后,应该执行该脚本。

有时在运行gstreamer管道或示例应用程序时,用户可能会遇到错误: GLib (gthread-posix.c): Unexpected error from C library during 'pthread_setspecific': Invalid argument. 这个问题是因为glib 2.0-2.72版本中存在的一个错误导致的,这是Ubuntu 22.04默认安装的版本。这个问题在glib2.76中得到了解决,因此需要安装glib2.76来解决这个问题(https://github.com/GNOME/glib/tree/2.76.6)。

安装CUDA Toolkit 12.2

运行如下命令(reference, https://developer.nvidia.com/cuda-downloads): .

sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt-get update
sudo apt-get install cuda-toolkit-12-2

注意:

如果您在安装CUDA时观察到以下错误,请参阅https://developer.nvidia.com/blog/updating-the-cuda-linux-gpg-repository-key/

W: GPG error: https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC
E: The repository 'https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 InRelease' is no longer signed.

安装NVIDIA驱动 535.104.12

注意:

安装nvidia驱动程序时,请确保gdm、lightdm或Xorg服务已停止

使用命令: sudo service gdm stop sudo service lightdm stop sudo pkill -9 Xorg

要在Hopper、Ampere和Ada上运行更多的流(200+),请按照以下说明操作:

sudo service display-manager stop
#确保没有进程在GPU上运行,例如Xorg或trition server等
$ sudo pkill -9 Xorg
#移除内核模块
$ sudo rmmod nvidia_drm nvidia_modeset nvidia
#使用Regkeys加载模块
$ sudo modprobe nvidia NVreg_RegistryDwords="RMDebugOverridePerRunlistChannelRam = 1;RMIncreaseRsvdMemorySizeMB = 1024;RMDisableChIdIsolation = 0x1;RmGspFirmwareHeapSizeMB = 256"
$ sudo service display-manager start

安装 TensorRT 8.6.1.6

运行以下命令安装TensorRT 8.6.1.6:

sudo apt-get install libnvinfer8=8.6.1.6-1+cuda12.0 libnvinfer-plugin8=8.6.1.6-1+cuda12.0 libnvparsers8=8.6.1.6-1+cuda12.0 \
libnvonnxparsers8=8.6.1.6-1+cuda12.0 libnvinfer-bin=8.6.1.6-1+cuda12.0 libnvinfer-dev=8.6.1.6-1+cuda12.0 \
libnvinfer-plugin-dev=8.6.1.6-1+cuda12.0 libnvparsers-dev=8.6.1.6-1+cuda12.0 libnvonnxparsers-dev=8.6.1.6-1+cuda12.0 \
libnvinfer-samples=8.6.1.6-1+cuda12.0 libcudnn8=8.9.4.25-1+cuda12.2 libcudnn8-dev=8.9.4.25-1+cuda12.2

注意:

假设已经添加了 deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/,如CUDA Toolkit 12.2安装步骤中所述。

安装librdkafka(为消息代理启用Kafka协议适配器)

git clone https://github.com/confluentinc/librdkafka.git
# 配置编译安装librdkafka库
cd librdkafka
git checkout tags/v2.2.0
./configure --enable-ssl
make
sudo make install
# 拷贝该库到deepstream目录
sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.4/lib
sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.4/lib
sudo ldconfig

安装DeepStream SDK

Method 1:使用DeepStream Debian软件包

下载DeepStream 6.4 dGPU Debian软件包 deepstream-6.4_6.4.0-1_amd64.deb:https://catalog.ngc.nvidia.com/orgs/nvidia/resources/deepstream

输入以下命令:

sudo apt-get install ./deepstream-6.4_6.4.0-1_amd64.deb

Method 2:下载DeepStream tar软件包:https://catalog.ngc.nvidia.com/orgs/nvidia/resources/deepstream

导航到下载的DeepStream软件包的位置,然后提取和安装DeepStream SDK:

sudo tar -xvf deepstream_sdk_v6.4.0_x86_64.tbz2 -C /
cd /opt/nvidia/deepstream/deepstream-6.4/
sudo ./install.sh
sudo ldconfig

Method 3:使用Docker容器

DeepStream Docker容器可在NGC上获得。请查看Docker容器部分,了解如何使用Docker容器开发和部署DeepStream。

参考

dGPU Setup for Ubuntu