NVIDIA / TensorRT

NVIDIA® TensorRT™ is an SDK for high-performance deep learning inference on NVIDIA GPUs. This repository contains the open source components of TensorRT.
https://developer.nvidia.com/tensorrt
Apache License 2.0
10.48k stars 2.1k forks source link

Colcon build failure of TensorRT using python3.8 and tensorrt-10.1.0.27 #3996

Open annb3 opened 1 month ago

annb3 commented 1 month ago

Description

Running colcon build on autoware package of ROS2 humble into the docker environment gives me this errors:

/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp: In member function ‘bool lidar_transfusion::TransfusionTRT::preprocess(const PointCloud2&, const tf2_ros::Buffer&)’:
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:158:30: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘setTensorAddress’
  158 |   network_trt_ptr_->context->setTensorAddress(
      |                              ^~~~~~~~~~~~~~~~
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:160:30: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘setInputShape’; did you mean ‘setInputShapeBinding’?
  160 |   network_trt_ptr_->context->setInputShape(
      |                              ^~~~~~~~~~~~~
      |                              setInputShapeBinding
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:165:30: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘setTensorAddress’
  165 |   network_trt_ptr_->context->setTensorAddress(
      |                              ^~~~~~~~~~~~~~~~
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:167:30: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘setInputShape’; did you mean ‘setInputShapeBinding’?
  167 |   network_trt_ptr_->context->setInputShape(
      |                              ^~~~~~~~~~~~~
      |                              setInputShapeBinding
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:170:30: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘setTensorAddress’
  170 |   network_trt_ptr_->context->setTensorAddress(
      |                              ^~~~~~~~~~~~~~~~
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:172:30: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘setInputShape’; did you mean ‘setInputShapeBinding’?
  172 |   network_trt_ptr_->context->setInputShape(
      |                              ^~~~~~~~~~~~~
      |                              setInputShapeBinding
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:176:30: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘setTensorAddress’
  176 |   network_trt_ptr_->context->setTensorAddress(
      |                              ^~~~~~~~~~~~~~~~
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:178:30: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘setTensorAddress’
  178 |   network_trt_ptr_->context->setTensorAddress(
      |                              ^~~~~~~~~~~~~~~~
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:180:30: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘setTensorAddress’
  180 |   network_trt_ptr_->context->setTensorAddress(
      |                              ^~~~~~~~~~~~~~~~
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp: In member function ‘bool lidar_transfusion::TransfusionTRT::inference()’:
/home/user/autoware/src/universe/autoware.universe/perception/lidar_transfusion/lib/transfusion_trt.cpp:187:44: error: ‘class nvinfer1::IExecutionContext’ has no member named ‘enqueueV3’; did you mean ‘enqueueV2’?
  187 |   auto status = network_trt_ptr_->context->enqueueV3(stream_);
      |                                            ^~~~~~~~~
      |                                            enqueueV2
gmake[2]: *** [CMakeFiles/transfusion_lib.dir/build.make:160: CMakeFiles/transfusion_lib.dir/lib/transfusion_trt.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:143: CMakeFiles/transfusion_lib.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed   <<< lidar_transfusion [1min 0s, exited with code 2]

Environment

docker environment: autoware ROS2 package

TensorRT Version: 10.1.0.27

NVIDIA GPU: NVIDIA RTX A2000 Laptop GPU

NVIDIA Driver Version: 555.42.06

CUDA Version: 12.5

CUDNN Version: cuda_12.2.r12.2

Operating System: Linux - Ubuntu 20.04 LTS

Python Version (if applicable): 3.8

Question

How can I solve this problem?

lix19937 commented 1 month ago

First you should check your env has multi tensorrt lib so ? And check your makefile the nvinfer related include path and library path .