源码导入onnx-tensorrt作为onnx解析器

看tensorRT从零起步高性能部署(加群作者答疑,代码持续更新)-学习视频教程-腾讯课堂的第五章第二节,因为我用的tensorrt版本是8.4.2跟老师的8.0不一样,记录一下

目录结构

.
|-- Makefile
|-- myselu-kernel.cu
|-- myselu-plugin.cpp
|-- myselu-plugin.hpp
|-- objs
|   |-- main.cpp.mk
|   |-- main.cpp.o
|   |-- onnx
|   |   |-- onnx-ml.pb.cpp.mk
|   |   `-- onnx-ml.pb.cpp.o
|   `-- onnx-tensorrt
|       |-- ConditionalHelpers.cpp.mk
|       |-- ConditionalHelpers.cpp.o
|       |-- ImporterContext.cpp.mk
|       |-- ImporterContext.cpp.o
|       |-- LoopHelpers.cpp.mk
|       |-- LoopHelpers.cpp.o
|       |-- ModelImporter.cpp.mk
|       |-- ModelImporter.cpp.o
|       |-- NvOnnxParser.cpp.mk
|       |-- NvOnnxParser.cpp.o
|       |-- OnnxAttrs.cpp.mk
|       |-- OnnxAttrs.cpp.o
|       |-- RNNHelpers.cpp.mk
|       |-- RNNHelpers.cpp.o
|       |-- ShapeTensor.cpp.mk
|       |-- ShapeTensor.cpp.o
|       |-- ShapedWeights.cpp.mk
|       |-- ShapedWeights.cpp.o
|       |-- builtin_op_importers.cpp.mk
|       |-- builtin_op_importers.cpp.o
|       |-- onnx2trt_utils.cpp.mk
|       |-- onnx2trt_utils.cpp.o
|       |-- onnxErrorRecorder.cpp.mk
|       `-- onnxErrorRecorder.cpp.o
|-- result.txt
|-- src
|   |-- main.cpp
|   |-- onnx
|   |   |-- common
|   |   |   `-- stl_backports.h
|   |   |-- onnx-ml.pb.cpp
|   |   |-- onnx-ml.pb.h
|   |   |-- onnx-ml.proto
|   |   |-- onnx_pb.h
|   |   `-- onnxifi.h
|   `-- onnx-tensorrt
|       |-- ConditionalHelpers.cpp
|       |-- ConditionalHelpers.hpp
|       |-- ImporterContext.cpp
|       |-- ImporterContext.hpp
|       |-- LoopHelpers.cpp
|       |-- LoopHelpers.hpp
|       |-- ModelImporter.cpp
|       |-- ModelImporter.hpp
|       |-- NvOnnxParser.cpp
|       |-- NvOnnxParser.h
|       |-- OnnxAttrs.cpp
|       |-- OnnxAttrs.hpp
|       |-- RNNHelpers.cpp
|       |-- RNNHelpers.hpp
|       |-- ShapeTensor.cpp
|       |-- ShapeTensor.hpp
|       |-- ShapedWeights.cpp
|       |-- ShapedWeights.hpp
|       |-- Status.hpp
|       |-- TensorOrWeights.hpp
|       |-- builtin_op_importers.cpp
|       |-- builtin_op_importers.hpp
|       |-- common.hpp
|       |-- half.h
|       |-- ieee_half.h
|       |-- libnvonnxparser.version
|       |-- onnx2trt.hpp
|       |-- onnx2trt_common.hpp
|       |-- onnx2trt_runtime.hpp
|       |-- onnx2trt_utils.cpp
|       |-- onnx2trt_utils.hpp
|       |-- onnxErrorRecorder.cpp
|       |-- onnxErrorRecorder.hpp
|       |-- onnx_utils.hpp
|       |-- toposort.hpp
|       |-- trt_utils.hpp
|       `-- utils.hpp
`-- workspace
    `-- pro

1. github上clone代码

cd src/
git clone -b 8.4-GA https://github.com/onnx/onnx-tensorrt.git

2. 删除不需要的文件

cd onnx-tensorrt
rm -rf .github  docs onnx_tensorrt third_party CMakeLists.txt  LICENSE README.md main.cpp onnx_backend_test.py  setup.py .gitignore .gitmodules onnx_trt_backend.cpp getSupportedAPITest.cpp

3. 创建onnx,到onnx/onnx at f7ee1ac60d06abe8e26c9b6bbe1e3db5286b614b · onnx/onnx · GitHub下载几个需要的文件放到onnx里

onnx_pb.h onnx-ml.proto onnxifi.h

在onnx里创建common,到https://github.com/onnx/onnx/tree/f7ee1ac60d06abe8e26c9b6bbe1e3db5286b614b/onnx/common

下载几个需要的文件放到common里

stl_backports.h

4. 修改源码

onnx_pb.h的50到46行改成#include "onnx/onnx-ml.pb.h",删掉5到6行

把onnx-tensorrt中所有的ONNX_NAMESPACE::替换成onnx::

把ImporterContext.hpp的112行的onnx::替换成ONNX_NAMESPACE::

5. protoc生成需要的cpp文件 

cd onnx/
# 注释onnx-ml.proto最后一行
protoc onnx-ml.proto --cpp_out=./
mv onnx-ml.pb.cc onnx-ml.pb.cpp

你可能感兴趣的:(github)