TensorRT 10.8.0
|
用于动态输入维度和形状张量的优化配置文件。 更多...
#include <NvInferRuntime.h>
公共成员函数 | |
bool | setDimensions (char const *inputName, OptProfileSelector select, Dims const &dims) noexcept |
为动态输入张量设置最小/最佳/最大维度。 更多... | |
Dims | getDimensions (char const *inputName, OptProfileSelector select) const noexcept |
获取动态输入张量的最小/最佳/最大维度。 更多... | |
bool | setShapeValues (char const *inputName, OptProfileSelector select, int32_t const *values, int32_t nbValues) noexcept |
为输入形状张量设置最小/最佳/最大值。 更多... | |
int32_t | getNbShapeValues (char const *inputName) const noexcept |
获取输入形状张量的值的数量。 更多... | |
int32_t const * | getShapeValues (char const *inputName, OptProfileSelector select) const noexcept |
获取输入形状张量的最小/最佳/最大值。 更多... | |
bool | setExtraMemoryTarget (float target) noexcept |
为该配置文件设置可能使用的额外 GPU 内存目标。 更多... | |
float | getExtraMemoryTarget () const noexcept |
获取已为此配置文件定义的额外内存目标。 更多... | |
bool | isValid () const noexcept |
检查优化配置文件是否可以传递给 IBuilderConfig 对象。 更多... | |
保护成员函数 | |
virtual | ~IOptimizationProfile () noexcept=default |
![]() | |
INoCopy ()=default | |
virtual | ~INoCopy ()=default |
INoCopy (INoCopy const &other)=delete | |
INoCopy & | operator= (INoCopy const &other)=delete |
INoCopy (INoCopy &&other)=delete | |
INoCopy & | operator= (INoCopy &&other)=delete |
保护属性 | |
apiv::VOptimizationProfile * | mImpl |
用于动态输入维度和形状张量的优化配置文件。
当从 INetworkDefinition 构建 ICudaEngine,且该 INetworkDefinition 具有动态可调整大小的输入(至少一个输入张量的一个或多个维度被指定为 -1)或形状输入张量时,用户需要指定至少一个优化配置文件。优化配置文件编号为 0, 1, ... 第一个已定义的优化配置文件(索引为 0)将由 ICudaEngine 在未显式选择优化配置文件时使用。如果所有输入都不是动态的,则将自动生成默认优化配置文件,除非用户显式提供(在这种情况下是可能的但不是必需的)。如果定义了多个优化配置文件,则用户可以设置目标,即每个额外的配置文件应最大分配多少额外的权重空间(作为最大未约束内存的一部分)。
用户设置最佳输入张量维度,以及最小和最大输入张量维度。构建器选择在最佳输入张量维度下运行时最短,并且对于最小和最大维度之间有效范围内的所有输入张量大小都有效的内核。如果输入张量维度超出此配置文件的有效范围,则会引发运行时错误。同样,用户为所有形状张量输入值提供最小、最佳和最大值。
|
protectedvirtualdefaultnoexcept |
|
inlinenoexcept |
获取动态输入张量的最小/最佳/最大维度。
如果维度之前未通过 setDimensions() 设置,则返回无效的 Dims,其 nbDims == -1。
|
inlinenoexcept |
获取已为此配置文件定义的额外内存目标。
默认值为 1.0F。
|
inlinenoexcept |
获取输入形状张量的值的数量。
如果之前为此输入张量调用过 setShapeValues(),则将返回形状值的数量。否则,返回 -1。
|
inlinenoexcept |
获取输入形状张量的最小/最佳/最大值。
如果形状值之前未通过 setShapeValues() 设置,则返回 nullptr。
|
inlinenoexcept |
检查优化配置文件是否可以传递给 IBuilderConfig 对象。
此函数执行部分验证,例如,通过检查是否在设置张量的最小、最佳或最大维度之一时,也设置了其他维度并且具有相同的秩,以及检查最佳维度是否始终至少与最小维度一样大,并且最大维度至少与最佳维度一样大。某些验证步骤需要了解网络定义,并推迟到引擎构建时进行。
|
inlinenoexcept |
为动态输入张量设置最小/最佳/最大维度。
对于任何具有动态维度的网络输入张量,必须调用此函数三次(分别用于最小、最佳和最大维度)。如果 minDims、optDims 和 maxDims 分别是最小、最佳和最大维度,并且 networkDims 是为此输入张量提供的维度,该维度提供给 INetworkDefinition 对象,则以下条件都必须成立
(1) minDims.nbDims == optDims.nbDims == maxDims.nbDims == networkDims.nbDims (2) 0 <= minDims.d[i] <= optDims.d[i] <= maxDims.d[i] 对于 i = 0, ..., networkDims.nbDims-1 (3) 如果 networkDims.d[i] != -1,则 minDims.d[i] == optDims.d[i] == maxDims.d[i] == networkDims.d[i]
对于不具有动态维度的输入张量,可以(但不是必须)调用此函数。在这种情况下,第三个参数必须始终等于 networkDims。
inputName | 输入张量名称 |
select | 是否设置最小、最佳或最大维度 |
dims | 此输入张量的最小、最佳或最大维度 |
|
inlinenoexcept |
为该配置文件设置可能使用的额外 GPU 内存目标。
target | 构建器应尽可能为此配置文件分配的额外内存目标,以用户未对内存施加任何约束时将使用的内存的百分比表示。未约束的情况是默认情况;它对应于 target == 1.0。如果 target == 0.0,则构建器旨在创建新的优化配置文件,而不分配任何额外的权重内存。有效输入介于 0.0 和 1.0 之间。此参数仅为提示,TensorRT 不保证能够达到目标。对于定义的第一个(默认)优化配置文件,此参数将被忽略。 |
|
inlinenoexcept |
为输入形状张量设置最小/最佳/最大值。
对于每个作为形状张量的输入张量 t(t.isShape() == true),必须调用此函数三次。这意味着 t 的维度在网络定义时是固定的,并且体积不超过 64。对于任何不是形状张量的输入张量,不得调用此函数。
每次为同一输入张量调用此函数时,都必须提供相同的 nbValues(如果张量秩为 0,则为 1,如果秩为 1,则为 dims.d[0])。此外,如果 minVals、optVals、maxVals 分别是最小值、最佳值和最大值,则必须满足 minVals[i] <= optVals[i] <= maxVals[i],对于 i = 0, ..., nbValues - 1。网络的执行必须对 optVals 有效。
形状张量是以某种方式影响形状计算的张量。虽然输入形状张量可以是 kINT32 或 kINT64 类型,但用于设置最小值、最佳值和最大值的值必须适合 int32_t。
示例
收紧 minVals 和 maxVals 边界以仅覆盖必要的值可能有助于优化。
inputName | 输入张量名称 |
select | 是否设置最小、最佳或最大输入值。 |
values | 长度为 nbValues 的数组,包含最小、最佳或最大形状张量元素。对于多维张量,数组按行优先顺序排列。 |
nbValues | 值数组的长度,必须等于形状张量元素的数量(>= 1) |
|
protected |
版权所有 © 2024 NVIDIA Corporation
隐私政策 | 管理我的隐私 | 请勿出售或分享我的数据 | 服务条款 | 无障碍功能 | 公司政策 | 产品安全 | 联系方式