看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