看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