TensorRT学习笔记6 - IPlugin
生活随笔
收集整理的這篇文章主要介紹了
TensorRT学习笔记6 - IPlugin
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 簡介
- 構造函數
- 析構函數
- 成員函數
簡介
? ? ? ?IPlugin是一個類,用于實現自定義層(custom layer),我們可以繼承這個類,然后實現它的成員函數。在使用IPlugin時,要include <NvInfer.h>
構造函數
? ? ? ?繼承IPlugin類需要實現兩個構造函數。
- 構造函數1
? ? ? ?plugin(const int parameter1, const int parameter2, …)
? ? ? ?此構造函數和我們常寫的構造函數,沒有什么區別。 - 構造函數2
? ? ? ?plugin(const void* data, size_t length)
? ? ? ?此構造函數通過反序列化進行參數讀入,和成員函數serialize對應。
析構函數
? ? ? ?析構函數就是我們常寫的析構函數,沒有什么區別。
成員函數
- configure
? ? ? ?virtual void nvinfer1::IPlugin::configure(
? ? ? ?? ? ? ?const Dims * inputDims, -----------------------------> 輸入tensor的維度
? ? ? ?? ? ? ?int nbInputs, ----------------------------------------------> 輸入個數
? ? ? ?? ? ? ?const Dims * outputDims, ----------------------------> 輸出tensor的維度
? ? ? ?? ? ? ?int nbOutputs, --------------------------------------------> 輸出個數
? ? ? ?? ? ? ?int maxBatchSize ---------------------------------------> 最大的BatchSize)
? ? ? ?函數功能:配置自定義層,這個函數會在調用initialize()之前調用
? ? ? ?Returns:沒有返回值 - enqueue
? ? ? ?virtual int nvinfer1::IPlugin::enqueue(
? ? ? ?? ? ? ?int batchSize, ---------------------------------------------> BatchSize
? ? ? ?? ? ? ?const void *const * inputs, ----------------------------> 輸入tensor的內存
? ? ? ?? ? ? ?void ** outputs, -------------------------------------------> 輸出tensor的內存
? ? ? ?? ? ? ?void * workspace, ---------------------------------------> 執行的工作空間
? ? ? ?? ? ? ?cudaStream_t stream ----------------------------------> 執行kernel函數的stream)
? ? ? ?函數功能:執行自定義層,具體的過程一般寫在cu文件中
? ? ? ?Returns:返回0代表success,返回其他值會終止執行。 - getNbOutputs
? ? ? ?virtual int nvinfer1::IPlugin::getNbOutputs( ) const
? ? ? ?函數功能:獲得自定義層的輸出個數
? ? ? ?Returns:自定義層的輸出個數 - getOutputDimensions
? ? ? ?virtual Dims nvinfer1::IPlugin::getOutputDimensions(
? ? ? ?? ? ? ?int index, ---------------------------------------------------> 輸出tensor的index
? ? ? ?? ? ? ?const Dims * inputs, ------------------------------------> 輸入tensor
? ? ? ?? ? ? ?int nbInputDims ------------------------------------------> 輸入個數)
? ? ? ?函數功能:獲得自定義層的輸出tensor的維度信息
? ? ? ?Returns:自定義層的輸出的維度信息 - getSerializationSize
? ? ? ?virtual size_t nvinfer1::IPlugin::getSerializationSize( )
? ? ? ?函數功能:計算序列化緩沖區需要的size
? ? ? ?Returns: 序列化緩沖區的size - getWorkspaceSize
? ? ? ?virtual size_t nvinfer1::IPlugin::getWorkspaceSize(
? ? ? ?? ? ? ?int maxBatchSize ---------------------------------------> 最大的BatchSize) const
? ? ? ?函數功能:計算工作區間需要的size
? ? ? ?Returns:工作區間的size - initialize
? ? ? ?virtual int nvinfer1::IPlugin::initialize( )
? ? ? ?函數功能:在執行前,初始化自定義層,此函數會在創建engine時調用
? ? ? ?Returns:返回0代表success,返回其他值會終止執行。 - serialize
? ? ? ?virtual void nvinfer1::IPlugin::serialize(
? ? ? ?? ? ? ?void * buffer -----------------------------------------------> 一個指向size>getSerializationSize()的緩沖區的指針)
? ? ? ?函數功能:將自定義層序列化
? ? ? ?Returns:沒有返回值 - terminate
? ? ? ?virtual void nvinfer1::IPlugin::terminate( )
? ? ? ?函數功能:釋放自定義層初始化時請求的資源,此函數會在銷毀engine時調用
? ? ? ?Returns:沒有返回值
總結
以上是生活随笔為你收集整理的TensorRT学习笔记6 - IPlugin的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorRT学习笔记5 - 运行fc
- 下一篇: cuda学习笔记1 - hello wo