【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,堅持就是勝利!

發佈了35 篇原創文章 · 獲贊 26 · 訪問量 8497
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章