TensorRT 10.8.0
|
网络定义中的张量。 更多...
#include <NvInfer.h>
公共成员函数 | |
void | setName (char const *name) noexcept |
设置张量名称。 更多... | |
char const * | getName () const noexcept |
获取张量名称。 更多... | |
void | setDimensions (Dims const &dimensions) noexcept |
设置张量的维度。 更多... | |
Dims | getDimensions () const noexcept |
获取张量的维度。 更多... | |
void | setType (DataType type) noexcept |
设置张量的数据类型。 更多... | |
DataType | getType () const noexcept |
获取张量的数据类型。 更多... | |
TRT_DEPRECATED bool | setDynamicRange (float min, float max) noexcept |
设置张量的动态范围。 更多... | |
bool | isNetworkInput () const noexcept |
判断张量是否为网络输入。 更多... | |
bool | isNetworkOutput () const noexcept |
判断张量是否为网络输出。 更多... | |
TRT_DEPRECATED void | setBroadcastAcrossBatch (bool broadcastAcrossBatch) noexcept |
设置是否启用跨隐式批次维度的张量广播。 更多... | |
TRT_DEPRECATED bool | getBroadcastAcrossBatch () const noexcept |
检查张量是否跨隐式批次维度广播。 更多... | |
TensorLocation | getLocation () const noexcept |
获取张量的存储位置。 更多... | |
TRT_DEPRECATED void | setLocation (TensorLocation location) noexcept |
设置张量的存储位置。 更多... | |
TRT_DEPRECATED bool | dynamicRangeIsSet () const noexcept |
查询是否设置了动态范围。 更多... | |
void | resetDynamicRange () noexcept |
撤销 setDynamicRange 的效果。 更多... | |
float | getDynamicRangeMin () const noexcept |
获取动态范围的最小值。 更多... | |
float | getDynamicRangeMax () const noexcept |
获取动态范围的最大值。 更多... | |
void | setAllowedFormats (TensorFormats formats) noexcept |
为输入或输出张量设置允许的格式。 默认情况下,允许所有格式。 形状张量(isShapeTensor() 返回 true 时)可能只具有行主线性格式。 更多... | |
TensorFormats | getAllowedFormats () const noexcept |
获取张量支持的 TensorFormat 值位掩码。 对于形状张量,只允许行主线性格式。 更多... | |
bool | isShapeTensor () const noexcept |
判断张量是否为形状张量。 更多... | |
bool | isExecutionTensor () const noexcept |
判断张量是否为执行张量。 更多... | |
void | setDimensionName (int32_t index, char const *name) noexcept |
命名输入张量的维度。 更多... | |
char const * | getDimensionName (int32_t index) const noexcept |
获取输入维度的名称。 更多... | |
保护成员函数 | |
virtual | ~ITensor () 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::VTensor * | mImpl |
网络定义中的张量。
要从网络定义中移除张量,请使用 INetworkDefinition::removeTensor()。
当使用 DLA 时,所有未标记为网络输入或输出张量的张量的累积大小必须小于 1GB,才能适应单个子图。 如果指定了构建选项 kGPU_FALLBACK,则可以创建多个子图,每个子图的内部张量数据限制为小于 1GB。
|
protectedvirtualdefaultnoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
获取张量支持的 TensorFormat 值位掩码。 对于形状张量,只允许行主线性格式。
|
inlinenoexcept |
检查张量是否跨隐式批次维度广播。
|
inlinenoexcept |
获取输入维度的名称。
index | 维度的索引 |
|
inlinenoexcept |
|
inlinenoexcept |
获取动态范围的最大值。
|
inlinenoexcept |
获取动态范围的最小值。
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
判断张量是否为执行张量。
张量通常是执行张量。 例外情况是仅用于形状计算或其内容不需要计算输出的张量。
isExecutionTensor() 的结果仅在网络构建完成后才可靠。 例如,如果部分构建的网络没有从张量到网络输出的路径,则 isExecutionTensor() 返回 false。 完成路径将使其变为 true。
如果一个张量 isShapeTensor() == false 并且 isExecutionTensor() == false,如果需要其维度,仍然可以显示为引擎的输入。 在这种情况下,只需要在运行时设置其维度,并且可以传递 nullptr 而不是指向其内容的指针。
|
inlinenoexcept |
判断张量是否为网络输入。
|
inlinenoexcept |
判断张量是否为网络输出。
|
inlinenoexcept |
判断张量是否为形状张量。
形状张量是与形状计算相关的张量。 它必须具有 Int32、Int64、Bool 或 Float 类型,并且其形状必须在构建时可确定。 此外,它必须作为形状张量被需要,要么通过 markOutputForShapes() 标记为网络形状输出,要么作为需要为形状张量的层输入,例如 IShuffleLayer 的第二个输入。 某些层在这方面是“多态的”。 例如,如果输出是形状张量,则 IElementWiseLayer 的输入必须是形状张量。
TensorRT 开发人员指南给出了关于哪些张量是形状张量的正式规则。
isShapeTensor() 的结果仅在网络构建完成后才可靠。 例如,如果部分构建的网络将两个张量 T1 和 T2 相加创建张量 T3,并且都没有被用作形状张量,则 isShapeTensor() 对所有三个张量都返回 false。 将 IShuffleLayer 的第二个输入设置为 T3 将导致所有三个张量都成为形状张量,因为 IShuffleLayer 要求其第二个可选输入必须是形状张量,并且 IElementWiseLayer 是“多态的”。
张量可能既是形状张量又是执行张量。
|
inlinenoexcept |
撤销 setDynamicRange 的效果。
|
inlinenoexcept |
为输入或输出张量设置允许的格式。 默认情况下,允许所有格式。 形状张量(isShapeTensor() 返回 true 时)可能只具有行主线性格式。
当在 DLA 上运行网络并且未指定构建选项 kGPU_FALLBACK 时,如果设置了 DLA 格式(带有 Int8 的 kCHW4、带有 FP16 的 kCHW4、带有 FP16 的 kCHW16、带有 Int8 的 kCHW32),则输入格式被视为具有行步幅要求的本机 DLA 格式。 具有这些格式的输入/输出绑定在推理期间应具有正确的布局。
对于未标记为输入或输出的张量,TensorRT 在构建时确定张量格式。
formats | 此张量支持的 TensorFormat 值位掩码。 |
|
inlinenoexcept |
设置是否启用跨隐式批次维度的张量广播。
broadcastAcrossBatch | 是否跨 TensorRT 9.x 及更早版本的功能隐式批次维度广播张量。 |
|
inlinenoexcept |
命名输入张量的维度。
将输入张量的运行时维度与符号名称关联。 具有相同非空名称的维度在运行时必须相等。 了解运行时维度的这种相等性可能有助于 TensorRT 优化器。 运行时和构建时维度都可以命名。
例如,setDimensionName(0, "n") 将符号名称 "n" 与前导维度关联。
此方法复制名称字符串。 如果再次调用该函数,使用相同的索引,它将覆盖之前的名称。 如果将 nullptr 作为名称传递,它将清除维度的名称。
index | 维度的索引 |
name | 维度的名称,作为指向以 null 结尾的字符序列的指针。 |
|
inlinenoexcept |
设置张量的维度。
对于网络输入,维度由应用程序分配。 对于网络输出,维度根据层参数和层的输入计算得出。 如果在网络中修改了张量大小或参数,则将重新计算所有依赖张量的维度。
此调用仅对网络输入张量合法,因为层输出张量的维度是根据层输入和参数推断出来的。 体积必须小于 2^31 个元素。
dimensions | 张量的维度。 |
|
inlinenoexcept |
设置张量的动态范围。
目前,仅支持对称范围。 因此,使用提供的边界的绝对值中较大的值。
要求 min 和 max 是有限的,并且 min <= max。
|
inlinenoexcept |
设置张量的存储位置。
location | 张量数据的位置 |
仅支持用于存储 RNNv2 序列长度的网络输入张量。 对于不支持主机存储的层使用主机存储将在构建时生成错误。
|
inlinenoexcept |
设置张量名称。
对于网络输入,名称由应用程序分配。 对于作为层输出的张量,分配一个默认名称,该名称由层名称后跟括号中输出的索引组成。 每个输入和输出张量必须具有唯一的名称。
此方法复制名称字符串。
name | 名称。 |
|
inlinenoexcept |
|
protected |
版权所有 © 2024 NVIDIA Corporation
隐私政策 | 管理我的隐私 | 请勿出售或分享我的数据 | 服务条款 | 辅助功能 | 公司政策 | 产品安全 | 联系方式