TensorRT 10.8.0
nvinfer1::IOptimizationProfile 类参考

用于动态输入维度和形状张量的优化配置文件。 更多...

#include <NvInferRuntime.h>

nvinfer1::IOptimizationProfile 的继承关系图
nvinfer1::INoCopy

公共成员函数

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
 
- 从 nvinfer1::INoCopy 继承的保护成员函数
 INoCopy ()=default
 
virtual ~INoCopy ()=default
 
 INoCopy (INoCopy const &other)=delete
 
INoCopyoperator= (INoCopy const &other)=delete
 
 INoCopy (INoCopy &&other)=delete
 
INoCopyoperator= (INoCopy &&other)=delete
 

保护属性

apiv::VOptimizationProfile * mImpl
 

详细描述

用于动态输入维度和形状张量的优化配置文件。

当从 INetworkDefinition 构建 ICudaEngine,且该 INetworkDefinition 具有动态可调整大小的输入(至少一个输入张量的一个或多个维度被指定为 -1)或形状输入张量时,用户需要指定至少一个优化配置文件。优化配置文件编号为 0, 1, ... 第一个已定义的优化配置文件(索引为 0)将由 ICudaEngine 在未显式选择优化配置文件时使用。如果所有输入都不是动态的,则将自动生成默认优化配置文件,除非用户显式提供(在这种情况下是可能的但不是必需的)。如果定义了多个优化配置文件,则用户可以设置目标,即每个额外的配置文件应最大分配多少额外的权重空间(作为最大未约束内存的一部分)。

用户设置最佳输入张量维度,以及最小和最大输入张量维度。构建器选择在最佳输入张量维度下运行时最短,并且对于最小和最大维度之间有效范围内的所有输入张量大小都有效的内核。如果输入张量维度超出此配置文件的有效范围,则会引发运行时错误。同样,用户为所有形状张量输入值提供最小、最佳和最大值。

另请参阅
IBuilderConfig::addOptimizationProfile()

构造函数 & 析构函数文档

◆ ~IOptimizationProfile()

virtual nvinfer1::IOptimizationProfile::~IOptimizationProfile ( )
protectedvirtualdefaultnoexcept

成员函数文档

◆ getDimensions()

Dims nvinfer1::IOptimizationProfile::getDimensions ( char const *  inputName,
OptProfileSelector  select 
) const
inlinenoexcept

获取动态输入张量的最小/最佳/最大维度。

如果维度之前未通过 setDimensions() 设置,则返回无效的 Dims,其 nbDims == -1。

警告
字符串 inputName 必须以 null 结尾,并且最多为 4096 字节,包括终止符。

◆ getExtraMemoryTarget()

float nvinfer1::IOptimizationProfile::getExtraMemoryTarget ( ) const
inlinenoexcept

获取已为此配置文件定义的额外内存目标。

默认值为 1.0F。

返回值
由 setExtraMemoryTarget 设置的有效值或 1.0F。

◆ getNbShapeValues()

int32_t nvinfer1::IOptimizationProfile::getNbShapeValues ( char const *  inputName) const
inlinenoexcept

获取输入形状张量的值的数量。

如果之前为此输入张量调用过 setShapeValues(),则将返回形状值的数量。否则,返回 -1。

警告
字符串 inputName 必须以 null 结尾,并且最多为 4096 字节,包括终止符。

◆ getShapeValues()

int32_t const * nvinfer1::IOptimizationProfile::getShapeValues ( char const *  inputName,
OptProfileSelector  select 
) const
inlinenoexcept

获取输入形状张量的最小/最佳/最大值。

如果形状值之前未通过 setShapeValues() 设置,则返回 nullptr。

警告
字符串 inputName 必须以 null 结尾,并且最多为 4096 字节,包括终止符。

◆ isValid()

bool nvinfer1::IOptimizationProfile::isValid ( ) const
inlinenoexcept

检查优化配置文件是否可以传递给 IBuilderConfig 对象。

此函数执行部分验证,例如,通过检查是否在设置张量的最小、最佳或最大维度之一时,也设置了其他维度并且具有相同的秩,以及检查最佳维度是否始终至少与最小维度一样大,并且最大维度至少与最佳维度一样大。某些验证步骤需要了解网络定义,并推迟到引擎构建时进行。

返回值
如果优化配置文件有效且可以传递给 IBuilderConfig,则返回 true,否则返回 false。

◆ setDimensions()

bool nvinfer1::IOptimizationProfile::setDimensions ( char const *  inputName,
OptProfileSelector  select,
Dims const &  dims 
)
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此输入张量的最小、最佳或最大维度
返回值
如果检测到不一致(例如,秩与先前为同一输入设置的其他维度不匹配),则返回 false,如果未检测到不一致,则返回 true。请注意,输入只能部分验证;完整的验证在引擎构建时执行。
警告
如果在 DLA 上运行,最小、最佳和最大维度必须相同。
字符串 inputName 必须以 null 结尾,并且最多为 4096 字节,包括终止符。

◆ setExtraMemoryTarget()

bool nvinfer1::IOptimizationProfile::setExtraMemoryTarget ( float  target)
inlinenoexcept

为该配置文件设置可能使用的额外 GPU 内存目标。

参数
target构建器应尽可能为此配置文件分配的额外内存目标,以用户未对内存施加任何约束时将使用的内存的百分比表示。未约束的情况是默认情况;它对应于 target == 1.0。如果 target == 0.0,则构建器旨在创建新的优化配置文件,而不分配任何额外的权重内存。有效输入介于 0.0 和 1.0 之间。此参数仅为提示,TensorRT 不保证能够达到目标。对于定义的第一个(默认)优化配置文件,此参数将被忽略。
返回值
如果输入在有效范围内(介于 0 和 1 之间,包括 0 和 1),则返回 true,否则返回 false。

◆ setShapeValues()

bool nvinfer1::IOptimizationProfile::setShapeValues ( char const *  inputName,
OptProfileSelector  select,
int32_t const *  values,
int32_t  nbValues 
)
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。

示例

  • 用作 IShuffleLayer 的第二个输入的形状张量可以包含 -1 通配符。相应的 minVal[i] 应为 -1。
  • 用作 ISliceLayer 的步幅输入的形状张量可以包含任何有效的步幅。这些值可以是正数、负数或零。
  • 从零减去的形状张量以计算 ISliceLayer 的大小输入可以包含产生有效切片操作的任何非正值。

收紧 minVals 和 maxVals 边界以仅覆盖必要的值可能有助于优化。

参数
inputName输入张量名称
select是否设置最小、最佳或最大输入值。
values长度为 nbValues 的数组,包含最小、最佳或最大形状张量元素。对于多维张量,数组按行优先顺序排列。
nbValues值数组的长度,必须等于形状张量元素的数量(>= 1)
返回值
如果检测到不一致(例如,nbValues 与先前对同一张量的调用不匹配),则返回 false,否则返回 true。对于 setDimensions(),完整的验证只能在引擎构建时执行。
警告
如果在 DLA 上运行,最小、最佳和最大形状值必须相同。
字符串 inputName 必须以 null 结尾,并且最多为 4096 字节,包括终止符。

成员数据文档

◆ mImpl

apiv::VOptimizationProfile* nvinfer1::IOptimizationProfile::mImpl
protected

此类文档从以下文件生成:

  版权所有 © 2024 NVIDIA Corporation
  隐私政策 | 管理我的隐私 | 请勿出售或分享我的数据 | 服务条款 | 无障碍功能 | 公司政策 | 产品安全 | 联系方式