TensorRT 10.8.0
nvinfer1::ICudaEngine 类参考

用于在已构建网络上执行推理的引擎,具有功能上不安全的功能。 更多...

#include <NvInferRuntime.h>

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

公共成员函数

virtual ~ICudaEngine () noexcept=default
 
Dims getTensorShape (char const *tensorName) const noexcept
 获取输入或输出张量的形状。 更多...
 
DataType getTensorDataType (char const *tensorName) const noexcept
 根据张量名称确定缓冲区所需的数据类型。 更多...
 
int32_t getNbLayers () const noexcept
 获取网络中的层数。 更多...
 
IHostMemoryserialize () const noexcept
 将网络序列化到流。 更多...
 
IExecutionContextcreateExecutionContext (ExecutionContextAllocationStrategy strategy=ExecutionContextAllocationStrategy::kSTATIC) noexcept
 创建执行上下文并指定用于分配内部激活内存的策略。 更多...
 
TensorLocation getTensorLocation (char const *tensorName) const noexcept
 获取输入或输出张量是否必须在 GPU 或 CPU 上。 更多...
 
bool isShapeInferenceIO (char const *tensorName) const noexcept
 如果张量是形状计算的必需输入或形状计算的输出,则为 True。 更多...
 
TensorIOMode getTensorIOMode (char const *tensorName) const noexcept
 确定张量是输入张量还是输出张量。 更多...
 
TRT_DEPRECATED IExecutionContextcreateExecutionContextWithoutDeviceMemory () noexcept
 创建不分配任何设备内存的执行上下文 更多...
 
TRT_DEPRECATED size_t getDeviceMemorySize () const noexcept
 返回所有配置文件中上下文所需的最大设备内存。 更多...
 
TRT_DEPRECATED size_t getDeviceMemorySizeForProfile (int32_t profileIndex) const noexcept
 返回配置文件中上下文所需的最大设备内存。 更多...
 
int64_t getDeviceMemorySizeV2 () const noexcept
 返回所有配置文件中上下文所需的最大设备内存。 更多...
 
int64_t getDeviceMemorySizeForProfileV2 (int32_t profileIndex) const noexcept
 返回配置文件中上下文所需的最大设备内存。 更多...
 
bool isRefittable () const noexcept
 如果引擎可以重新拟合,则返回 true。 更多...
 
int32_t getTensorBytesPerComponent (char const *tensorName) const noexcept
 返回元素每个组件的字节数,如果张量未向量化或提供的名称未映射到输入或输出张量,则返回 -1。 更多...
 
int32_t getTensorBytesPerComponent (char const *tensorName, int32_t profileIndex) const noexcept
 返回给定配置文件的元素的每个组件的字节数,如果张量未向量化或提供的名称未映射到输入或输出张量,则返回 -1。 更多...
 
int32_t getTensorComponentsPerElement (char const *tensorName) const noexcept
 返回一个元素中包含的组件数,如果张量未向量化或提供的名称未映射到输入或输出张量,则返回 -1。 更多...
 
int32_t getTensorComponentsPerElement (char const *tensorName, int32_t profileIndex) const noexcept
 返回给定配置文件的元素的组件数,如果张量未向量化或提供的名称未映射到输入或输出张量,则返回 -1。 更多...
 
TensorFormat getTensorFormat (char const *tensorName) const noexcept
 返回张量格式,如果提供的名称未映射到输入或输出张量,则返回 TensorFormat::kLINEAR更多...
 
TensorFormat getTensorFormat (char const *tensorName, int32_t profileIndex) const noexcept
 返回给定配置文件的张量格式,如果提供的名称未映射到输入或输出张量,则返回 TensorFormat::kLINEAR更多...
 
char const * getTensorFormatDesc (char const *tensorName) const noexcept
 返回张量格式的人类可读描述,如果提供的名称未映射到输入或输出张量,则返回空字符串。 更多...
 
char const * getTensorFormatDesc (char const *tensorName, int32_t profileIndex) const noexcept
 返回给定配置文件的张量格式的人类可读描述,如果提供的名称未映射到输入或输出张量,则返回空字符串。 更多...
 
int32_t getTensorVectorizedDim (char const *tensorName) const noexcept
 返回缓冲区向量化的维度索引,如果提供的名称未映射到输入或输出张量,则返回 -1。 更多...
 
int32_t getTensorVectorizedDim (char const *tensorName, int32_t profileIndex) const noexcept
 返回给定配置文件的缓冲区向量化的维度索引,如果提供的名称未映射到输入或输出张量,则返回 -1。 更多...
 
char const * getName () const noexcept
 返回与引擎关联的网络名称。 更多...
 
int32_t getNbOptimizationProfiles () const noexcept
 获取为此引擎定义的优化配置文件的数量。 更多...
 
Dims getProfileShape (char const *tensorName, int32_t profileIndex, OptProfileSelector select) const noexcept
 获取在优化配置文件下给定名称的输入张量的最小/最佳/最大维度。 更多...
 
int32_t const * getProfileTensorValues (char const *tensorName, int32_t profileIndex, OptProfileSelector select) const noexcept
 获取在优化配置文件下给定名称的输入张量的最小/最佳/最大值(非维度)。 这些值对应于在使用 IOptimizationProfile::setShapeValues 构建引擎时设置的值。 更多...
 
EngineCapability getEngineCapability () const noexcept
 确定此引擎具有哪些执行能力。 更多...
 
void setErrorRecorder (IErrorRecorder *recorder) noexcept
 为此接口设置 ErrorRecorder。 更多...
 
IErrorRecordergetErrorRecorder () const noexcept
 获取分配给此接口的 ErrorRecorder。 更多...
 
TRT_DEPRECATED bool hasImplicitBatchDimension () const noexcept
 查询引擎是否使用隐式批次维度构建。 更多...
 
TacticSources getTacticSources () const noexcept
 返回此引擎所需策略来源。 更多...
 
ProfilingVerbosity getProfilingVerbosity () const noexcept
 返回构建引擎时构建器配置设置的 ProfilingVerbosity更多...
 
IEngineInspectorcreateEngineInspector () const noexcept
 创建一个新的引擎检查器,用于打印引擎或执行上下文中的层信息。 更多...
 
int32_t getNbIOTensors () const noexcept
 返回 IO 张量的数量。 更多...
 
char const * getIOTensorName (int32_t index) const noexcept
 返回 IO 张量的名称。 更多...
 
HardwareCompatibilityLevel getHardwareCompatibilityLevel () const noexcept
 返回此引擎的硬件兼容性级别。 更多...
 
int32_t getNbAuxStreams () const noexcept
 返回此引擎使用的辅助流的数量。 更多...
 
ISerializationConfigcreateSerializationConfig () noexcept
 创建序列化配置对象。 更多...
 
IHostMemoryserializeWithConfig (ISerializationConfig &config) const noexcept
 使用提供的 SerializationConfig 将网络序列化到流。 更多...
 
TRT_DEPRECATED bool setWeightStreamingBudget (int64_t gpuMemoryBudget) noexcept
 限制网络权重可用的最大 GPU 内存量(以字节为单位)。 更多...
 
TRT_DEPRECATED int64_t getWeightStreamingBudget () const noexcept
 返回当前权重流式传输设备内存预算(以字节为单位)。 更多...
 
TRT_DEPRECATED int64_t getMinimumWeightStreamingBudget () const noexcept
 成功进行权重流式传输所需的网络权重的最小 GPU 内存字节数。 更多...
 
int64_t getStreamableWeightsSize () const noexcept
 获取所有可流式传输权重的总大小(以字节为单位)。 更多...
 
bool setWeightStreamingBudgetV2 (int64_t gpuMemoryBudget) noexcept
 限制网络权重可用的最大 GPU 内存量(以字节为单位)。 更多...
 
int64_t getWeightStreamingBudgetV2 () const noexcept
 返回当前权重流式传输设备内存预算(以字节为单位)。 更多...
 
int64_t getWeightStreamingAutomaticBudget () const noexcept
 TensorRT 自动确定模型运行的设备内存预算。预算接近当前可用内存大小,为用户应用程序中的其他内存需求留出一些空间。如果预算超过从 getStreamableWeightsSize() 获取的大小,则预算将被限制为该大小,从而有效地禁用权重流式传输。由于 TensorRT 缺乏有关用户分配的信息,因此剩余内存大小可能大于所需大小(导致内存浪费),或者小于所需大小(导致内存不足错误)。为了获得最佳内存分配,建议手动计算并设置预算。 更多...
 
int64_t getWeightStreamingScratchMemorySize () const noexcept
 返回当前权重流式传输预算所需的暂存内存大小。 更多...
 
bool isDebugTensor (char const *name) const noexcept
 检查张量是否标记为调试张量。 更多...
 

保护属性

apiv::VCudaEngine * mImpl
 

附加继承成员

- 继承自 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
 

详细描述

用于在已构建网络上执行推理的引擎,具有功能上不安全的功能。

警告
不要从此类继承,因为这样做会破坏 API 和 ABI 的向前兼容性。

构造函数 & 析构函数文档

◆ ~ICudaEngine()

virtual nvinfer1::ICudaEngine::~ICudaEngine ( )
virtualdefaultnoexcept

成员函数文档

◆ createEngineInspector()

IEngineInspector * nvinfer1::ICudaEngine::createEngineInspector ( ) const
inlinenoexcept

创建一个新的引擎检查器,用于打印引擎或执行上下文中的层信息。

另请参阅
IEngineInspector.

◆ createExecutionContext()

IExecutionContext * nvinfer1::ICudaEngine::createExecutionContext ( ExecutionContextAllocationStrategy  strategy = ExecutionContextAllocationStrategy::kSTATIC)
inlinenoexcept

创建执行上下文并指定用于分配内部激活内存的策略。

分配策略的默认值为 ExecutionContextAllocationStrategy::kSTATIC,这意味着上下文将预先分配一块设备内存,该内存足以容纳所有配置文件。 新创建的执行上下文将被分配优化配置文件 0。 如果已为引擎设置了错误记录器,它也将传递给执行上下文。

另请参阅
IExecutionContext
IExecutionContext::setOptimizationProfileAsync()
ExecutionContextAllocationStrategy

◆ createExecutionContextWithoutDeviceMemory()

TRT_DEPRECATED IExecutionContext * nvinfer1::ICudaEngine::createExecutionContextWithoutDeviceMemory ( )
inlinenoexcept

创建不分配任何设备内存的执行上下文

此设备上下文执行所需的内存必须由应用程序提供。

已弃用
在 TensorRT 10.0 中已弃用。 由带参数的 createExecutionContext() 取代。

◆ createSerializationConfig()

ISerializationConfig * nvinfer1::ICudaEngine::createSerializationConfig ( )
inlinenoexcept

创建序列化配置对象。

另请参阅
ISerializationConfig

◆ getDeviceMemorySize()

TRT_DEPRECATED size_t nvinfer1::ICudaEngine::getDeviceMemorySize ( ) const
inlinenoexcept

返回所有配置文件中上下文所需的最大设备内存。

已弃用
在 TensorRT 10.1 中已弃用。 由 getDeviceMemorySizeV2() 取代。
另请参阅
IExecutionContext::setDeviceMemory()

◆ getDeviceMemorySizeForProfile()

TRT_DEPRECATED size_t nvinfer1::ICudaEngine::getDeviceMemorySizeForProfile ( int32_t  profileIndex) const
inlinenoexcept

返回配置文件中上下文所需的最大设备内存。

已弃用
在 TensorRT 10.1 中已弃用。 由 getDeviceMemorySizeForProfileV2(int32_t) 取代。
另请参阅
IExecutionContext::setDeviceMemoryV2()

◆ getDeviceMemorySizeForProfileV2()

int64_t nvinfer1::ICudaEngine::getDeviceMemorySizeForProfileV2 ( int32_t  profileIndex) const
inlinenoexcept

返回配置文件中上下文所需的最大设备内存。

此 API 是有状态的,因此其调用基于以下调用返回不同的值

另请参阅
IExecutionContext::setDeviceMemoryV2()
setWeightStreamingBudget()
setWeightStreamingBudgetV2()

◆ getDeviceMemorySizeV2()

int64_t nvinfer1::ICudaEngine::getDeviceMemorySizeV2 ( ) const
inlinenoexcept

返回所有配置文件中上下文所需的最大设备内存。

此 API 是有状态的,因此其调用基于以下调用返回不同的值

另请参阅
IExecutionContext::setDeviceMemoryV2()
setWeightStreamingBudget()
setWeightStreamingBudgetV2()

◆ getEngineCapability()

EngineCapability nvinfer1::ICudaEngine::getEngineCapability ( ) const
inlinenoexcept

确定此引擎具有哪些执行能力。

如果引擎具有 EngineCapability::kSTANDARD,则所有引擎功能均有效。 如果引擎具有 EngineCapability::kSAFETY,则只有安全引擎中的功能有效。 如果引擎具有 EngineCapability::kDLA_STANDALONE,则只有序列化、销毁和 const 访问器函数有效。

返回值
引擎构建的 EngineCapability 标志。

◆ getErrorRecorder()

IErrorRecorder * nvinfer1::ICudaEngine::getErrorRecorder ( ) const
inlinenoexcept

获取分配给此接口的 ErrorRecorder。

检索给定类别的已分配错误记录器对象。 如果未设置错误处理程序,则将返回 nullptr。

返回值
指向已注册的 IErrorRecorder 对象的指针。
另请参阅
setErrorRecorder()

◆ getHardwareCompatibilityLevel()

HardwareCompatibilityLevel nvinfer1::ICudaEngine::getHardwareCompatibilityLevel ( ) const
inlinenoexcept

返回此引擎的硬件兼容性级别。

返回值
hardwareCompatibilityLevel 硬件兼容性级别。

这仅适用于 Ampere 和更新的架构。

◆ getIOTensorName()

char const * nvinfer1::ICudaEngine::getIOTensorName ( int32_t  index) const
inlinenoexcept

返回 IO 张量的名称。

参数
index介于 0 和 getNbIOTensors()-1 之间的值
另请参阅
getNbIOTensors()

◆ getMinimumWeightStreamingBudget()

TRT_DEPRECATED int64_t nvinfer1::ICudaEngine::getMinimumWeightStreamingBudget ( ) const
inlinenoexcept

成功进行权重流式传输所需的网络权重的最小 GPU 内存字节数。

对于具有可流式传输权重的引擎,这是一个正整数,因为 GPU 上需要一个暂存缓冲区来临时保存流式传输的权重。 暂存缓冲区的大小由 TensorRT 确定,并且必须至少与网络中最大可流式传输权重的大小一样大。

警告
BuilderFlag::kWEIGHT_STREAMING 必须在引擎构建期间设置。
返回值
流式传输所需的最小 GPU 内存字节数。
已弃用
在 TensorRT 10.1 中已弃用。 最小预算在 V2 API 中为 0。
另请参阅
setWeightStreamingBudget()

◆ getName()

char const * nvinfer1::ICudaEngine::getName ( ) const
inlinenoexcept

返回与引擎关联的网络名称。

该名称在网络创建期间设置,并在构建或反序列化后检索。

另请参阅
INetworkDefinition::setName(), INetworkDefinition::getName()
返回值
表示网络名称的空终止 C 样式字符串。

◆ getNbAuxStreams()

int32_t nvinfer1::ICudaEngine::getNbAuxStreams ( ) const
inlinenoexcept

返回此引擎使用的辅助流的数量。

此数字将小于或等于构建引擎时 IBuilderConfig::setMaxAuxStreams() API 调用设置的最大允许辅助流数。

返回值
此引擎使用的辅助流的数量。
另请参阅
IBuilderConfig::setMaxAuxStreams(), IExecutionContext::setAuxStreams()

◆ getNbIOTensors()

int32_t nvinfer1::ICudaEngine::getNbIOTensors ( ) const
inlinenoexcept

返回 IO 张量的数量。

它是从中构建引擎的网络的输入和输出张量的数量。 IO 张量的名称可以通过调用 getIOTensorName(i) 来发现,其中 i 在 0 到 getNbIOTensors()-1 之间。

另请参阅
getIOTensorName()

◆ getNbLayers()

int32_t nvinfer1::ICudaEngine::getNbLayers ( ) const
inlinenoexcept

获取网络中的层数。

网络中的层数不一定是原始网络定义中的数量,因为在优化引擎时可能会组合或消除层。 当构建逐层表格时,此值可能很有用,例如在聚合多次执行的分析数据时。

返回值
网络中的层数。

◆ getNbOptimizationProfiles()

int32_t nvinfer1::ICudaEngine::getNbOptimizationProfiles ( ) const
inlinenoexcept

获取为此引擎定义的优化配置文件的数量。

返回值
优化配置文件的数量。 它始终至少为 1。
另请参阅
IExecutionContext::setOptimizationProfileAsync()

◆ getProfileShape()

Dims nvinfer1::ICudaEngine::getProfileShape ( char const *  tensorName,
int32_t  profileIndex,
OptProfileSelector  select 
) const
inlinenoexcept

获取在优化配置文件下给定名称的输入张量的最小/最佳/最大维度。

参数
tensorName输入张量的名称。
profileIndex配置文件索引,必须介于 0 和 getNbOptimizationProfiles()-1 之间。
select是否查询此输入张量的最小、最佳或最大维度。
返回值
此配置文件中输入张量的最小/最佳/最大维度。 如果 profileIndex 无效或提供的名称未映射到输入张量,则返回 Dims{-1, {}}
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。

◆ getProfileTensorValues()

int32_t const * nvinfer1::ICudaEngine::getProfileTensorValues ( char const *  tensorName,
int32_t  profileIndex,
OptProfileSelector  select 
) const
inlinenoexcept

获取在优化配置下,给定名称的输入张量的最小/最佳/最大值(非维度)。 这些值与构建引擎时使用 IOptimizationProfile::setShapeValues 设置的值相对应。

参数
tensorName输入张量的名称。
profileIndex配置文件索引,必须介于 0 和 getNbOptimizationProfiles()-1 之间。
select是否查询此输入张量的最小值、最佳值或最大值。
返回值
此配置中输入张量的最小/最佳/最大值。如果 profileIndex 无效,或提供的名称未映射到输入张量,或张量不是形状绑定,则返回 nullptr。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。

◆ getProfilingVerbosity()

ProfilingVerbosity nvinfer1::ICudaEngine::getProfilingVerbosity ( ) const
inlinenoexcept

返回构建引擎时构建器配置所设置的 ProfilingVerbosity

返回值
构建引擎时构建器配置所设置的分析详细程度。
另请参阅
IBuilderConfig::setProfilingVerbosity()

◆ getStreamableWeightsSize()

int64_t nvinfer1::ICudaEngine::getStreamableWeightsSize ( ) const
inlinenoexcept

获取所有可流式传输权重的总大小(以字节为单位)。

可流式传输权重集是所有网络权重的子集。总大小可能超过空闲 GPU 内存。

返回值
所有可流式传输权重的总大小(以字节为单位)。如果在引擎构建期间未设置 BuilderFlag::kWEIGHT_STREAMING,则返回 0。
另请参阅
setWeightStreamingBudget()

◆ getTacticSources()

TacticSources nvinfer1::ICudaEngine::getTacticSources ( ) const
inlinenoexcept

返回此引擎所需策略源。

返回的值等于或多于通过 IBuilderConfig 中的 setTacticSources() 在构建时设置的策略源。 由后者设置但未由 ICudaEngine::getTacticSources 返回的源不会减少整体引擎执行时间,并且可以从未来的构建中删除以减少构建时间。

另请参阅
IBuilderConfig::setTacticSources()

◆ getTensorBytesPerComponent() [1/2]

int32_t nvinfer1::ICudaEngine::getTensorBytesPerComponent ( char const *  tensorName) const
inlinenoexcept

返回元素的每个组件的字节数,如果张量未向量化或提供的名称未映射到输入或输出张量,则返回 -1。

如果 getTensorVectorizedDim(tensorName) != -1,则返回向量组件大小。

参数
tensorName输入或输出张量的名称。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。
该函数只能返回配置 0 的结果,并且当引擎中有多个配置时会发出警告消息,当有多个配置时,请使用带有 profileIndex 的 getTensorBytesPerComponent。
另请参阅
getTensorVectorizedDim()
getTensorBytesPerComponent(tensorName, profileIndex)

◆ getTensorBytesPerComponent() [2/2]

int32_t nvinfer1::ICudaEngine::getTensorBytesPerComponent ( char const *  tensorName,
int32_t  profileIndex 
) const
inlinenoexcept

返回给定配置的元素的每个组件的字节数,如果张量未向量化或提供的名称未映射到输入或输出张量,则返回 -1。

如果 getTensorVectorizedDim(tensorName, profileIndex) != -1,则返回向量组件大小。

参数
tensorName输入或输出张量的名称。
profileIndex要查询的配置索引
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。
另请参阅
getTensorVectorizedDim(tensorName, profileIndex)

◆ getTensorComponentsPerElement() [1/2]

int32_t nvinfer1::ICudaEngine::getTensorComponentsPerElement ( char const *  tensorName) const
inlinenoexcept

返回一个元素中包含的组件数,如果张量未向量化,或者提供的名称未映射到输入或输出张量,则返回 -1。

如果 getTensorVectorizedDim(tensorName) != -1,则返回向量中的元素数。

参数
tensorName输入或输出张量的名称。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。
该函数只能返回配置 0 的结果,并且当引擎中有多个配置时会发出警告消息,当有多个配置时,请使用带有 profileIndex 的 getTensorComponentsPerElement。
另请参阅
getTensorVectorizedDim()
getTensorComponentsPerElement(tensorName, profileIndex)

◆ getTensorComponentsPerElement() [2/2]

int32_t nvinfer1::ICudaEngine::getTensorComponentsPerElement ( char const *  tensorName,
int32_t  profileIndex 
) const
inlinenoexcept

返回给定配置的一个元素中包含的组件数,如果张量未向量化,或者提供的名称未映射到输入或输出张量,则返回 -1。

如果 getTensorVectorizedDim(tensorName, profileIndex) != -1,则返回向量中的元素数。

参数
tensorName输入或输出张量的名称。
profileIndex要查询的配置索引
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。
另请参阅
getTensorVectorizedDim(tensorName, profileIndex)

◆ getTensorDataType()

DataType nvinfer1::ICudaEngine::getTensorDataType ( char const *  tensorName) const
inlinenoexcept

确定缓冲区所需的数据类型,根据其张量名称。

参数
tensorName输入或输出张量的名称。
返回值
缓冲区中数据的类型,或者如果提供的名称未映射到输入或输出张量,则返回 DataType::kFLOAT
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。

◆ getTensorFormat() [1/2]

TensorFormat nvinfer1::ICudaEngine::getTensorFormat ( char const *  tensorName) const
inlinenoexcept

返回张量格式,或者如果提供的名称未映射到输入或输出张量,则返回 TensorFormat::kLINEAR

警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。
此 API 只能返回配置 0 的张量格式,并且当引擎中有多个配置时会发出警告消息,当有多个配置时,请使用带有 profileIndex 的 getTensorFormat。
另请参阅
getTensorFormat(tensorName, profileIndex)

◆ getTensorFormat() [2/2]

TensorFormat nvinfer1::ICudaEngine::getTensorFormat ( char const *  tensorName,
int32_t  profileIndex 
) const
inlinenoexcept

返回给定配置的张量格式,或者如果提供的名称未映射到输入或输出张量,则返回 TensorFormat::kLINEAR

参数
tensorName输入或输出张量的名称。
profileIndex要查询格式的配置索引。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。

◆ getTensorFormatDesc() [1/2]

char const * nvinfer1::ICudaEngine::getTensorFormatDesc ( char const *  tensorName) const
inlinenoexcept

返回张量格式的人类可读描述,如果提供的名称未映射到输入或输出张量,则返回空字符串。

描述包括顺序、向量化、数据类型和步幅。 示例如下所示:示例 1:kCHW + FP32 "行主线性 FP32 格式" 示例 2:kCHW2 + FP16 "双通道向量化行主 FP16 格式" 示例 3:kHWC8 + FP16 + 行步幅 = 32 "通道主 FP16 格式,其中 C % 8 == 0 且 H 步幅 % 32 == 0"

参数
tensorName输入或输出张量的名称。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。
该函数只能返回配置 0 的结果,并且当引擎中有多个配置时会发出警告消息,当有多个配置时,请使用带有 profileIndex 的 getTensorFormatDesc。

◆ getTensorFormatDesc() [2/2]

char const * nvinfer1::ICudaEngine::getTensorFormatDesc ( char const *  tensorName,
int32_t  profileIndex 
) const
inlinenoexcept

返回给定配置的张量格式的人类可读描述,如果提供的名称未映射到输入或输出张量,则返回空字符串。

描述包括顺序、向量化、数据类型和步幅。 示例如下所示:示例 1:kCHW + FP32 "行主线性 FP32 格式" 示例 2:kCHW2 + FP16 "双通道向量化行主 FP16 格式" 示例 3:kHWC8 + FP16 + 行步幅 = 32 "通道主 FP16 格式,其中 C % 8 == 0 且 H 步幅 % 32 == 0"

参数
tensorName输入或输出张量的名称。
profileIndex要查询格式的配置索引。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。

◆ getTensorIOMode()

TensorIOMode nvinfer1::ICudaEngine::getTensorIOMode ( char const *  tensorName) const
inlinenoexcept

确定张量是输入张量还是输出张量。

参数
tensorName输入或输出张量的名称。
返回值
如果 tensorName 是输入,则返回 kINPUT;如果 tensorName 是输出,则返回 kOUTPUT;如果都不是,则返回 kNONE。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。

◆ getTensorLocation()

TensorLocation nvinfer1::ICudaEngine::getTensorLocation ( char const *  tensorName) const
inlinenoexcept

获取输入或输出张量是否必须位于 GPU 或 CPU 上。

参数
tensorName输入或输出张量的名称。
返回值
如果 tensorName 必须位于 GPU 上,则返回 TensorLocation::kDEVICE;如果位于 CPU 上,则返回 TensorLocation::kHOST;如果提供的名称未映射到输入或输出张量,则返回 TensorLocation::kDEVICE

位置在构建时确定。例如,形状张量输入通常需要位于 CPU 上。

警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。

◆ getTensorShape()

Dims nvinfer1::ICudaEngine::getTensorShape ( char const *  tensorName) const
inlinenoexcept

获取输入或输出张量的形状。

参数
tensorName输入或输出张量的名称。
返回值
张量的形状,动态运行时维度处为 -1,或者如果提供的名称未映射到输入或输出张量,则返回 Dims{-1, {}}。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。

◆ getTensorVectorizedDim() [1/2]

int32_t nvinfer1::ICudaEngine::getTensorVectorizedDim ( char const *  tensorName) const
inlinenoexcept

返回缓冲区向量化的维度索引,如果提供的名称未映射到输入或输出张量,则返回 -1。

具体来说,如果每个向量的标量数为 1,则返回 -1。

参数
tensorName输入或输出张量的名称。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。
该函数只能返回配置 0 的结果,并且当引擎中有多个配置时会发出警告消息,当有多个配置时,请使用带有 profileIndex 的 getTensorVectorizedDim。

◆ getTensorVectorizedDim() [2/2]

int32_t nvinfer1::ICudaEngine::getTensorVectorizedDim ( char const *  tensorName,
int32_t  profileIndex 
) const
inlinenoexcept

返回给定配置的缓冲区向量化的维度索引,如果提供的名称未映射到输入或输出张量,则返回 -1。

具体来说,如果每个向量的标量数为 1,则返回 -1。

参数
tensorName输入的名称。
profileIndex要查询格式的配置索引。
警告
字符串 tensorName 必须以 null 结尾,且包括终止符在内不得超过 4096 字节。

◆ getWeightStreamingAutomaticBudget()

int64_t nvinfer1::ICudaEngine::getWeightStreamingAutomaticBudget ( ) const
inlinenoexcept

TensorRT 自动确定模型运行的设备内存预算。预算接近当前可用内存大小,为用户的应用程序中的其他内存需求留出一些空间。如果预算超过从 getStreamableWeightsSize() 获取的大小,则会将其限制为该大小,从而有效地禁用权重流式传输。由于 TensorRT 缺少有关用户分配的信息,因此剩余内存大小可能大于所需大小(导致内存浪费),或者小于所需大小(导致内存不足错误)。为了获得最佳内存分配,建议手动计算和设置预算。

警告
BuilderFlag::kWEIGHT_STREAMING 必须在引擎构建期间设置。
返回值可能会在 TensorRT 次要版本之间发生变化。
使用 V1 API (setWeightStreamingBudget()) 设置返回的预算将导致未定义的行为。请使用 V2 API。
返回值
权重流式传输预算(以字节为单位)。请使用 setWeightStreamingBudgetV2() 进行设置。
另请参阅
BuilderFlag::kWEIGHT_STREAMING
setWeightStreamingBudgetV2()

◆ getWeightStreamingBudget()

TRT_DEPRECATED int64_t nvinfer1::ICudaEngine::getWeightStreamingBudget ( ) const
inlinenoexcept

返回当前权重流式传输设备内存预算(以字节为单位)。

警告
BuilderFlag::kWEIGHT_STREAMING 必须在引擎构建期间设置。
返回值
权重流式传输预算(以字节为单位)。有关可能的值,请参阅 setWeightStreamingBudget()
已弃用
在 TensorRT 10.1 中已弃用。已被 getWeightStreamingBudgetV2() 取代。
另请参阅
BuilderFlag::kWEIGHT_STREAMING,
setWeightStreamingBudget()
getMinimumWeightStreamingBudget()
getStreamableWeightsSize()

◆ getWeightStreamingBudgetV2()

int64_t nvinfer1::ICudaEngine::getWeightStreamingBudgetV2 ( ) const
inlinenoexcept

返回当前权重流式传输设备内存预算(以字节为单位)。

警告
BuilderFlag::kWEIGHT_STREAMING 必须在引擎构建期间设置。
返回值
权重流式传输预算(以字节为单位)。有关可能的返回值,请参阅 setWeightStreamingBudgetV2()。如果禁用权重流式传输,则返回 getStreamableWeightsSize()
另请参阅
BuilderFlag::kWEIGHT_STREAMING
setWeightStreamingBudget()
getMinimumWeightStreamingBudget()
getStreamableWeightsSize()

◆ getWeightStreamingScratchMemorySize()

int64_t nvinfer1::ICudaEngine::getWeightStreamingScratchMemorySize ( ) const
inlinenoexcept

返回当前权重流式传输预算所需的暂存内存大小。

权重流式传输需要在 GPU 上少量暂存内存,以便在执行之前暂存 CPU 权重。此值通常远小于总可流式传输权重大小。然后,每个 IExecutionContext 将分配此额外内存,或者用户可以通过 getDeviceMemorySizeV2()IExecutionContext::setDeviceMemoryV2() 提供额外内存。

此调用的返回值取决于

  1. setWeightStreamingBudget()
  2. setWeightStreamingBudgetV2()
警告
BuilderFlag::kWEIGHT_STREAMING 必须在引擎构建期间设置。
返回值
权重流式传输暂存内存(以字节为单位)。如果禁用权重流式传输,则返回 0。
另请参阅
BuilderFlag::kWEIGHT_STREAMING
setWeightStreamingBudgetV2()
getStreamableWeightsSize()
getDeviceMemorySizeV2()
getDeviceMemorySizeForProfileV2()
IExecutionContext::setDeviceMemoryV2()

◆ hasImplicitBatchDimension()

TRT_DEPRECATED bool nvinfer1::ICudaEngine::hasImplicitBatchDimension ( ) const
inlinenoexcept

查询引擎是否使用隐式批次维度构建。

返回值
始终为 false,因为 TensorRT 10.0 不支持隐式批次维度。
另请参阅
createNetworkV2
已弃用
在 TensorRT 10.0 中已弃用。自 TensorRT 10.0 起,不再支持隐式批次。

◆ isDebugTensor()

bool nvinfer1::ICudaEngine::isDebugTensor ( char const *  name) const
inlinenoexcept

检查张量是否标记为调试张量。

确定给定的名称是否对应于调试张量。

返回值
如果张量是调试张量,则为 True,否则为 false。
另请参阅
INetworkDefinition::markDebug

◆ isRefittable()

bool nvinfer1::ICudaEngine::isRefittable ( ) const
inlinenoexcept

如果引擎可以重新拟合,则返回 true。

另请参阅
nvinfer1::createInferRefitter()

◆ isShapeInferenceIO()

bool nvinfer1::ICudaEngine::isShapeInferenceIO ( char const *  tensorName) const
inlinenoexcept

如果张量是形状计算所需的输入,或者是形状计算的输出,则为 True。

对于以下任一条件,返回 true

  • 张量是网络输入,并且 IExecutionContext::getTensorShape() 需要其值才能返回网络输出的形状。
  • 张量是网络输出,并且 inferShape() 将计算其值。

例如,如果网络使用输入张量 "foo" 作为 IElementWiseLayer 的加数,该层计算 IShuffleLayer 的“reshape dimensions”,则 isShapeInferenceIO("foo") == true。 如果网络将所述输入张量 "foo" 复制到输出 "bar",则 isShapeInferenceIO("bar") == true 并且 IExecutionContext::inferShapes() 将写入 "bar"。

◆ serialize()

IHostMemory * nvinfer1::ICudaEngine::serialize ( ) const
inlinenoexcept

将网络序列化到流。

返回值
一个 IHostMemory 对象,其中包含序列化的引擎。

可以使用 IRuntime::deserializeCudaEngine() 反序列化网络。

另请参阅
IRuntime::deserializeCudaEngine()

◆ serializeWithConfig()

IHostMemory * nvinfer1::ICudaEngine::serializeWithConfig ( ISerializationConfig config) const
inlinenoexcept

使用提供的 SerializationConfig 将网络序列化到流。

返回值
一个 IHostMemory 对象,其中包含序列化的引擎。

可以使用 IRuntime::deserializeCudaEngine() 反序列化网络。 使用 SerializationFlag::kEXCLUDE_WEIGHTS 序列化 plan 文件需要使用 kREFIT、kREFIT_IDENTICAL 或 kREFIT_INDIVIDUAL 构建引擎。

另请参阅
IRuntime::deserializeCudaEngine()

◆ setErrorRecorder()

void nvinfer1::ICudaEngine::setErrorRecorder ( IErrorRecorder recorder)
inlinenoexcept

为此接口设置 ErrorRecorder。

将 ErrorRecorder 分配给此接口。ErrorRecorder 将跟踪执行期间的所有错误。此函数将至少调用一次已注册 ErrorRecorder 的 incRefCount。将 recorder 设置为 nullptr 将取消注册接口的 recorder,如果已注册 recorder,则会导致调用 decRefCount。

如果未设置错误记录器,则消息将发送到全局日志流。

参数
recorder要注册到此接口的错误记录器。
另请参阅
getErrorRecorder()

◆ setWeightStreamingBudget()

TRT_DEPRECATED bool nvinfer1::ICudaEngine::setWeightStreamingBudget ( int64_t  gpuMemoryBudget)
inlinenoexcept

限制网络权重可用的最大 GPU 内存量(以字节为单位)。

参数
gpuMemoryBudget此参数可以采用 3 种类型的值: -1:允许 TensorRT 根据可流式传输权重大小选择预算。将在 createExecutionContext() 查询可用 CUDA 内存,并据此
  • 如果所有可流式传输权重都适合:则不需要权重流式传输,并禁用。
  • 否则:预算设置为 getMinimumWeightStreamingBudget 0:(默认)禁用权重流式传输。如果网络对于 GPU 内存来说太大,则执行可能会失败。 >0:权重可以占用的最大 GPU 内存字节数。它必须在 [getMinimumWeightStreamingBudget, 可用 GPU 内存)] 范围内。

通过设置权重限制,用户可以预期 GPU 内存使用量减少(网络权重的总字节数)- gpuMemoryBudget 字节。当 gpuMemoryBudget 设置为 getMinimumWeightStreamingBudget() 时,内存节省最多。创建额外的 IExecutionContext 将使内存使用量增加 O(getMinimumStreamingBudget())。

流式传输更大的内存量可能会导致性能降低,除非在某些边界情况下,流式传输权重允许用户运行更大的批次大小。在这些情况下,更高的吞吐量抵消了延迟的增加。建议调整内存限制值以获得最佳性能。

警告
权重的 GPU 内存在此调用中分配,并将通过启用权重流式传输或销毁 ICudaEngine 来释放。
BuilderFlag::kWEIGHT_STREAMING 必须在引擎构建期间设置。
当存在活动的 IExecutionContext 时,无法修改权重流式传输预算。
返回值
如果内存限制有效且调用成功,则为 true,否则为 false。
已弃用
在 TensorRT 10.1 中已弃用。已被 setWeightStreamingBudgetV2() 取代。
另请参阅
BuilderFlag::kWEIGHT_STREAMING
getWeightStreamingBudget()
getMinimumWeightStreamingBudget()
getStreamableWeightsSize()

◆ setWeightStreamingBudgetV2()

bool nvinfer1::ICudaEngine::setWeightStreamingBudgetV2 ( int64_t  gpuMemoryBudget)
inlinenoexcept

限制网络权重可用的最大 GPU 内存量(以字节为单位)。

参数
gpuMemoryBudget此参数必须为非负值。 0:仅需要少量暂存内存即可运行模型。 >= getStreamableWeightsSize(默认值):禁用权重流式传输。如果网络对于 GPU 内存来说太大,则执行可能会失败。

通过设置权重限制,用户可以预期 GPU 内存使用量减少大约(网络权重的总字节数)- gpuMemoryBudget 字节。当 gpuMemoryBudget 设置为 0 时,内存节省最多。如果引擎正在流式传输其权重(预算 < getStreamableWeightsSize()),则每个 IExecutionContext 将需要 getWeightStreamingScratchMemorySize() 字节的额外设备内存。

流式传输更大的内存量可能会导致性能降低,除非在某些边界情况下,流式传输权重允许用户运行更大的批次大小。在这些情况下,更高的吞吐量抵消了延迟的增加。建议调整内存限制值以获得最佳性能。

警告
权重的 GPU 内存在此调用中分配,并将通过启用权重流式传输或销毁 ICudaEngine 来释放。
BuilderFlag::kWEIGHT_STREAMING 必须在引擎构建期间设置。
当存在活动的 IExecutionContext 时,无法修改权重流式传输预算。
将 V2 权重流式传输 API 与 V1 API (setWeightStreamingBudget()getWeightStreamingBudget()、getWeightStreamingMinimumBudget()) 一起使用会导致未定义的行为。
返回值
如果内存限制有效且调用成功,则为 true,否则为 false。
另请参阅
BuilderFlag::kWEIGHT_STREAMING
getWeightStreamingBudgetV2()
getWeightStreamingScratchMemorySize()
getWeightStreamingAutomaticBudget()
getStreamableWeightsSize()

成员数据文档

◆ mImpl

apiv::VCudaEngine* nvinfer1::ICudaEngine::mImpl
protected

此类文档从以下文件生成

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