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