VPI 1.1 installation on x86

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) GPU
• DeepStream Version 6.0
• JetPack Version (valid for Jetson only)
• TensorRT Version 8.0.1
• NVIDIA GPU Driver Version (valid for GPU only) 470
• Issue Type( questions, new requirements, bugs) questions
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)
• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)

Hi, currently I am using deepstream 6.0 dev container environment (x86). I want to develop some gstreamer plugins based on VPI library. The latest VPI version that I can get is 1.0.15 (following some steps in VPI Getting Started page). That brings some conflicts that deepstream 6.0 nvtracker requires VPI 1.1. If I link my application and plugins with VPI 1.0.15, then nvtracker will fail to initialize libnvds_nvmultiobjecttracker.so ()
dlopen error: /opt/nvidia/vpi1/lib64/libnvvpi.so.1: version `VPI_1.1’ not found (required by /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so)
In summary, my question is how to install VPI dev package 1.1 (1.1.12) in deepstream 6.0 dev container environment (x86).
Thanks,

The vpi library is already in DeepStream SDK package. You don’t need to install by yourself.

Please follow the DeepStream SDK installation instructions. Quickstart Guide — DeepStream 6.1.1 Release documentation

Hi Fiona, I can find only runtime package (.so library), not headers or Cmake config file in DeepStream 6.0 image

Please check the container. The library is /opt/nvidia/deepstream/deepstream-6.0/lib/libnvvpi.so.1.1.12. And the static link /opt/nvidia/deepstream/deepstream-6.0/lib/libnvvpi.so.1 is linked to it. You need to install the same version and relink to the library you installed to avoid conflict.

Please follow the instructions shown in VPI installation documentation, but replace step 3 with the following:

For Ubuntu 16.04:
sudo add-apt-repository ‘deb https://repo.download.nvidia.com/jetson/x86_64/xenial r32.6 main’
For Ubuntu 18.04:
sudo add-apt-repository ‘deb https://repo.download.nvidia.com/jetson/x86_64/bionic r32.6 main’

Alternatively, you can download the needed packages from here:

Ubuntu 16.04:
libvpi1_1.1.12_amd64.deb
vpi1-dev_1.1.12_amd64.deb
Ubuntu 18.04:
libnvvpi1_1.1.12_amd64.deb
vpi1-dev_1.1.12_amd64.deb

Hi, I tried .deb packages from repo download page but the library depends on CUDA 10.2, not gonna work with DeepStream 6.0 docker image (CUDA 11.4). Can you confirm that? Thanks.

Yes, you’re right. We do have an internal VPI-1.1 build for CUDA-11.4. I’ll check if/how we can release it.

Hi, any news?

# jetson
$ docker run --rm -it nvcr.io/nvidia/deepstream-l4t:6.1-samples
root@1b3e4035a6f6:/opt/nvidia/deepstream/deepstream-6.1# ls -lah lib/libnvvpi*
ls: cannot access 'lib/libnvvpi*': No such file or directory
# x86-64, gpu
docker run --rm -it nvcr.io/nvidia/deepstream:6.1-samples
root@6f133cb57839:/opt/nvidia/deepstream/deepstream-6.1# ls -lah lib/libnvvpi*
lrwxrwxrwx 1 root root  60 May  9 10:17 lib/libnvvpi.so.2 -> /opt/nvidia/deepstream/deepstream-6.1/lib/libnvvpi.so.2.0.10
-rw-r--r-- 1 root root 52M May  9 10:17 lib/libnvvpi.so.2.0.10

For Jetson, the vpi library is at:
ll /opt/nvidia/vpi2/lib64/

root@000226d2ac7f:/opt/nvidia/deepstream/deepstream-6.1# ll /opt/nvidia/vpi2/lib64/
total 65616
drwxr-xr-x 3 root root 4096 May 5 00:08 ./
drwxr-xr-x 5 root root 4096 May 5 00:08 …/
lrwxrwxrwx 1 root root 13 May 3 21:49 libnvvpi.so → libnvvpi.so.2
lrwxrwxrwx 1 root root 18 May 3 21:49 libnvvpi.so.2 → libnvvpi.so.2.0.13
-rw-r–r-- 1 root root 67176760 May 3 21:49 libnvvpi.so.2.0.13
drwxr-xr-x 2 root root 4096 May 5 00:08 priv/

Thanks @Amycao .

Indeed, the libraries are correctly found at /opt/nvidia/vpi2/

Is there something wrong with the lib on docker?

$ docker run \
  --rm \
  -it \
  --net=host \
  --runtime=nvidia \
  -e DISPLAY=:0 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  --runtime=nvidia nvcr.io/nvidia/deepstream-l4t:6.1-samples
root@ubuntu:/opt/nvidia/deepstream/deepstream-6.1# gst-launch-1.0 \
  uridecodebin \
    uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.mp4 \
  ! m.sink_0 \
  nvstreammux \
    name=m \
    batch-size=1 \
    width=1280 \
    height=720 \
  ! nvinfer \
    config-file-path=/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_infer_primary.txt \
    batch-size=1 \
    unique-id=1 \
  ! nvtracker \
    ll-lib-file=/opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so \
    ll-config-file=/opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/apps/deepstream-nvdsanalytics/config_tracker_NvDCF_perf.yml \
  ! fakesink
(Argus) Error FileOperationFailed: Connecting to nvargus-daemon failed: No such file or directory (in src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 204)
(Argus) Error FileOperationFailed: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)

(gst-plugin-scanner:22): GStreamer-WARNING **: 11:55:16.861: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_udp.so': librivermax.so.0: cannot open shared object file: No such file or directory

(gst-plugin-scanner:22): GStreamer-WARNING **: 11:55:16.903: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferserver.so': libtritonserver.so: cannot open shared object file: No such file or directory
Setting pipeline to PAUSED ...
gstnvtracker: Loading low-level lib at /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so
gstnvtracker: Failed to open low-level lib at /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so
 dlopen error: /opt/nvidia/vpi2/lib64/priv/libcupva_host.so: undefined symbol: PvaQueueSubmit
gstnvtracker: Failed to initilaize low level lib.
ERROR: Pipeline doesn't want to pause.
Setting pipeline to NULL ...
Freeing pipeline ...

Im asking because of the lines

gstnvtracker: Loading low-level lib at /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so
gstnvtracker: Failed to open low-level lib at /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so
 dlopen error: /opt/nvidia/vpi2/lib64/priv/libcupva_host.so: undefined symbol: PvaQueueSubmit
  • on x86 docker this works

Update:

Using deepstream-l4t:6.1.1 it works fine