onnx-mlir

Logo

ONNX 模型在 MLIR 编译器基础设施中的表示与参考降低

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

操作指南

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

参考

ONNX Dialect
OMTensor C99 Runtime API
OMTensorList C99 Runtime API
OMTensor Java Runtime API
OMTensorList Java Runtime API
生成 ONNX Dialect
关于文档

开发

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

工具

工具

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"

前往此文件的源代码。

Typedefs

typedef struct OMTensor OMTensor
 

Functions

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 数据指针 getter。
 
OM_EXTERNAL_VISIBILITY void * omTensorGetAllocatedPtr (const OMTensor *tensor)
 OMTensor 分配的数据指针 getter。
 
OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetShape (const OMTensor *tensor)
 OMTensor 数据形状 getter。
 
OM_EXTERNAL_VISIBILITY void omTensorSetShape (OMTensor *tensor, const int64_t *shape)
 OMTensor 数据形状 setter。
 
OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetStrides (const OMTensor *tensor)
 OMTensor 数据步长 getter。
 
OM_EXTERNAL_VISIBILITY void omTensorSetStrides (OMTensor *tensor, const int64_t *stride)
 OMTensor 数据步长 setter。
 
OM_EXTERNAL_VISIBILITY void omTensorSetStridesWithPyArrayStrides (OMTensor *tensor, const int64_t *stridesInBytes)
 使用 PyArray 步长值设置 OMTensor 数据步长。
 
OM_EXTERNAL_VISIBILITY OM_DATA_TYPE omTensorGetDataType (const OMTensor *tensor)
 OMTensor 数据类型 getter。
 
OM_EXTERNAL_VISIBILITY void omTensorSetDataType (OMTensor *tensor, OM_DATA_TYPE dataType)
 OMTensor 数据类型 setter。
 
OM_EXTERNAL_VISIBILITY int64_t omTensorGetBufferSize (const OMTensor *tensor)
 OMTensor 数值数据缓冲区大小 getter。
 
OM_EXTERNAL_VISIBILITY int64_t omTensorGetRank (const OMTensor *tensor)
 OMTensor 秩 getter。
 
OM_EXTERNAL_VISIBILITY int64_t omTensorGetNumElems (const OMTensor *tensor)
 OMTensor 元素数量 getter。
 
OM_EXTERNAL_VISIBILITY int64_t omTensorGetOwning (const OMTensor *tensor)
 OMTensor 拥有标志 getter。
 
OM_EXTERNAL_VISIBILITY void omTensorSetOwning (OMTensor *tensor, int64_t owning)
 OMTensor 拥有标志 setter。
 
OM_EXTERNAL_VISIBILITY void omTensorPrint (const char *msg, const OMTensor *tensor)
 

Typedef 文档

◆ OMTensor

typedef struct OMTensor OMTensor

函数文档

◆ omTensorCreate()

OM_EXTERNAL_VISIBILITY OMTensor * omTensorCreate ( void *  data_ptr,
const int64_t *  shape,
int64_t  rank,
OM_DATA_TYPE  dtype 
)

创建一个具有指定数据指针、形状、秩和元素类型的 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 枚举值表示。

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

◆ omTensorCreateEmpty()

OM_EXTERNAL_VISIBILITY OMTensor * omTensorCreateEmpty ( const int64_t *  shape,
int64_t  rank,
OM_DATA_TYPE  dtype 
)

使用指定的形状、秩和元素类型创建一个 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表示张量形状的整数列表。
rank张量秩。
dtype张量元素数据类型。
返回值
指向创建的 OMTensor 的指针,如果创建失败则为 NULL。

◆ omTensorCreateWithOwnership()

OM_EXTERNAL_VISIBILITY OMTensor * omTensorCreateWithOwnership ( void *  data_ptr,
const int64_t *  shape,
int64_t  rank,
OM_DATA_TYPE  dtype,
int64_t  owning 
)

创建一个具有指定数据指针、形状、秩和元素类型的 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 枚举值表示。

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

◆ omTensorDestroy()

OM_EXTERNAL_VISIBILITY void omTensorDestroy ( OMTensor tensor)

销毁 OMTensor 结构体。

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

参数
tensor指向 OMTensor 的指针。如果指针为 null,函数将直接返回。

◆ omTensorGetAllocatedPtr()

OM_EXTERNAL_VISIBILITY void * omTensorGetAllocatedPtr ( const OMTensor tensor)

OMTensor 分配的数据指针 getter。

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

◆ omTensorGetBufferSize()

OM_EXTERNAL_VISIBILITY int64_t omTensorGetBufferSize ( const OMTensor tensor)

OMTensor 数值数据缓冲区大小 getter。

参数
tensor指向 OMTensor 的指针
返回值
数据缓冲区的总大小(以字节为单位)。

◆ omTensorGetDataPtr()

OM_EXTERNAL_VISIBILITY void * omTensorGetDataPtr ( const OMTensor tensor)

OMTensor 数据指针 getter。

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

◆ omTensorGetDataType()

OM_EXTERNAL_VISIBILITY OM_DATA_TYPE omTensorGetDataType ( const OMTensor tensor)

OMTensor 数据类型 getter。

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

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

◆ omTensorGetNumElems()

OM_EXTERNAL_VISIBILITY int64_t omTensorGetNumElems ( const OMTensor tensor)

OMTensor 元素数量 getter。

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

◆ omTensorGetOwning()

OM_EXTERNAL_VISIBILITY int64_t omTensorGetOwning ( const OMTensor tensor)

OMTensor 拥有标志 getter。

返回值
OMTensor 的拥有标志。

◆ omTensorGetRank()

OM_EXTERNAL_VISIBILITY int64_t omTensorGetRank ( const OMTensor tensor)

OMTensor 秩 getter。

参数
tensor,pointer指向 OMTensor
返回值
OMTensor 的数据形状和步长秩。

◆ omTensorGetShape()

OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetShape ( const OMTensor tensor)

OMTensor 数据形状 getter。

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

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

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

◆ omTensorGetStrides()

OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetStrides ( const OMTensor tensor)

OMTensor 数据步长 getter。

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

步长数组在返回时不复制,因此调用者需自行管理步长数组。

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

◆ omTensorPrint()

OM_EXTERNAL_VISIBILITY void omTensorPrint ( const char *  msg,
const OMTensor tensor 
)

将 OMTensor 打印到 stdout。

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

◆ omTensorSetDataType()

OM_EXTERNAL_VISIBILITY void omTensorSetDataType ( OMTensor tensor,
OM_DATA_TYPE  dataType 
)

OMTensor 数据类型 setter。

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

参数
tensor指向 OMTensor 的指针
dataType要设置的 ONNX 数据类型

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

◆ omTensorSetOwning()

OM_EXTERNAL_VISIBILITY void omTensorSetOwning ( OMTensor tensor,
int64_t  owning 
)

OMTensor 拥有标志 setter。

◆ omTensorSetShape()

OM_EXTERNAL_VISIBILITY void omTensorSetShape ( OMTensor tensor,
const int64_t *  shape 
)

OMTensor 数据形状 setter。

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

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

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

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

◆ omTensorSetStrides()

OM_EXTERNAL_VISIBILITY void omTensorSetStrides ( OMTensor tensor,
const int64_t *  stride 
)

OMTensor 数据步长 setter。

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

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

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

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

◆ omTensorSetStridesWithPyArrayStrides()

OM_EXTERNAL_VISIBILITY void omTensorSetStridesWithPyArrayStrides ( OMTensor tensor,
const int64_t *  stridesInBytes 
)

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

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

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

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

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

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