ONNX 模型在 MLIR 编译器基础设施中的表示与参考降低
本项目由 onnx 维护
托管于 GitHub Pages — 主题由 orderedlist 提供
onnx-mlir
|
#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 OMTensor * | omTensorCreate (void *data_ptr, const int64_t *shape, int64_t rank, OM_DATA_TYPE dtype) |
创建一个具有指定数据指针、形状、秩和元素类型的 OMTensor。 | |
OM_EXTERNAL_VISIBILITY OMTensor * | omTensorCreateWithOwnership (void *data_ptr, const int64_t *shape, int64_t rank, OM_DATA_TYPE dtype, int64_t owning) |
创建一个具有指定数据指针、形状、秩和元素类型的 OMTensor,并手动设置数据指针的所有权。 | |
OM_EXTERNAL_VISIBILITY OMTensor * | omTensorCreateEmpty (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) |
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 | 张量元素数据类型。 |
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 | 张量元素数据类型。 |
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 | 张量元素数据类型。 |
owning | OMTensor 是否拥有数据,如果设置为 true,OMTensor 在销毁时会释放 data_ptr。 |
OM_EXTERNAL_VISIBILITY void omTensorDestroy | ( | OMTensor * | tensor | ) |
销毁 OMTensor 结构体。
如果 OMTensor 不拥有其数值数据,销毁 omTensor 不会释放张量数值数据占用的内存。如果 OMTensor 拥有数值数据,此函数也将释放张量数值数据的底层内存空间。OMTensor 构造函数的文档阐明了所有权语义。
tensor | 指向 OMTensor 的指针。如果指针为 null,函数将直接返回。 |
OM_EXTERNAL_VISIBILITY void * omTensorGetAllocatedPtr | ( | const OMTensor * | tensor | ) |
OMTensor 分配的数据指针 getter。
tensor | 指向 OMTensor 的指针 |
OM_EXTERNAL_VISIBILITY int64_t omTensorGetBufferSize | ( | const OMTensor * | tensor | ) |
OMTensor 数值数据缓冲区大小 getter。
tensor | 指向 OMTensor 的指针 |
OM_EXTERNAL_VISIBILITY void * omTensorGetDataPtr | ( | const OMTensor * | tensor | ) |
OMTensor 数据指针 getter。
tensor | 指向 OMTensor 的指针 |
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 的指针 |
OM_EXTERNAL_VISIBILITY int64_t omTensorGetNumElems | ( | const OMTensor * | tensor | ) |
OMTensor 元素数量 getter。
tensor,pointer | 指向 OMTensor |
OM_EXTERNAL_VISIBILITY int64_t omTensorGetOwning | ( | const OMTensor * | tensor | ) |
OMTensor 拥有标志 getter。
OM_EXTERNAL_VISIBILITY int64_t omTensorGetRank | ( | const OMTensor * | tensor | ) |
OMTensor 秩 getter。
tensor,pointer | 指向 OMTensor |
OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetShape | ( | const OMTensor * | tensor | ) |
OMTensor 数据形状 getter。
数值数据形状作为指向 n 个 64 位整数数组的指针返回,其中 n 是张量的秩。
形状数组在返回时不复制,因此调用者不应释放返回的指针。
tensor | 指向 OMTensor 的指针 |
OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetStrides | ( | const OMTensor * | tensor | ) |
OMTensor 数据步长 getter。
数据步长作为指向 n 个 64 位整数数组的指针返回,其中 n 是张量的秩。
步长数组在返回时不复制,因此调用者需自行管理步长数组。
tensor | 指向 OMTensor 的指针 |
OM_EXTERNAL_VISIBILITY void omTensorPrint | ( | const char * | msg, |
const OMTensor * | tensor | ||
) |
将 OMTensor 打印到 stdout。
msg,pointer | 指向描述性字符串的指针。它接受以下 3 种格式之一:“t”用于打印张量的类型,“s”用于打印详细的签名输出,“d”用于打印张量的完整数据值。此外,它还识别“e”作为消息字符串的结尾。 |
tensor,pointer | 指向要打印的 OMTensor 的指针 |
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 数据类型。
OM_EXTERNAL_VISIBILITY void omTensorSetOwning | ( | OMTensor * | tensor, |
int64_t | owning | ||
) |
OMTensor 拥有标志 setter。
OM_EXTERNAL_VISIBILITY void omTensorSetShape | ( | OMTensor * | tensor, |
const int64_t * | shape | ||
) |
OMTensor 数据形状 setter。
从形状数组复制 n 个 int64 元素以指示张量的形状,其中 n 是张量的秩。
形状数组被复制,但不释放,因此调用者需自行管理形状数组。
tensor | 指向 OMTensor 的指针 |
shape | 要设置的数据形状数组 |
将 OMTensor 的数据形状数组设置为输入数组中的值。
OM_EXTERNAL_VISIBILITY void omTensorSetStrides | ( | OMTensor * | tensor, |
const int64_t * | stride | ||
) |
OMTensor 数据步长 setter。
从步长数组复制 n 个 int64 元素以指示张量的每维度步长,其中 n 是张量的秩。
步长数组被复制,但不释放,因此调用者需自行管理步长数组。
tensor | 指向 OMTensor 的指针 |
strides | 要设置的张量步长数组。 |
将 OMTensor 的数据步长数组设置为输入数组中的值。
OM_EXTERNAL_VISIBILITY void omTensorSetStridesWithPyArrayStrides | ( | OMTensor * | tensor, |
const int64_t * | stridesInBytes | ||
) |
使用 PyArray 步长值设置 OMTensor 数据步长。
请注意,PyArray 步长值以字节为单位,而 OMTensor 步长值以元素为单位。因此,PyArray 步长值在传递给 OMTensor 步长值之前将被数据类型大小除以。
从步长数组复制 n 个 int64 元素以指示张量的每维度步长,其中 n 是张量的秩。
步长数组被复制,但不释放,因此调用者需自行管理步长数组。
tensor | 指向 OMTensor 的指针 |
strides | 要设置的张量步长数组。 |
将 OMTensor 的数据步长数组设置为输入数组中的值。