onnx-tensorrt icon indicating copy to clipboard operation
onnx-tensorrt copied to clipboard

Installation: Compilation Error

Open ongtw opened this issue 3 years ago • 2 comments

I am trying to install onnx-tensorrt but am getting the following compilation error:

~/s/onnx_tensorrt/build 8.0-GA !1 ?2 ❯ cmake .. -DTENSORRT_ROOT=/usr/src/tensorrt && make -j
-- The CXX compiler identification is GNU 7.5.0
-- The C compiler identification is GNU 7.5.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found Protobuf: /usr/local/lib/libprotobuf.so;-lpthread (found version "3.19.3")
-- Build type not set - defaulting to Release
Generated: /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx_onnx2trt_onnx-ml.proto
Generated: /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-operators_onnx2trt_onnx-ml.proto
Generated: /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-data_onnx2trt_onnx.proto
--
-- ******** Summary ********
--   CMake version         : 3.23.1
--   CMake command         : /opt/cmake-3.23.1-linux-aarch64/bin/cmake
--   System                : Linux
--   C++ compiler          : /usr/bin/c++
--   C++ compiler version  : 7.5.0
--   CXX flags             :  -Wall -Wno-deprecated-declarations -Wno-unused-function -Wnon-virtual-dtor
--   Build type            : Release
--   Compile definitions   : ONNX_NAMESPACE=onnx2trt_onnx
--   CMAKE_PREFIX_PATH     :
--   CMAKE_INSTALL_PREFIX  : /usr/local
--   CMAKE_MODULE_PATH     :
--
--   ONNX version          : 1.8.0
--   ONNX NAMESPACE        : onnx2trt_onnx
--   ONNX_BUILD_TESTS      : OFF
--   ONNX_BUILD_BENCHMARKS : OFF
--   ONNX_USE_LITE_PROTO   : OFF
--   ONNXIFI_DUMMY_BACKEND : OFF
--   ONNXIFI_ENABLE_EXT    : OFF
--
--   Protobuf compiler     : /usr/local/bin/protoc
--   Protobuf includes     : /usr/local/include
--   Protobuf libraries    : /usr/local/lib/libprotobuf.so;-lpthread
--   BUILD_ONNX_PYTHON     : OFF
-- Found TensorRT headers at /usr/include/aarch64-linux-gnu
-- Find TensorRT libs at /usr/lib/aarch64-linux-gnu/libnvinfer.so;/usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so
-- Found TENSORRT: /usr/include/aarch64-linux-gnu
-- Configuring done
-- Generating done
-- Build files have been written to: /home/aisg/src/onnx_tensorrt/build
[  1%] Running gen_proto.py on onnx/onnx.in.proto
Processing /home/aisg/src/onnx_tensorrt/third_party/onnx_994c618124/onnx/onnx.in.proto
Writing /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx_onnx2trt_onnx-ml.proto
Writing /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx_onnx2trt_onnx-ml.proto3
Writing /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-ml.pb.h
generating /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx_pb.py
[  2%] Running C++ protocol buffer compiler on /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx_onnx2trt_onnx-ml.proto
[  2%] Built target gen_onnx_proto
[  4%] Running gen_proto.py on onnx/onnx-operators.in.proto
[  4%] Running gen_proto.py on onnx/onnx-data.in.proto
Processing /home/aisg/src/onnx_tensorrt/third_party/onnx_994c618124/onnx/onnx-data.in.proto
Processing /home/aisg/src/onnx_tensorrt/third_party/onnx_994c618124/onnx/onnx-operators.in.proto
Writing /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-data_onnx2trt_onnx.proto
Writing /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-operators_onnx2trt_onnx-ml.proto
Writing /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-data_onnx2trt_onnx.proto3
Writing /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-data.pb.h
Writing /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-operators_onnx2trt_onnx-ml.proto3
generating /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx_data_pb.py
Writing /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-operators-ml.pb.h
generating /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx_operators_pb.py
[  5%] Running C++ protocol buffer compiler on /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-data_onnx2trt_onnx.proto
[  7%] Running C++ protocol buffer compiler on /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-operators_onnx2trt_onnx-ml.proto
[  8%] Building CXX object third_party/onnx/CMakeFiles/onnx_proto.dir/onnx/onnx_onnx2trt_onnx-ml.pb.cc.o
[  9%] Building CXX object third_party/onnx/CMakeFiles/onnx_proto.dir/onnx/onnx-data_onnx2trt_onnx.pb.cc.o
[ 10%] Building CXX object third_party/onnx/CMakeFiles/onnx_proto.dir/onnx/onnx-operators_onnx2trt_onnx-ml.pb.cc.o
[ 11%] Linking CXX static library libonnx_proto.a
[ 14%] Built target onnx_proto
[ 16%] Building CXX object CMakeFiles/nvonnxparser.dir/ModelImporter.cpp.o
[ 16%] Building CXX object CMakeFiles/nvonnxparser.dir/NvOnnxParser.cpp.o
[ 17%] Building CXX object CMakeFiles/nvonnxparser.dir/builtin_op_importers.cpp.o
[ 18%] Building CXX object CMakeFiles/nvonnxparser.dir/ShapedWeights.cpp.o
[ 20%] Building CXX object CMakeFiles/nvonnxparser.dir/onnx2trt_utils.cpp.o
[ 21%] Building CXX object CMakeFiles/nvonnxparser.dir/LoopHelpers.cpp.o
[ 22%] Building CXX object CMakeFiles/nvonnxparser.dir/onnxErrorRecorder.cpp.o
[ 23%] Building CXX object CMakeFiles/nvonnxparser.dir/RNNHelpers.cpp.o
[ 27%] Building CXX object CMakeFiles/nvonnxparser.dir/OnnxAttrs.cpp.o
[ 28%] Building CXX object CMakeFiles/nvonnxparser_static.dir/onnxErrorRecorder.cpp.o
[ 24%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/common/assertions.cc.o
[ 25%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/common/model_helpers.cc.o
[ 30%] Building CXX object CMakeFiles/nvonnxparser_static.dir/ShapedWeights.cpp.o
[ 30%] Building CXX object CMakeFiles/nvonnxparser_static.dir/OnnxAttrs.cpp.o
[ 31%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/checker.cc.o
[ 32%] Building CXX object CMakeFiles/nvonnxparser_static.dir/NvOnnxParser.cpp.o
[ 34%] Building CXX object CMakeFiles/nvonnxparser.dir/ShapeTensor.cpp.o
[ 35%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/common/ir_pb_converter.cc.o
[ 36%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/data_type_utils.cc.o
[ 37%] Building CXX object CMakeFiles/nvonnxparser_static.dir/ModelImporter.cpp.o
[ 38%] Building CXX object CMakeFiles/nvonnxparser_static.dir/RNNHelpers.cpp.o
[ 40%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/common/interned_strings.cc.o
[ 41%] Building CXX object CMakeFiles/nvonnxparser_static.dir/ShapeTensor.cpp.o
[ 42%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/math/defs.cc.o
[ 43%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/common/status.cc.o
[ 50%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/attr_proto_util.cc.o
[ 50%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/controlflow/old.cc.o
[ 50%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/controlflow/defs.cc.o
[ 50%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/schema.cc.o
[ 50%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/generator/old.cc.o
[ 50%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/generator/defs.cc.o
[ 54%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/logical/old.cc.o
[ 54%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/nn/old.cc.o
[ 54%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/shape_inference/implementation.cc.o
[ 55%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/reduction/old.cc.o
[ 56%] Building CXX object CMakeFiles/nvonnxparser_static.dir/LoopHelpers.cpp.o
[ 57%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/logical/defs.cc.o
[ 58%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/math/old.cc.o
[ 60%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/optimizer/optimize.cc.o
[ 61%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/version_converter/convert.cc.o
[ 63%] Building CXX object CMakeFiles/nvonnxparser_static.dir/builtin_op_importers.cpp.o
[ 64%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/tensor/old.cc.o
[ 65%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/object_detection/defs.cc.o
[ 69%] Building CXX object CMakeFiles/nvonnxparser_static.dir/onnx2trt_utils.cpp.o
[ 63%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/nn/defs.cc.o
[ 69%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/optimizer/pass_manager.cc.o
[ 69%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/tensor_util.cc.o
[ 82%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/optimizer/pass_registry.cc.o
[ 82%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/rnn/old.cc.o
[ 82%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/function.cc.o
[ 82%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/tensor/utils.cc.o
[ 82%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/sequence/defs.cc.o
[ 82%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/reduction/defs.cc.o
[ 82%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/quantization/old.cc.o
[ 82%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/traditionalml/old.cc.o
[ 82%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/tensor/defs.cc.o
[ 83%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/quantization/defs.cc.o
[ 84%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/optimizer/pass.cc.o
[ 89%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/traditionalml/defs.cc.o
[ 85%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/version_converter/helper.cc.o
[ 87%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/tensor_proto_util.cc.o
[ 89%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/training/defs.cc.o
[ 89%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/object_detection/old.cc.o
[ 89%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/onnxifi_utils.cc.o
[ 90%] Building CXX object third_party/onnx/CMakeFiles/onnx.dir/onnx/defs/rnn/defs.cc.o
In file included from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/shape_inference.h:4:0,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/schema.h:24,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/tensor/utils.h:6,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/tensor/utils.cc:4:
/home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/proto_utils.h: In function ‘bool onnx2trt_onnx::ParseProtoFromBytes(Proto*, const char*, size_t)’:
/home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/proto_utils.h:34:66: error: no matching function for call to ‘google::protobuf::io::CodedInputStream::SetTotalBytesLimit(long long int, long long int)’
   coded_stream.SetTotalBytesLimit((2048LL << 20) - 1, 512LL << 20);
                                                                  ^
In file included from /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx_onnx2trt_onnx-ml.pb.h:23:0,
                 from /home/aisg/src/onnx_tensorrt/build/third_party/onnx/onnx/onnx-ml.pb.h:2,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/onnx_pb.h:50,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/data_type_utils.h:11,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/schema.h:21,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/tensor/utils.h:6,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/tensor/utils.cc:4:
/usr/local/include/google/protobuf/io/coded_stream.h:406:8: note: candidate: void google::protobuf::io::CodedInputStream::SetTotalBytesLimit(int)
   void SetTotalBytesLimit(int total_bytes_limit);
        ^~~~~~~~~~~~~~~~~~
/usr/local/include/google/protobuf/io/coded_stream.h:406:8: note:   candidate expects 1 argument, 2 provided
In file included from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/shape_inference.h:4:0,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/schema.h:24,
                 from /home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/defs/logical/old.cc:4:
/home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/proto_utils.h: In function ‘bool onnx2trt_onnx::ParseProtoFromBytes(Proto*, const char*, size_t)’:
/home/aisg/src/onnx_tensorrt/third_party/onnx/onnx/proto_utils.h:34:66: error: no matching function for call to ‘google::protobuf::io::CodedInputStream::SetTotalBytesLimit(long long int, long long int)’
   coded_stream.SetTotalBytesLimit((2048LL << 20) - 1, 512LL << 20);
[ lots of (protobuf and other) errors truncated ]

The make summary claims to find protobuf but it is not finding the functions to continue. I am installing this on a Nvidia Jetson AGX with JetPack 4.6, TensorRT 8.0.1 and protobuf 3.19.3. (I have checked out the older 8.0-GA branch for my TensorRT version)

[ update ] FWIW, I tried building from two different systems: Nvidia Jetson NX and Jetson AGX, both with JetPack 4.6 and TensorRT 8.0.1, protobuf 3.19.3, and both give me the same errors.

Would appreciate any solutions/tips on how to rectify this.

ongtw avatar May 17 '22 08:05 ongtw

I believe the root cause is that the ONNX submodule does not support protobuf >= 3.11. Can you try installing a protobuf version < 3.11?

kevinch-nv avatar May 20 '22 22:05 kevinch-nv

Thanks for the tip: I had to downgrade Google's protobuf to 3.11 in order to get it working. Perhaps this could be a FAQ entry to help future developers out. The required mix of TensorRT, Onnx and Protobuf versions are not obvious.

ongtw avatar May 23 '22 06:05 ongtw