日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TensorRT学习笔记6 - IPlugin

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。