onnx-mlir

Logo

ONNX 模型在 MLIR 编译器基础设施中的表示和参考下推

在 GitHub 上查看项目 onnx/onnx-mlir

操作指南

使用 Python 进行推理
使用 C/C++ 进行推理
使用 Java 进行推理

参考资料

ONNX 方言
OMTensor C99 运行时 API
OMTensorList C99 运行时 API
OMTensor Java 运行时 API
OMTensorList Java 运行时 API
生成 ONNX 方言
关于文档

开发

添加操作
测试指南
错误处理
命令行选项
插桩
常量传播
添加加速器

工具

工具

RunONNXModel.py
DocCheck

此项目由 onnx 维护

托管于 GitHub Pages — 主题来自 orderedlist

onnx-mlir: onnx-mlir/include/onnx-mlir/Runtime/OMTensor.h 文件参考 - ONNX 开放格式
onnx-mlir
加载中...
搜索中...
无匹配项
OMTensor.h 文件参考
#include <stdbool.h>
#include <malloc.h>
#include "onnx-mlir/Compiler/OMCompilerMacros.h"
#include "onnx-mlir/Runtime/OnnxDataType.h"

转到此文件的源代码。

类型定义

typedef struct OMTensor OMTensor
 

函数

OM_EXTERNAL_VISIBILITY OMTensoromTensorCreate (void *data_ptr, const int64_t *shape, int64_t rank, OM_DATA_TYPE dtype)
 使用指定的数据指针、形状、秩和元素类型创建 OMTensor。
 
OM_EXTERNAL_VISIBILITY OMTensoromTensorCreateWithOwnership (void *data_ptr, const int64_t *shape, int64_t rank, OM_DATA_TYPE dtype, int64_t owning)
 使用指定的数据指针、形状、秩和元素类型创建 OMTensor,并手动设置数据指针所有权。
 
OM_EXTERNAL_VISIBILITY OMTensoromTensorCreateEmpty (const int64_t *shape, int64_t rank, OM_DATA_TYPE dtype)
 
OM_EXTERNAL_VISIBILITY void omTensorDestroy (OMTensor *tensor)
 销毁 OMTensor 结构。
 
OM_EXTERNAL_VISIBILITY void * omTensorGetDataPtr (const OMTensor *tensor)
 OMTensor 数据指针获取器。
 
OM_EXTERNAL_VISIBILITY void * omTensorGetAllocatedPtr (const OMTensor *tensor)
 OMTensor 已分配数据指针获取器。
 
OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetShape (const OMTensor *tensor)
 OMTensor 数据形状获取器。
 
OM_EXTERNAL_VISIBILITY void omTensorSetShape (OMTensor *tensor, const int64_t *shape)
 OMTensor 数据形状设置器。
 
OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetStrides (const OMTensor *tensor)
 OMTensor 数据步长获取器。
 
OM_EXTERNAL_VISIBILITY void omTensorSetStrides (OMTensor *tensor, const int64_t *stride)
 OMTensor 数据步长设置器。
 
OM_EXTERNAL_VISIBILITY void omTensorSetStridesWithPyArrayStrides (OMTensor *tensor, const int64_t *stridesInBytes)
 使用 PyArray 步长值设置 OMTensor 数据步长。
 
OM_EXTERNAL_VISIBILITY OM_DATA_TYPE omTensorGetDataType (const OMTensor *tensor)
 OMTensor 数据类型获取器。
 
OM_EXTERNAL_VISIBILITY void omTensorSetDataType (OMTensor *tensor, OM_DATA_TYPE dataType)
 OMTensor 数据类型设置器。
 
OM_EXTERNAL_VISIBILITY int64_t omTensorGetBufferSize (const OMTensor *tensor)
 OMTensor 数值数据缓冲区大小获取器。
 
OM_EXTERNAL_VISIBILITY int64_t omTensorGetRank (const OMTensor *tensor)
 OMTensor 秩获取器。
 
OM_EXTERNAL_VISIBILITY int64_t omTensorGetNumElems (const OMTensor *tensor)
 OMTensor 元素数量获取器。
 
OM_EXTERNAL_VISIBILITY int64_t omTensorGetOwning (const OMTensor *tensor)
 OMTensor 拥有标志获取器。
 
OM_EXTERNAL_VISIBILITY void omTensorSetOwning (OMTensor *tensor, int64_t owning)
 OMTensor 拥有标志设置器。
 
OM_EXTERNAL_VISIBILITY void omTensorPrint (const char *msg, const OMTensor *tensor)
 

类型定义文档

◆ OMTensor

typedef struct OMTensor OMTensor

函数文档

◆ omTensorCreate()

OM_EXTERNAL_VISIBILITY OMTensor * omTensorCreate ( void *  数据指针,
const int64_t *  shape,
int64_t  ,
OM_DATA_TYPE  数据类型 
)

使用指定的数据指针、形状、秩和元素类型创建 OMTensor。

此调用将创建形状数组的副本,但不会创建数据数值的副本。形状数组在复制后不会被释放,因此用户需要自行管理形状数组。默认情况下,用户负责管理数值数据指针所引用的内存,在创建的张量使用期间保持数值数据处于活动状态,并在创建的张量最后一次使用后释放数值数据。也就是说,OMTensor 不是数值数据的所有者。要指示 OMTensor 对数值数据的所有权,请使用 omTensorCreateWithOwnership。所有权决定了 OMTensor 被销毁时会发生什么。拥有数值数据的所有权后,销毁 OMTensor 也会释放与张量关联的数值数据。

OM_DATA_TYPE 枚举了 ONNX 数据类型:INT/UINT 8/16/32/64, BOOL, FLOAT16, BFLOAT16, FLOAT, DOUBLE, COMPLEX 64/128, 和 STRING。例如,32 位有符号整数由 ONNX_TYPE_INT32 枚举值表示。

参数
数据指针指向张量数据数值的指针。默认情况下,调用者负责管理此指针所引用的内存。
shape指示张量形状的整数列表。
张量秩。
数据类型张量元素数据类型。
返回值
指向创建的 OMTensor 的指针,如果创建失败则为 NULL。

◆ omTensorCreateEmpty()

OM_EXTERNAL_VISIBILITY OMTensor * omTensorCreateEmpty ( const int64_t *  shape,
int64_t  ,
OM_DATA_TYPE  数据类型 
)

使用指定的形状、秩和元素类型创建 OMTensor,并为指定形状分配未初始化的数据。

使用此构造函数创建的 OMTensor 拥有为保存张量数值内容而分配的底层内存空间。

OM_DATA_TYPE 枚举了 ONNX 数据类型:INT/UINT 8/16/32/64, BOOL, FLOAT16, BFLOAT16, FLOAT, DOUBLE, COMPLEX 64/128, 和 STRING。例如,32 位浮点数由 ONNX_TYPE_FLOAT 枚举值表示。

参数
shape指示张量形状的整数列表。
张量秩。
数据类型张量元素数据类型。
返回值
指向创建的 OMTensor 的指针,如果创建失败则为 NULL。

◆ omTensorCreateWithOwnership()

OM_EXTERNAL_VISIBILITY OMTensor * omTensorCreateWithOwnership ( void *  数据指针,
const int64_t *  shape,
int64_t  ,
OM_DATA_TYPE  数据类型,
int64_t  拥有 
)

使用指定的数据指针、形状、秩和元素类型创建 OMTensor,并手动设置数据指针所有权。

此调用将创建形状数组的副本,但不会创建数值数据的副本。形状数组在复制后不会被释放,因此用户需要自行管理形状数组。用户可以指定 OMTensor 是否拥有数值数据,这随后决定了 OMTensor 被销毁时数值数据底层的内存空间是否会被释放。也就是说,如果所有权标志设置为 false,用户负责在张量最后一次使用之前保持数值数据处于活动状态,并在最后一次使用后释放数值数据内存。如果所有权设置为 true,则销毁张量也会释放与张量关联的数值数据。

OM_DATA_TYPE 枚举了 ONNX 数据类型:INT/UINT 8/16/32/64, BOOL, FLOAT16, BFLOAT16, FLOAT, DOUBLE, COMPLEX 64/128, 和 STRING。例如,32 位无符号整数由 ONNX_TYPE_UINT32 枚举值表示。

参数
数据指针指向张量数值数据值的指针。
shape指示张量形状的整数列表。
张量秩。
数据类型张量元素数据类型。
拥有OMTensor 是否拥有数据,如果设置为 true,OMTensor 将在销毁时释放 data_ptr。
返回值
指向创建的 OMTensor 的指针,如果创建失败则为 NULL。

◆ omTensorDestroy()

OM_EXTERNAL_VISIBILITY void omTensorDestroy ( OMTensor 张量)

销毁 OMTensor 结构。

如果 OMTensor 不拥有其数值数据,销毁 omTensor 不会释放张量数值所占用的内存。如果 OMTensor 拥有数值数据,此函数也将释放张量数值数据底层的内存空间。OMTensor 构造函数的文档阐明了所有权语义。

参数
张量指向 OMTensor 的指针。当指针为 null 时,函数直接返回。

◆ omTensorGetAllocatedPtr()

OM_EXTERNAL_VISIBILITY void * omTensorGetAllocatedPtr ( const OMTensor 张量)

OMTensor 已分配数据指针获取器。

参数
张量指向 OMTensor 的指针
返回值
指向 OMTensor 已分配内存缓冲区的指针,这应仅在需要创建跨语言操作以释放模型分配并在不同语言环境中释放的 OMTensor 缓冲区时使用。如果未设置数值数据缓冲区,则为 NULL。请注意,根据对齐约束,已分配指针和数据指针不一定相同。使用数据指针读/写值,使用已分配指针释放内存。

◆ omTensorGetBufferSize()

OM_EXTERNAL_VISIBILITY int64_t omTensorGetBufferSize ( const OMTensor 张量)

OMTensor 数值数据缓冲区大小获取器。

参数
张量指向 OMTensor 的指针
返回值
数据缓冲区的总大小(字节)。

◆ omTensorGetDataPtr()

OM_EXTERNAL_VISIBILITY void * omTensorGetDataPtr ( const OMTensor 张量)

OMTensor 数据指针获取器。

参数
张量指向 OMTensor 的指针
返回值
指向 OMTensor 数值数据缓冲区的指针,如果未设置数值数据缓冲区,则为 NULL。

◆ omTensorGetDataType()

OM_EXTERNAL_VISIBILITY OM_DATA_TYPE omTensorGetDataType ( const OMTensor 张量)

OMTensor 数据类型获取器。

OM_DATA_TYPE 枚举了 ONNX 数据类型:INT/UINT 8/16/32/64, BOOL, FLOAT16, BFLOAT16, FLOAT, DOUBLE, COMPLEX 64/128, 和 STRING。例如,字符串由 ONNX_TYPE_STRING 枚举值表示。

参数
张量指向 OMTensor 的指针
返回值
数据缓冲区元素的 ONNX 数据类型。

◆ omTensorGetNumElems()

OM_EXTERNAL_VISIBILITY int64_t omTensorGetNumElems ( const OMTensor 张量)

OMTensor 元素数量获取器。

参数
张量,指针指向 OMTensor
返回值
数据缓冲区中的元素数量。

◆ omTensorGetOwning()

OM_EXTERNAL_VISIBILITY int64_t omTensorGetOwning ( const OMTensor 张量)

OMTensor 拥有标志获取器。

返回值
OMTensor 的拥有标志。

◆ omTensorGetRank()

OM_EXTERNAL_VISIBILITY int64_t omTensorGetRank ( const OMTensor 张量)

OMTensor 秩获取器。

参数
张量,指针指向 OMTensor
返回值
OMTensor 的数据形状和步长秩。

◆ omTensorGetShape()

OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetShape ( const OMTensor 张量)

OMTensor 数据形状获取器。

数值数据形状作为指向 n 个 64 位整数数组的指针返回,其中 n 是张量的秩。

形状数组在未复制的情况下返回,因此调用者不应释放返回的指针。

参数
张量指向 OMTensor 的指针
返回值
指向数据形状数组的指针。

◆ omTensorGetStrides()

OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetStrides ( const OMTensor 张量)

OMTensor 数据步长获取器。

数据步长作为指向 n 个 64 位整数数组的指针返回,其中 n 是张量的秩。

步长数组在未复制的情况下返回,因此调用者不应释放返回的指针。

参数
张量指向 OMTensor 的指针
返回值
指向数据步长数组的指针。

◆ omTensorPrint()

OM_EXTERNAL_VISIBILITY void omTensorPrint ( const char *  消息,
const OMTensor 张量 
)

将 OMTensor 打印到标准输出。

参数
消息,指针指向描述性字符串。它接受以下三种格式之一:'t' 用于打印张量类型,'s' 用于打印详细签名,'d' 用于打印张量的完整数据值。此外,它还识别 'e' 作为消息字符串的结尾。
张量,指针要打印的 OMTensor

◆ omTensorSetDataType()

OM_EXTERNAL_VISIBILITY void omTensorSetDataType ( OMTensor 张量,
OM_DATA_TYPE  数据类型 
)

OMTensor 数据类型设置器。

OM_DATA_TYPE 枚举了 ONNX 数据类型:INT/UINT 8/16/32/64, BOOL, FLOAT16, BFLOAT16, FLOAT, DOUBLE, COMPLEX 64/128, 和 STRING。例如,1 位布尔值由 ONNX_TYPE_BOOL 枚举值表示。

参数
张量指向 OMTensor 的指针
数据类型要设置的 ONNX 数据类型

设置数据缓冲区元素的 ONNX 数据类型。

◆ omTensorSetOwning()

OM_EXTERNAL_VISIBILITY void omTensorSetOwning ( OMTensor 张量,
int64_t  拥有 
)

OMTensor 拥有标志设置器。

◆ omTensorSetShape()

OM_EXTERNAL_VISIBILITY void omTensorSetShape ( OMTensor 张量,
const int64_t *  shape 
)

OMTensor 数据形状设置器。

n 个 64 位元素从形状数组复制以指示张量的形状,其中 n 是张量的秩。

形状数组在复制后不会被释放,因此调用者需要自行管理形状数组。

参数
张量指向 OMTensor 的指针
shape要设置的数据形状数组

将 OMTensor 的数据形状数组设置为输入数组中的值。

◆ omTensorSetStrides()

OM_EXTERNAL_VISIBILITY void omTensorSetStrides ( OMTensor 张量,
const int64_t *  步长 
)

OMTensor 数据步长设置器。

n 个 64 位元素从步长数组复制以指示张量的每个维度步长,其中 n 是张量的秩。

步长数组在复制后不会被释放,因此调用者需要自行管理步长数组。

参数
张量指向 OMTensor 的指针
strides要设置的张量步长数组。

将 OMTensor 的数据步长数组设置为输入数组中的值。

◆ omTensorSetStridesWithPyArrayStrides()

OM_EXTERNAL_VISIBILITY void omTensorSetStridesWithPyArrayStrides ( OMTensor 张量,
const int64_t *  以字节为单位的步长 
)

使用 PyArray 步长值设置 OMTensor 数据步长。

请注意,PyArray 步长值以字节为单位,而 OMTensor 步长值以元素为单位。因此,PyArray 步长值在传递给 OMTensor 步长值之前将除以数据类型大小。

n 个 64 位元素从步长数组复制以指示张量的每个维度步长,其中 n 是张量的秩。

步长数组在复制后不会被释放,因此调用者需要自行管理步长数组。

参数
张量指向 OMTensor 的指针
strides要设置的张量步长数组。

将 OMTensor 的数据步长数组设置为输入数组中的值。