日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。