TensorRT  7.2.2.3
nvinfer1::IPluginV2IOExt Class Referenceabstract

Plugin class for user-implemented layers. More...

#include <NvInferRuntimeCommon.h>

Inheritance diagram for nvinfer1::IPluginV2IOExt:
nvinfer1::IPluginV2Ext nvinfer1::IPluginV2

Public Member Functions

virtual void configurePlugin (const PluginTensorDesc *in, int32_t nbInput, const PluginTensorDesc *out, int32_t nbOutput)=0
 Configure the layer. More...
 
virtual bool supportsFormatCombination (int32_t pos, const PluginTensorDesc *inOut, int32_t nbInputs, int32_t nbOutputs) const =0
 Return true if plugin supports the format and datatype for the input/output indexed by pos. More...
 
- Public Member Functions inherited from nvinfer1::IPluginV2Ext
virtual nvinfer1::DataType getOutputDataType (int32_t index, const nvinfer1::DataType *inputTypes, int32_t nbInputs) const =0
 Return the DataType of the plugin output at the requested index. The default behavior should be to return the type of the first input, or DataType::kFLOAT if the layer has no inputs. The returned data type must have a format that is supported by the plugin. More...
 
virtual bool isOutputBroadcastAcrossBatch (int32_t outputIndex, const bool *inputIsBroadcasted, int32_t nbInputs) const =0
 Return true if output tensor is broadcast across a batch. More...
 
virtual bool canBroadcastInputAcrossBatch (int32_t inputIndex) const =0
 Return true if plugin can use input that is broadcast across batch without replication. More...
 
virtual void attachToContext (cudnnContext *, cublasContext *, IGpuAllocator *)
 Attach the plugin object to an execution context and grant the plugin the access to some context resource. More...
 
virtual void detachFromContext ()
 Detach the plugin object from its execution context. More...
 
virtual IPluginV2Extclone () const _TENSORRT_OVERRIDE=0
 Clone the plugin object. This copies over internal plugin parameters as well and returns a new plugin object with these parameters. If the source plugin is pre-configured with configurePlugin(), the returned object should also be pre-configured. The returned object should allow attachToContext() with a new execution context. Cloned plugin objects can share the same per-engine immutable resource (e.g. weights) with the source object (e.g. via ref-counting) to avoid duplication.
 
- Public Member Functions inherited from nvinfer1::IPluginV2
virtual const char * getPluginType () const =0
 Return the plugin type. Should match the plugin name returned by the corresponding plugin creator. More...
 
virtual const char * getPluginVersion () const =0
 Return the plugin version. Should match the plugin version returned by the corresponding plugin creator. More...
 
virtual int32_t getNbOutputs () const =0
 Get the number of outputs from the layer. More...
 
virtual Dims getOutputDimensions (int32_t index, const Dims *inputs, int32_t nbInputDims)=0
 Get the dimension of an output tensor. More...
 
virtual int32_t initialize ()=0
 Initialize the layer for execution. This is called when the engine is created. More...
 
virtual void terminate ()=0
 Release resources acquired during plugin layer initialization. This is called when the engine is destroyed. More...
 
virtual size_t getWorkspaceSize (int32_t maxBatchSize) const =0
 Find the workspace size required by the layer. More...
 
virtual int32_t enqueue (int32_t batchSize, const void *const *inputs, void **outputs, void *workspace, cudaStream_t stream)=0
 Execute the layer. More...
 
virtual size_t getSerializationSize () const =0
 Find the size of the serialization buffer required. More...
 
virtual void serialize (void *buffer) const =0
 Serialize the layer. More...
 
virtual void destroy ()=0
 Destroy the plugin object. This will be called when the network, builder or engine is destroyed.
 
virtual void setPluginNamespace (const char *pluginNamespace)=0
 Set the namespace that this plugin object belongs to. Ideally, all plugin objects from the same plugin library should have the same namespace.
 
virtual const char * getPluginNamespace () const =0
 Return the namespace of the plugin object.
 

Protected Member Functions

TRT_DEPRECATED int32_t getTensorRTVersion () const _TENSORRT_OVERRIDE
 Return the API version with which this plugin was built. The upper byte is reserved by TensorRT and is used to differentiate this from IPlguinV2 and IPluginV2Ext. More...
 
TRT_DEPRECATED void configureWithFormat (const Dims *, int32_t, const Dims *, int32_t, DataType, PluginFormat, int32_t) _TENSORRT_OVERRIDE _TENSORRT_FINAL
 Deprecated interface inheriting from base class. Derived classes should not implement this. In a C++11 API it would be override final. More...
 
TRT_DEPRECATED void configurePlugin (const Dims *, int32_t, const Dims *, int32_t, const DataType *, const DataType *, const bool *, const bool *, PluginFormat, int32_t) _TENSORRT_OVERRIDE _TENSORRT_FINAL
 Deprecated interface inheriting from base class. Derived classes should not implement this. In a C++11 API it would be override final. More...
 
TRT_DEPRECATED bool supportsFormat (DataType, PluginFormat) const _TENSORRT_OVERRIDE _TENSORRT_FINAL
 Deprecated interface inheriting from base class. Derived classes should not implement this. In a C++11 API it would be override final. More...
 

Detailed Description

Plugin class for user-implemented layers.

Plugins are a mechanism for applications to implement custom layers. This interface provides additional capabilities to the IPluginV2Ext interface by extending different I/O data types and tensor formats.

See also
IPluginV2Ext

Member Function Documentation

◆ configurePlugin() [1/2]

TRT_DEPRECATED void nvinfer1::IPluginV2IOExt::configurePlugin ( const Dims ,
int32_t  ,
const Dims ,
int32_t  ,
const DataType ,
const DataType ,
const bool *  ,
const bool *  ,
PluginFormat  ,
int32_t   
)
inlineprotectedvirtual

Deprecated interface inheriting from base class. Derived classes should not implement this. In a C++11 API it would be override final.

Deprecated:
Deprecated interface will be removed in TensorRT 8.0.

Implements nvinfer1::IPluginV2Ext.

◆ configurePlugin() [2/2]

virtual void nvinfer1::IPluginV2IOExt::configurePlugin ( const PluginTensorDesc in,
int32_t  nbInput,
const PluginTensorDesc out,
int32_t  nbOutput 
)
pure virtual

Configure the layer.

This function is called by the builder prior to initialize(). It provides an opportunity for the layer to make algorithm choices on the basis of I/O PluginTensorDesc and the maximum batch size.

Parameters
inThe input tensors attributes that are used for configuration.
nbInputNumber of input tensors.
outThe output tensors attributes that are used for configuration.
nbOutputNumber of output tensors.

◆ configureWithFormat()

TRT_DEPRECATED void nvinfer1::IPluginV2IOExt::configureWithFormat ( const Dims ,
int32_t  ,
const Dims ,
int32_t  ,
DataType  ,
PluginFormat  ,
int32_t   
)
inlineprotectedvirtual

Deprecated interface inheriting from base class. Derived classes should not implement this. In a C++11 API it would be override final.

Deprecated:
Deprecated interface will be removed in TensorRT 8.0.

Reimplemented from nvinfer1::IPluginV2Ext.

◆ getTensorRTVersion()

TRT_DEPRECATED int32_t nvinfer1::IPluginV2IOExt::getTensorRTVersion ( ) const
inlineprotectedvirtual

Return the API version with which this plugin was built. The upper byte is reserved by TensorRT and is used to differentiate this from IPlguinV2 and IPluginV2Ext.

Do not override this method as it is used by the TensorRT library to maintain backwards-compatibility with plugins.

Deprecated:
Deprecated interface will be removed in TensorRT 8.0.

Reimplemented from nvinfer1::IPluginV2Ext.

◆ supportsFormat()

TRT_DEPRECATED bool nvinfer1::IPluginV2IOExt::supportsFormat ( DataType  ,
PluginFormat   
) const
inlineprotectedvirtual

Deprecated interface inheriting from base class. Derived classes should not implement this. In a C++11 API it would be override final.

Deprecated:
Deprecated interface will be removed in TensorRT 8.0.

Implements nvinfer1::IPluginV2.

◆ supportsFormatCombination()

virtual bool nvinfer1::IPluginV2IOExt::supportsFormatCombination ( int32_t  pos,
const PluginTensorDesc inOut,
int32_t  nbInputs,
int32_t  nbOutputs 
) const
pure virtual

Return true if plugin supports the format and datatype for the input/output indexed by pos.

For this method inputs are numbered 0..(nbInputs-1) and outputs are numbered nbInputs..(nbInputs+nbOutputs-1). Using this numbering, pos is an index into InOut, where 0 <= pos < nbInputs+nbOutputs-1.

TensorRT invokes this method to ask if the input/output indexed by pos supports the format/datatype specified by inOut[pos].format and inOut[pos].type. The override should return true if that format/datatype at inOut[pos] are supported by the plugin. If support is conditional on other input/output formats/datatypes, the plugin can make its result conditional on the formats/datatypes in inOut[0..pos-1], which will be set to values that the plugin supports. The override should not inspect inOut[pos+1..nbInputs+nbOutputs-1], which will have invalid values. In other words, the decision for pos must be based on inOut[0..pos] only.

Some examples:

  • A definition for a plugin that supports only FP16 NCHW:
      return inOut.format[pos] == TensorFormat::kLINEAR && inOut.type[pos] == DataType::kHALF;
    
  • A definition for a plugin that supports only FP16 NCHW for its two inputs, and FP32 NCHW for its single output:
      return inOut.format[pos] == TensorFormat::kLINEAR && (inOut.type[pos] == pos < 2 ?  DataType::kHALF :
      DataType::kFLOAT);
    
  • A definition for a "polymorphic" plugin with two inputs and one output that supports any format or type, but the inputs and output must have the same format and type:
      return pos == 0 || (inOut.format[pos] == inOut.format[0] && inOut.type[pos] == inOut.type[0]);
    

Warning: TensorRT will stop asking for formats once it finds kFORMAT_COMBINATION_LIMIT on combinations.


The documentation for this class was generated from the following file: