TRT 7.2.3.4 dependency issue

Description

Following Installation Guide :: NVIDIA Deep Learning TensorRT Documentation i can’t reinstall my 7.2.3.4 dependency.

Environment

TensorRT Version: 7.2.3.4
GPU Type: RTX 3090
Nvidia Driver Version: 460.73.01
CUDA Version: 11.2
CUDNN Version: 8
Operating System + Version: ubuntu18.04
Python Version (if applicable): 3.6.9
TensorFlow Version (if applicable):
PyTorch Version (if applicable):
Baremetal or Container (if container which image + tag):

Relevant Files

The following packages have unmet dependencies:
 tensorrt : Depends: libnvinfer-dev (= 7.2.3-1+cuda11.1) but 8.0.0-1+cuda11.3 is to be installed
            Depends: libnvinfer-plugin-dev (= 7.2.3-1+cuda11.1) but 8.0.0-1+cuda11.3 is to be installed
            Depends: libnvparsers-dev (= 7.2.3-1+cuda11.1) but 8.0.0-1+cuda11.3 is to be installed
            Depends: libnvonnxparsers-dev (= 7.2.3-1+cuda11.1) but 8.0.0-1+cuda11.3 is to be installed
            Depends: libnvinfer-samples (= 7.2.3-1+cuda11.1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Steps To Reproduce

1. Download https://developer.nvidia.com/compute/machine-learning/tensorrt/secure/7.2.3/local_repos/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226_1-1_amd64.deb 
2. dpkg -i nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226_1-1_amd64.deb
3. sudo apt update 
4. sudo apt install tensorrt

Then you get the dependency error above.

I used apt search to check the apt source and realized that there are several dependencies missing in the central source.

For example:
when I search for libnvinfer-dev, there is no 7.2.3.4 anymore but only 8.0.0

libnvinfer-dev/unknown 8.0.0-1+cuda11.3 amd64
  TensorRT development libraries and headers

python-libnvinfer-dev/unknown,unknown 7.2.3-1+cuda11.1 amd64
  Python development package for TensorRT

python3-libnvinfer-dev/unknown 8.0.0-1+cuda11.3 amd64
  Python 3 development package for TensorRT

I’m currently using the nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04 container. Currently I have some production devices out in the wild in low internet speed environment that I can’t easily change the base container cus rebuild will be super slow. I saw some posts that you recommend to use the ngc tensorrt containers but so far I can’t do that. I can only update the current image. I also checked the apt dependency directly inside this container and I got the 8.0.0 version for all the libs too. it seems the dependency is changed with your distribution with ubuntu 18.04 but not actually with the tensorrt deb. I don’t think this is a good way for software update because this will silently cause failure of environment setup for all the ubuntu 18.04 users.

Or there should be some ppa that I can applied for installing older versions of dependencies.

1 Like

Hi,
Please refer to the installation steps from the below link if in case you are missing on anything

Also, we suggest you to use TRT NGC containers to avoid any system dependency related issues.

Thanks!

Hey, please read my description carefully. I have referred to both and I stated why I can’t use ngc containers. Basically the installation steps you shared didn’t work.

it’s not system dependency issue, it’s your internal dependency and your new release for trt 8 messed up the dependency even for old versions, please check

Hi @ysyyork,

We recommend you to follow below steps to remove TensorRT and reinstall by following correct installation steps in the same doc.

Thank you.

I did, i always started by a clean base docker image and build on top. do you mean I need to remove the tensorrt in the base image? But the base image previously works, I didn’t change any version for that. It just suddenly stopped working when the trt 8 came out.

Hi @ysyyork,

Could you please let us know have you done any changes, looks like some packages are upgraded.
We would recommend you to try installing 8.0.0 as dependencies match to TensorRT 8.0.0.
Please refer support matrix doc for more details,

Thank you.

The problem for install trt 8 is that we already have a lot of models in the production environment with trt 7. if I change to trt 8 and generate the engine file, it can’t be run on those devices and we have to update all the devices with trt 8 which is a really big hurdle for us right now.

the problem I’m facing is that the previous trt 7 container that i used to generate the engine, with the same dockerfile, can’t be built any longer because of the dependency issues. I haven’t changed anything for that dockerfile (same base image, same installation command used). When i dig into the issue with apt search from the base image, i saw the default dependencies for libs like libnvinfer-dev automatically changed to 8.0.0 even if i want to install trt 7 with the deb package. I’m very confused about this because the dependencies used to be 7.

here is a screenshot of the image i built pre trt 8 release
image.png

and this is from the current current image i built post trt 8 release:
libnvinfer-dev/unknown 8.0.0-1+cuda11.3 amd64
TensorRT development libraries and headers

python-libnvinfer-dev/unknown,unknown 7.2.3-1+cuda11.1 amd64
Python development package for TensorRT

python3-libnvinfer-dev/unknown 8.0.0-1+cuda11.3 amd64
Python 3 development package for TensorRT

Do you guys have resources to reach your releasing team for more info to confirm if the dependency gets silently upgraded in the apt source? if yes is there a way to get back? Now the situation is i can’t even install an older version of trt. I have to use trt 8. I’m not sure if this is what you planned but I think for a lot of production applications, this is no good. following the doc you sent above for installation, you do have options for the user to choose which trt version they want to install from the deb installation method right?

Hi @ysyyork,

This looks like CUDA configuration issue, we see both 11.1 and 11.3 related packages.
We recommend you to please post your concern on CUDA forum to get better help.

Thank you.