IPluginV2DynamicExt¶
- class tensorrt.IPluginV2DynamicExt(*args, **kwargs)¶
用户实现层的插件类。
插件是应用程序实现自定义层的一种机制。
类似于 IPluginV2Ext (包括支持不同输出数据类型的功能),但支持动态形状。
此类用于实现带有 Python 的 IPluginV2DynamicExt 插件。从 IPluginV2 和 IPluginV2Ext 继承的 Python->C++ 绑定将继续在基于 C++ 的 IPluginV2DynamicExt 插件上工作。
注意
除了 tensorrt_version 之外的每个属性都必须在基于 Python 的插件上显式初始化。除了 plugin_namespace,这些属性在通过基于 C++ 的插件访问时将是只读的。
- 变量:
num_outputs –
int
来自插件的输出数量。这被INetworkDefinition
和Builder
的实现使用。 特别是,它在任何调用initialize()
之前被调用。tensorrt_version –
int
[只读] 构建此插件所用的 API 版本。plugin_type –
str
插件类型。应与相应插件创建器返回的插件名称匹配。plugin_version –
str
插件版本。应与相应插件创建器返回的插件版本匹配。plugin_namespace –
str
此插件对象所属的命名空间。理想情况下,来自同一插件库的所有插件对象应具有相同的命名空间。serialization_size –
int
[只读] 所需序列化缓冲区的大小。
重载函数。
__init__(self: tensorrt.tensorrt.IPluginV2DynamicExt) -> None
__init__(self: tensorrt.tensorrt.IPluginV2DynamicExt, arg0: tensorrt.tensorrt.IPluginV2DynamicExt) -> None
- clone(self: tensorrt.tensorrt.IPluginV2DynamicExt) tensorrt.tensorrt.IPluginV2DynamicExt ¶
克隆插件对象。 这也会复制内部插件参数,并返回一个带有这些参数的新插件对象。
如果源插件已使用 configure_plugin() 预配置,则返回的对象也应预配置。 克隆的插件对象可以与源对象共享相同的每个引擎的不可变资源(例如权重),以避免重复。
- configure_plugin(self: tensorrt.tensorrt.IPluginV2DynamicExt, pos: List[tensorrt.tensorrt.DynamicPluginTensorDesc], in_out: List[tensorrt.tensorrt.DynamicPluginTensorDesc]) None ¶
配置插件。
此函数可以在构建和执行阶段多次调用。 构建阶段发生在调用 initialize() 之前,并且仅在 IBuilder 创建引擎期间发生。 执行阶段发生在调用 initialize() 之后,并且在 IBuilder 创建引擎和 IExecutionContext 执行引擎期间发生。
构建阶段:当插件正在准备进行分析但不是针对任何特定输入大小时,将调用 configure_plugin() 。 这为插件提供了一个机会,使其可以根据输入和输出格式以及可能维度的边界做出算法选择。 DynamicPluginTensorDesc 的最小值和最大值对应于插件正在为其分析的当前优化配置文件的 kMIN 和 kMAX 值,其中 desc.dims 字段对应于网络创建时指定的插件的维度。 通配符维度将在此阶段存在于 desc.dims 字段中。
执行阶段:当插件正在准备执行具有特定维度的插件时,将调用 configure_plugin() 。 这为插件提供了一个机会,使其可以根据存储在 desc.dims 字段中的显式输入维度来更改算法选择。
警告
此 configure_plugin() 方法不能从 Python 在基于 C++ 的插件上调用
- 参数:
in – 用于配置的输入张量属性。
out – 用于配置的输出张量属性。
- destroy(self: tensorrt.tensorrt.IPluginV2DynamicExt) None ¶
销毁插件对象。 这将在销毁
INetworkDefinition
、Builder
或ICudaEngine
时调用。注意
当实现基于 Python 的插件时,实现此方法是可选的。 默认行为是 pass。
- enqueue(self: tensorrt.tensorrt.IPluginV2DynamicExt, input_desc: List[tensorrt.tensorrt.PluginTensorDesc], output_desc: List[tensorrt.tensorrt.PluginTensorDesc], inputs: List[int], outputs: List[int], workspace: int, stream: int) None ¶
执行层。
inputs 和 outputs 包含指向相应输入和输出设备缓冲区的指针,以其 intptr_t 强制转换形式。 stream 也表示应在其中执行 enqueue 的 CUDA 流的 intptr_t 强制转换。
警告
由于输入、输出和工作区缓冲区由 TRT 创建和拥有,因此从 Python 端写入它们时必须小心。
警告
与 C++ API 的 enqueue() 相比,此方法不得返回错误代码。 如果发生错误,预期的行为是抛出适当的异常。
警告
此 enqueue() 方法不能从 Python 在基于 C++ 的插件上调用。
- 参数:
input_desc – 如何解释输入张量的内存。
output_desc – 如何解释输出张量的内存。
inputs – 输入张量的内存。
outputs – 输出张量的内存。
workspace – 执行的工作区。
stream – 执行内核的流。
- get_output_datatype(self: tensorrt.tensorrt.IPluginV2DynamicExt, index: int, input_types: List[tensorrt.tensorrt.DataType]) tensorrt.tensorrt.DataType ¶
返回请求索引处插件输出的 DataType 。 默认行为应是返回第一个输入的类型,如果层没有输入,则返回 DataType::kFLOAT 。 返回的数据类型必须具有插件支持的格式。
- 参数:
index – 请求数据类型的输出的索引。
input_types – 输入的数据类型。
- 返回值:
请求的 index 处插件输出的 DataType 。
- get_output_dimensions(self: tensorrt.tensorrt.IPluginV2DynamicExt, output_index: int, inputs: List[tensorrt.tensorrt.DimsExprs], expr_builder: tensorrt.tensorrt.IExprBuilder) tensorrt.tensorrt.DimsExprs ¶
获取用于从输入张量的维度计算输出张量维度的表达式。
此函数由 IBuilder 的实现在网络分析期间调用。
警告
此 get_output_dimensions() 方法不能从 Python 在基于 C++ 的插件上调用
- 参数:
output_index – 输出张量的索引
inputs – 输入张量维度的表达式
expr_builder – 用于生成新表达式的对象
- 返回值:
给定 output_index 处输出维度的表达式。
- get_serialization_size(self: tensorrt.tensorrt.IPluginV2DynamicExt) int ¶
返回插件所需的序列化大小(以字节为单位)。
注意
当实现基于 Python 的插件时,实现此方法是可选的。 默认行为等效于 return len(serialize())。
- get_workspace_size(self: tensorrt.tensorrt.IPluginV2DynamicExt, in: List[tensorrt.tensorrt.PluginTensorDesc], out: List[tensorrt.tensorrt.PluginTensorDesc]) int ¶
返回插件所需的工作区大小(以字节为单位)。
此函数在配置插件后调用,并且可能在执行期间调用。 结果应是足够的工作区大小,以处理给定大小或任何更小问题的输入和输出。
注意
当实现基于 Python 的插件时,实现此方法是可选的。 默认行为等效于 return 0。
警告
此 get_workspace_size() 方法不能从 Python 在基于 C++ 的插件上调用
- 参数:
input_desc – 如何解释输入张量的内存。
output_desc – 如何解释输出张量的内存。
- 返回值:
工作区大小(以字节为单位)。
- initialize(self: tensorrt.tensorrt.IPluginV2DynamicExt) int ¶
初始化插件以供执行。 这在创建引擎时调用。
注意
当实现基于 Python 的插件时,实现此方法是可选的。 默认行为等效于 pass。
警告
与 C++ API 的 initialize() 相比,此方法不得返回错误代码。 如果发生错误,预期的行为是抛出适当的异常。
警告
此 initialize() 方法不能从 Python 在基于 C++ 的插件上调用。
- serialize(self: tensorrt.tensorrt.IPluginV2DynamicExt) bytes ¶
序列化插件。
警告
此 API 仅在实现基于 Python 的插件时适用。
- 返回值:
包含插件序列化表示形式的字节对象。
- supports_format_combination(self: tensorrt.tensorrt.IPluginV2DynamicExt, pos: int, in_out: List[tensorrt.tensorrt.PluginTensorDesc], num_inputs: int) bool ¶
如果插件支持由 pos 索引的输入/输出的格式和数据类型,则返回 true。
对于此方法,输入的索引从 [0, num_inputs-1] 开始,输出的索引从 [num_inputs, (num_inputs + num_outputs - 1)] 开始。 pos 是 in_ou`t 的索引,其中 `0 <= pos < (num_inputs + num_outputs - 1)。
TensorRT 调用此方法以查询由 pos 索引的输入/输出张量是否支持由 in_out[pos].format 和 in_out[pos].type 指定的格式和数据类型。 如果 in_out[pos] 中的格式和数据类型受插件支持,则重写应返回 true。 检查由大于 pos 的数字索引的格式或数据类型或任何张量是未定义的行为。
警告
此 supports_format_combination() 方法不能从 Python 在基于 C++ 的插件上调用
- 参数:
pos – 正在查询的输入或输出张量索引。
in_out – 组合的输入和输出张量描述。
num_inputs – 输入的数量。
- 返回值:
布尔值,指示是否支持格式组合。
- terminate(self: tensorrt.tensorrt.IPluginV2DynamicExt) None ¶
释放插件层初始化期间获取的资源。 这在销毁引擎时调用。
注意
当实现基于 Python 的插件时,实现此方法是可选的。 默认行为等效于 pass。