【TensorRT】自定义层插件plugin的使用—结合fc_plugin_caffe_mnist

【TensorRT】自定义层插件plugin的使用

官网中给了几个关于插件plugin的使用,只有现成的教程,比如:
TensorRT&Sample&Python[fc_plugin_caffe_mnist]
TensorRT学习笔记5 - 运行fc_plugin_caffe_mnist
但是,总有你预想不到的情况发生。
接下来将结合官网例子:samples/tensorRT_sample/samples/python/fc_plugin_caffe_mnist 来实操一下。
(文件中有README文件,有详细说明的哦)

推荐参考阅读:
pybind11的官方手册
cmake官方手册

安装依赖

在这里插入图片描述
我们先看.h,一般需要这些库在你装好tensorrt之后都会有装的,楼主缺了一个pybind11的库需要安装详细看这:pybind11使用
安装完之后,我们就可以进行下一步了

编译链接pyFullyConnected.cpp

我们先执行下面的步骤:

cd /your/TensorRT/path/samples/python/fc_plugin_caffe_mnist
mkdir build & pushd build
cmake ..
make
popd
sudo python3 sample.py -d /home/user/tensorrt_tar/TensorRT/data/

一般来说是没问题的,但是报错他真的就是说来就来了。。。

错误汇总

  • cmake:补不到库: 一般先会是说找不到各种各样的库,我们就不直接cmake,而是选择带参数的cmake
    cmake .. -DPYBIND11_DIR=/usr/local/pybind11/
    -DCUDA_ROOT=/usr/local/cuda-9.2/
    -DPYTHON3_INC_DIR=/usr/include/python3.6/
    -DNVINFER_LIB=/path/to/libnvinfer.so -DTRT_INC_DIR=/path/to/tensorrt/include/

  • cmake:No SOURCES given to target: 怎么可能没有源文件呢,肯定是路径出问题啦,我们进入cmakelist.txt文件修改下
    在这里插入图片描述
    将原先的${CMAKE_SOURCE_DIR}路径注释掉,修改为我们的相对路径,如下:
    # file(GLOB_RECURSE SOURCE_FILES ${CMAKE_SOURCE_DIR}/plugin/*.cpp)
    file(GLOB_RECURSE SOURCE_FILES ./*.cpp)

  • cmake成功!奥利给
    在这里插入图片描述

  • /usr/bin/ld: cannot find /usr/local/cuda-10.0/lib64: File format not recognized
    /usr/bin/ld: cannot find /home/winner/TensorRT-6.0.1.5/lib: File format not recognized
    error: ld returned 1 exit status
    很简单,看报错信息,查看一下是哪里的路径,原来是这里:
    在这里插入图片描述
    我们cmake的时候没有指定是哪一个库,所以在cmake的时候带上指定路径的参数就行了(修改后指定文件的cmake结果)
    在这里插入图片描述
    康康我的,把有问题的库全部指定出来:cmake .. -DCUDA_ROOT=/usr/local/cuda-10.0 -DNVINFER_LIB=/home/winner/TensorRT-6.0.1.5/lib/libnvinfer.so -D_NVINFER_PLUGIN_LIB=/home/winner/TensorRT-6.0.1.5/lib/libnvinfer_plugin.so -D_NVPARSERS_LIB=/home/winner/TensorRT-6.0.1.5/lib/ -D_TRT_INC_DIR=/home/winner/TensorRT-6.0.1.5/include/NvInfer.h -DNVPARSERS_LIB=/home/winner/TensorRT-6.0.1.5/lib/libnvparsers.so -D_CUDNN_LIB=/usr/local/cuda-10.0/lib64/libcudnn.so -D_CUDNN_INC_DIR=/usr/local/cuda-10.0/include/
    make
    在这里插入图片描述

  • from build import fcplugin,ImportError: generic_type: type “FCPluginFactory” referenced unknown base type "nvcaffeparser1::IPluginFactoryExt"
    这个应该是最大的坑了!!!!文件都生成好了,但是就是import不了,nmd为什么???
    然后,果然还是在官网的论坛找到解决的方法,pybind11版本问题!!!为什么这些人都不喜欢把版本写明,让我们一个个去摸索????????????????????????????????????????
    [error] deserialize_cuda_engine(): incompatible funtion arguments in sample fc_plugin_caffe_mnist
    坑又来了,要是用cmake就会遇到pytest检测不到的问题,这时候就直接用他自带的工具安装,还要把你之前build不成功的文件删除掉。
    sudo git clone -b v2.2.3 https://github.com/pybind/pybind11.git
    sudo python3 setup.py build
    sudo python3 setup.py install
    之后在build文件夹生成两个.so二进制文件
    在这里插入图片描述
    ok!收工,接下来楼主打算搞prelu的python-api,坚持就是胜利!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值