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"类型定义 | |
| typedef struct OMTensor | OMTensor |
函数 | |
| 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 数据指针获取器。 | |
| 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) |
| 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 | 指示张量形状的整数列表。 |
| 秩 | 张量秩。 |
| 数据类型 | 张量元素数据类型。 |
| 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 | 指示张量形状的整数列表。 |
| 秩 | 张量秩。 |
| 数据类型 | 张量元素数据类型。 |
| 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。 |
| OM_EXTERNAL_VISIBILITY void omTensorDestroy | ( | OMTensor * | 张量 | ) |
销毁 OMTensor 结构。
如果 OMTensor 不拥有其数值数据,销毁 omTensor 不会释放张量数值所占用的内存。如果 OMTensor 拥有数值数据,此函数也将释放张量数值数据底层的内存空间。OMTensor 构造函数的文档阐明了所有权语义。
| 张量 | 指向 OMTensor 的指针。当指针为 null 时,函数直接返回。 |
| OM_EXTERNAL_VISIBILITY void * omTensorGetAllocatedPtr | ( | const OMTensor * | 张量 | ) |
OMTensor 已分配数据指针获取器。
| 张量 | 指向 OMTensor 的指针 |
| OM_EXTERNAL_VISIBILITY int64_t omTensorGetBufferSize | ( | const OMTensor * | 张量 | ) |
OMTensor 数值数据缓冲区大小获取器。
| 张量 | 指向 OMTensor 的指针 |
| OM_EXTERNAL_VISIBILITY void * omTensorGetDataPtr | ( | const OMTensor * | 张量 | ) |
OMTensor 数据指针获取器。
| 张量 | 指向 OMTensor 的指针 |
| 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 的指针 |
| OM_EXTERNAL_VISIBILITY int64_t omTensorGetNumElems | ( | const OMTensor * | 张量 | ) |
OMTensor 元素数量获取器。
| 张量,指针 | 指向 OMTensor |
| OM_EXTERNAL_VISIBILITY int64_t omTensorGetOwning | ( | const OMTensor * | 张量 | ) |
OMTensor 拥有标志获取器。
| OM_EXTERNAL_VISIBILITY int64_t omTensorGetRank | ( | const OMTensor * | 张量 | ) |
OMTensor 秩获取器。
| 张量,指针 | 指向 OMTensor |
| OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetShape | ( | const OMTensor * | 张量 | ) |
OMTensor 数据形状获取器。
数值数据形状作为指向 n 个 64 位整数数组的指针返回,其中 n 是张量的秩。
形状数组在未复制的情况下返回,因此调用者不应释放返回的指针。
| 张量 | 指向 OMTensor 的指针 |
| OM_EXTERNAL_VISIBILITY const int64_t * omTensorGetStrides | ( | const OMTensor * | 张量 | ) |
OMTensor 数据步长获取器。
数据步长作为指向 n 个 64 位整数数组的指针返回,其中 n 是张量的秩。
步长数组在未复制的情况下返回,因此调用者不应释放返回的指针。
| 张量 | 指向 OMTensor 的指针 |
| OM_EXTERNAL_VISIBILITY void omTensorPrint | ( | const char * | 消息, |
| const OMTensor * | 张量 | ||
| ) |
将 OMTensor 打印到标准输出。
| 消息,指针 | 指向描述性字符串。它接受以下三种格式之一:'t' 用于打印张量类型,'s' 用于打印详细签名,'d' 用于打印张量的完整数据值。此外,它还识别 'e' 作为消息字符串的结尾。 |
| 张量,指针 | 要打印的 OMTensor |
| 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 数据类型。
| OM_EXTERNAL_VISIBILITY void omTensorSetOwning | ( | OMTensor * | 张量, |
| int64_t | 拥有 | ||
| ) |
OMTensor 拥有标志设置器。
| OM_EXTERNAL_VISIBILITY void omTensorSetShape | ( | OMTensor * | 张量, |
| const int64_t * | shape | ||
| ) |
OMTensor 数据形状设置器。
n 个 64 位元素从形状数组复制以指示张量的形状,其中 n 是张量的秩。
形状数组在复制后不会被释放,因此调用者需要自行管理形状数组。
| 张量 | 指向 OMTensor 的指针 |
| shape | 要设置的数据形状数组 |
将 OMTensor 的数据形状数组设置为输入数组中的值。
| OM_EXTERNAL_VISIBILITY void omTensorSetStrides | ( | OMTensor * | 张量, |
| const int64_t * | 步长 | ||
| ) |
OMTensor 数据步长设置器。
n 个 64 位元素从步长数组复制以指示张量的每个维度步长,其中 n 是张量的秩。
步长数组在复制后不会被释放,因此调用者需要自行管理步长数组。
| 张量 | 指向 OMTensor 的指针 |
| strides | 要设置的张量步长数组。 |
将 OMTensor 的数据步长数组设置为输入数组中的值。
| OM_EXTERNAL_VISIBILITY void omTensorSetStridesWithPyArrayStrides | ( | OMTensor * | 张量, |
| const int64_t * | 以字节为单位的步长 | ||
| ) |
使用 PyArray 步长值设置 OMTensor 数据步长。
请注意,PyArray 步长值以字节为单位,而 OMTensor 步长值以元素为单位。因此,PyArray 步长值在传递给 OMTensor 步长值之前将除以数据类型大小。
n 个 64 位元素从步长数组复制以指示张量的每个维度步长,其中 n 是张量的秩。
步长数组在复制后不会被释放,因此调用者需要自行管理步长数组。
| 张量 | 指向 OMTensor 的指针 |
| strides | 要设置的张量步长数组。 |
将 OMTensor 的数据步长数组设置为输入数组中的值。