TensorRT 10.8.0
|
用于用户实现层的插件类。 更多...
#include <NvInferRuntimePlugin.h>
公共成员函数 | |
virtual nvinfer1::DataType | getOutputDataType (int32_t index, nvinfer1::DataType const *inputTypes, int32_t nbInputs) const noexcept=0 |
返回请求索引处插件输出的 DataType。 更多... | |
virtual TRT_DEPRECATED bool | isOutputBroadcastAcrossBatch (int32_t outputIndex, bool const *inputIsBroadcasted, int32_t nbInputs) const noexcept=0 |
如果输出张量跨批次广播,则返回 true。 更多... | |
virtual TRT_DEPRECATED bool | canBroadcastInputAcrossBatch (int32_t inputIndex) const noexcept=0 |
如果插件可以使用跨批次广播而无需复制的输入张量,则返回 true。 更多... | |
virtual void | configurePlugin (Dims const *inputDims, int32_t nbInputs, Dims const *outputDims, int32_t nbOutputs, DataType const *inputTypes, DataType const *outputTypes, bool const *inputIsBroadcast, bool const *outputIsBroadcast, PluginFormat floatFormat, int32_t maxBatchSize) noexcept=0 |
使用输入和输出数据类型配置层。 更多... | |
IPluginV2Ext ()=default | |
~IPluginV2Ext () override=default | |
virtual void | attachToContext (cudnnContext *, cublasContext *, IGpuAllocator *) noexcept |
将插件对象附加到执行上下文,并授予插件访问某些上下文资源的权限。 更多... | |
virtual void | detachFromContext () noexcept |
从其执行上下文中分离插件对象。 更多... | |
IPluginV2Ext * | clone () const noexcept override=0 |
克隆插件对象。这也会复制内部插件参数,并返回具有这些参数的新插件对象。如果源插件已使用 configurePlugin() 预配置,则返回的对象也必须是预配置的。返回的对象必须允许使用新的执行上下文 attachToContext()。克隆的插件对象可以与源对象共享相同的每个引擎的不可变资源(例如,权重)(例如,通过引用计数)以避免重复。 更多... | |
![]() | |
virtual AsciiChar const * | getPluginType () const noexcept=0 |
返回插件类型。应与相应插件创建器返回的插件名称匹配。 更多... | |
virtual AsciiChar const * | getPluginVersion () const noexcept=0 |
返回插件版本。应与相应插件创建器返回的插件版本匹配。 更多... | |
virtual int32_t | getNbOutputs () const noexcept=0 |
获取层输出的数量。 更多... | |
virtual Dims | getOutputDimensions (int32_t index, Dims const *inputs, int32_t nbInputDims) noexcept=0 |
获取输出张量的维度。 更多... | |
virtual bool | supportsFormat (DataType type, PluginFormat format) const noexcept=0 |
检查格式支持。 更多... | |
virtual int32_t | initialize () noexcept=0 |
初始化层以进行执行。这在创建引擎时调用。 更多... | |
virtual void | terminate () noexcept=0 |
释放插件层初始化期间获取的资源。这在销毁引擎时调用。 更多... | |
virtual size_t | getWorkspaceSize (int32_t maxBatchSize) const noexcept=0 |
查找层所需的工作区大小。 更多... | |
virtual int32_t | enqueue (int32_t batchSize, void const *const *inputs, void *const *outputs, void *workspace, cudaStream_t stream) noexcept=0 |
执行层。 更多... | |
virtual size_t | getSerializationSize () const noexcept=0 |
查找将插件配置存储在二进制文件中所需的序列化缓冲区的大小。 更多... | |
virtual void | serialize (void *buffer) const noexcept=0 |
序列化层。 更多... | |
virtual void | destroy () noexcept=0 |
销毁插件对象。这将在销毁网络、构建器或引擎时调用。 更多... | |
virtual void | setPluginNamespace (AsciiChar const *pluginNamespace) noexcept=0 |
设置此插件对象所属的命名空间。理想情况下,来自同一插件库的所有插件对象都必须具有相同的命名空间。 更多... | |
virtual AsciiChar const * | getPluginNamespace () const noexcept=0 |
返回插件对象的命名空间。 更多... | |
受保护成员函数 | |
int32_t | getTensorRTVersion () const noexcept override |
返回构建此插件的 API 版本。高位字节由 TensorRT 保留,用于将其与 IPluginV2 区分开来。 更多... | |
void | configureWithFormat (Dims const *, int32_t, Dims const *, int32_t, DataType, PluginFormat, int32_t) noexcept override |
派生类不得实现此方法。在 C++11 API 中,它将是 override final。 更多... | |
|
default |
|
overridedefault |
|
inlinevirtualnoexcept |
将插件对象附加到执行上下文,并授予插件访问某些上下文资源的权限。
cudnn | 执行上下文的 cuDNN 上下文句柄。将是有效的 cuDNN 上下文句柄,如果 TacticSource::kCUDNN 被禁用,则为 nullptr。 |
cublas | 执行上下文的 cuBLAS 上下文句柄。将是有效的 cuBLAS 上下文句柄,如果 TacticSource::kCUBLAS 被禁用,则为 nullptr。 |
allocator | 执行上下文使用的分配器 |
当创建新的执行上下文时,将自动为每个插件调用此函数。如果上下文是在没有资源的情况下创建的,则只有在分配资源后才会调用此方法。如果为上下文分配了新资源,也会调用此方法。
如果插件需要每个上下文的资源,则可以在此处分配。插件还可以获取上下文拥有的 cuDNN 和 cuBLAS 上下文。
使用注意事项
|
pure virtualnoexcept |
如果插件可以使用跨批次广播而无需复制的输入张量,则返回 true。
inputIndex | 可能广播的输入的索引。将在 0 到 nbInputs - 1 的有效范围内,其中 nbInputs 是此插件支持的最大输入张量数。 |
对于每个张量在语义上跨批次广播的输入,TensorRT 在调用 configurePlugin 之前调用此方法。如果 canBroadcastInputAcrossBatch 返回 true,则 TensorRT 将不会复制输入张量;即,将有一个插件必须跨批次共享的单个副本。如果它返回 false,则 TensorRT 将复制输入张量,使其看起来像一个非广播张量。
此方法仅针对可以广播的输入调用。
使用注意事项
允许 API 调用的上下文
|
overridepure virtualnoexcept |
克隆插件对象。这也会复制内部插件参数,并返回具有这些参数的新插件对象。如果源插件已使用 configurePlugin() 预配置,则返回的对象也必须是预配置的。返回的对象必须允许使用新的执行上下文 attachToContext()。克隆的插件对象可以与源对象共享相同的每个引擎的不可变资源(例如,权重)(例如,通过引用计数)以避免重复。
使用注意事项
实现自 nvinfer1::IPluginV2。
|
pure virtualnoexcept |
使用输入和输出数据类型配置层。
此函数在 initialize() 之前由构建器调用。它为层提供了一个机会,使其可以根据其权重、维度、数据类型和最大批次大小来做出算法选择。
inputDims | 输入张量维度。将是长度为 nbInputs 的数组。 |
nbInputs | 输入的数量。将是非负整数。 |
outputDims | 输出张量维度。将是长度为 nbOutputs 的数组。 |
nbOutputs | 输出的数量。将是正整数。 |
inputTypes | 为插件输入选择的数据类型。将是长度为 nbInputs 的数组。 |
outputTypes | 为插件输出选择的数据类型。将是长度为 nbOutputs 的数组。 |
inputIsBroadcast | 对于插件必须跨批次广播的每个输入,为 True。将是长度为 nbInputs 的数组。 |
outputIsBroadcast | 对于 TensorRT 将跨批次广播的每个输出,为 True。将是长度为 nbOutputs 的数组。 |
floatFormat | 为引擎选择的浮点输入/输出格式。 |
maxBatchSize | 最大批次大小。将是正整数。 |
此处传递的维度不包括最外层的批次大小(即,对于 2D 图像网络,它们将是 3 维 CHW 维度)。当 inputIsBroadcast 或 outputIsBroadcast 为 true 时,该输入或输出的最外层批次大小必须视为 1。只有当输入在语义上跨批次广播,并且使用参数 'i' 调用 canBroadcastInputAcrossBatch 返回 true 时,inputIsBroadcast 的索引 'i' 才为 true。只有当使用参数 'i' 调用 isOutputBroadcastAcrossBatch 返回 true 时,outputIsBroadcast 的索引 'i' 才为 true。
使用注意事项
|
inlineoverrideprotectedvirtualnoexcept |
派生类不得实现此方法。在 C++11 API 中,它将是 override final。
IPluginV2Ext::configureWithFormat() 对于从 IPluginV2Ext 派生的所有类都是 NOP 操作。这些类改为调用 configurePlugin()。
实现自 nvinfer1::IPluginV2。
|
inlinevirtualnoexcept |
从其执行上下文中分离插件对象。
当执行上下文被销毁或从上下文中取消分配上下文资源时,将自动为每个插件调用此函数。
如果插件拥有每个上下文的资源,则可以在此处释放。
使用注意事项
|
pure virtualnoexcept |
返回请求索引处插件输出的 DataType。
index | 输出张量索引,在 0 和 getNbOutputs()-1 之间的有效范围内。 |
inputTypes | 输入张量的数据类型,存储在长度为 nbInputs 的数组中。 |
nbInputs | 输入张量的数量。将是非负整数。 |
默认行为必须是返回第一个输入的类型,或者如果层没有输入,则返回 DataType::kFLOAT。返回的数据类型必须具有插件支持的格式。
使用注意事项
|
inlineoverrideprotectedvirtualnoexcept |
返回构建此插件的 API 版本。高位字节由 TensorRT 保留,用于将其与 IPluginV2 区分开来。
不要覆盖此方法,因为 TensorRT 库使用它来保持与插件的向后兼容性。
使用注意事项
从 nvinfer1::IPluginV2 重新实现。
在 nvinfer1::IPluginV2IOExt 中重新实现。
|
pure virtualnoexcept |
如果输出张量跨批次广播,则返回 true。
outputIndex | 输出张量的索引,它将在 0 和 nbOutputs()-1 之间的有效范围内。 |
inputIsBroadcasted | 一个长度为 nbInputs 的布尔数组。当且仅当第 i 个输入的张量跨批次广播时,第 i 个元素为 true。 |
nbInputs | 输入的数量。将是非负整数。 |
inputIsBroadcasted 中的值指的是语义级别的广播,即不受方法 canBroadcastInputAcrossBatch 是否请求值的物理复制的影响。
使用注意事项
允许 API 调用的上下文
版权所有 © 2024 NVIDIA Corporation
隐私政策 | 管理我的隐私 | 请勿出售或分享我的数据 | 服务条款 | 无障碍功能 | 公司政策 | 产品安全 | 联系方式