1# MindSpore
2
3
4## 概述
5
6提供MindSpore Lite的模型推理相关接口,该模块下的接口是非线程安全的。
7
8**起始版本:** 9
9
10## 汇总
11
12
13### 文件
14
15| 名称 | 描述 |
16| -------- | -------- |
17| [context.h](context_8h.md) | 提供了Context相关的接口,可以配置运行时信息。<br/>引用文件:&lt;mindspore/context.h&gt;<br/>库:libmindspore_lite_ndk.so |
18| [data_type.h](data__type_8h.md) | 声明了张量的数据的类型。<br/>引用文件:&lt;mindspore/data_type.h&gt;<br/>库:libmindspore_lite_ndk.so |
19| [format.h](format_8h.md) | 提供张量数据的排列格式。<br/>引用文件:&lt;mindspore/format.h&gt;<br/>库:libmindspore_lite_ndk.so |
20| [model.h](model_8h.md) | 提供了模型相关接口,可以用于模型创建、模型推理等。<br/>引用文件:&lt;mindspore/model.h&gt;<br/>库:libmindspore_lite_ndk.so |
21| [status.h](status_8h.md) | 提供了MindSpore Lite运行时的状态码。<br/>引用文件:&lt;mindspore/status.h&gt;<br/>库:libmindspore_lite_ndk.so |
22| [tensor.h](tensor_8h.md) | 提供了张量相关的接口,可用于创建和修改张量信息。<br/>引用文件:&lt;mindspore/tensor.h&gt;<br/>库:libmindspore_lite_ndk.so |
23| [types.h](types_8h.md) | 提供了MindSpore Lite支持的模型文件类型和设备类型。<br/>引用文件:&lt;mindspore/types.h&gt;<br/>库:libmindspore_lite_ndk.so |
24
25
26### 结构体
27
28| 名称 | 描述 |
29| -------- | -------- |
30| [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) | 张量数组结构体,用于存储张量数组指针和张量数组长度 |
31| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) | 维度信息,最大的维度为**OH_AI_MAX_SHAPE_NUM**。 |
32| [OH_AI_CallBackParam](_o_h___a_i___call_back_param.md) | 回调函数中传入的算子信息。 |
33
34
35### 宏定义
36
37| 名称 | 描述 |
38| -------- | -------- |
39| [OH_AI_MAX_SHAPE_NUM](#oh_ai_max_shape_num) 32 | 张量维度的最大值。 |
40
41
42### 类型定义
43
44| 名称 | 描述 |
45| -------- | -------- |
46| [OH_AI_ContextHandle](#oh_ai_contexthandle) | MindSpore的上下文信息的指针,该指针会指向Context。 |
47| [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) | MindSpore的运行设备信息的指针。 |
48| [OH_AI_DataType](#oh_ai_datatype) | MSTensor保存的数据支持的类型。 |
49| [OH_AI_Format](#oh_ai_format) | MSTensor保存的数据支持的排列格式。 |
50| [OH_AI_ModelHandle](#oh_ai_modelhandle) | 指向模型对象的指针。 |
51| [OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) | 指向训练配置对象的指针。 |
52| [OH_AI_TensorHandleArray](#oh_ai_tensorhandlearray) | 张量数组结构体,用于存储张量数组指针和张量数组长度 |
53| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) | 维度信息,最大的维度为**OH_AI_MAX_SHAPE_NUM**。 |
54| [OH_AI_CallBackParam](#oh_ai_callbackparam) | 回调函数中传入的算子信息。 |
55| [OH_AI_KernelCallBack](#oh_ai_kernelcallback)) (const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) inputs, const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) outputs, const [OH_AI_CallBackParam](_o_h___a_i___call_back_param.md) kernel_Info) | 回调函数指针。 |
56| [OH_AI_Status](#oh_ai_status) | MindSpore的状态码 |
57| [OH_AI_TensorHandle](#oh_ai_tensorhandle) | 指向张量对象句柄 |
58| [OH_AI_ModelType](#oh_ai_modeltype) | 模型文件的类型 |
59| [OH_AI_DeviceType](#oh_ai_devicetype) | 设备类型信息,包含了目前支持的设备类型。 |
60| [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) | NNRt管理的硬件设备类型 |
61| [OH_AI_PerformanceMode](#oh_ai_performancemode) | NNRt硬件的工作性能模式 |
62| [OH_AI_Priority](#oh_ai_priority) | NNRt推理任务优先级 |
63| [OH_AI_OptimizationLevel](#oh_ai_optimizationlevel) | 训练优化等级。 |
64| [OH_AI_QuantizationType](#oh_ai_quantizationtype) | 量化类型信息。 |
65| [NNRTDeviceDesc](#nnrtdevicedesc) | NNRt设备信息描述,包含设备ID,设备名称等信息。 |
66| [OH_AI_AllocatorHandle](#oh_ai_allocatorhandle) | 指向内存分配器对象句柄。 |
67
68
69### 枚举
70
71| 名称 | 描述 |
72| -------- | -------- |
73| [OH_AI_DataType](#oh_ai_datatype) {<br/>OH_AI_DATATYPE_UNKNOWN = 0, OH_AI_DATATYPE_OBJECTTYPE_STRING = 12, OH_AI_DATATYPE_OBJECTTYPE_LIST = 13, OH_AI_DATATYPE_OBJECTTYPE_TUPLE = 14,<br/>OH_AI_DATATYPE_OBJECTTYPE_TENSOR = 17, OH_AI_DATATYPE_NUMBERTYPE_BEGIN = 29, OH_AI_DATATYPE_NUMBERTYPE_BOOL = 30, OH_AI_DATATYPE_NUMBERTYPE_INT8 = 32,<br/>OH_AI_DATATYPE_NUMBERTYPE_INT16 = 33, OH_AI_DATATYPE_NUMBERTYPE_INT32 = 34, OH_AI_DATATYPE_NUMBERTYPE_INT64 = 35, OH_AI_DATATYPE_NUMBERTYPE_UINT8 = 37,<br/>OH_AI_DATATYPE_NUMBERTYPE_UINT16 = 38, OH_AI_DATATYPE_NUMBERTYPE_UINT32 = 39, OH_AI_DATATYPE_NUMBERTYPE_UINT64 = 40, OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 = 42,<br/>OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 = 43, OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 = 44, OH_AI_DATATYPE_NUMBERTYPE_END = 46, OH_AI_DataTypeInvalid = INT32_MAX<br/>} | MSTensor保存的数据支持的类型。 |
74| [OH_AI_Format](#oh_ai_format) {<br/>OH_AI_FORMAT_NCHW = 0, OH_AI_FORMAT_NHWC = 1, OH_AI_FORMAT_NHWC4 = 2, OH_AI_FORMAT_HWKC = 3,<br/>OH_AI_FORMAT_HWCK = 4, OH_AI_FORMAT_KCHW = 5, OH_AI_FORMAT_CKHW = 6, OH_AI_FORMAT_KHWC = 7,<br/>OH_AI_FORMAT_CHWK = 8, OH_AI_FORMAT_HW = 9, OH_AI_FORMAT_HW4 = 10, OH_AI_FORMAT_NC = 11,<br/>OH_AI_FORMAT_NC4 = 12, OH_AI_FORMAT_NC4HW4 = 13, OH_AI_FORMAT_NCDHW = 15, OH_AI_FORMAT_NWC = 16,<br/>OH_AI_FORMAT_NCW = 17<br/>} | MSTensor保存的数据支持的排列格式。 |
75| [OH_AI_CompCode](#oh_ai_compcode) { <br/>OH_AI_COMPCODE_CORE = 0x00000000u, <br/>OH_AI_COMPCODE_MD = 0x10000000u, <br/>OH_AI_COMPCODE_ME = 0x20000000u, <br/>OH_AI_COMPCODE_MC = 0x30000000u, <br/>OH_AI_COMPCODE_LITE = 0xF0000000u<br/> } | MindSpore不同组件的代码。
76| [OH_AI_Status](#oh_ai_status) {<br/>OH_AI_STATUS_SUCCESS = 0, OH_AI_STATUS_CORE_FAILED = OH_AI_COMPCODE_CORE \| 0x1, OH_AI_STATUS_LITE_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -1), OH_AI_STATUS_LITE_NULLPTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -2),<br/>OH_AI_STATUS_LITE_PARAM_INVALID = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -3), OH_AI_STATUS_LITE_NO_CHANGE = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -4), OH_AI_STATUS_LITE_SUCCESS_EXIT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -5), OH_AI_STATUS_LITE_MEMORY_FAILED = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -6),<br/>OH_AI_STATUS_LITE_NOT_SUPPORT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -7), OH_AI_STATUS_LITE_THREADPOOL_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -8), OH_AI_STATUS_LITE_UNINITIALIZED_OBJ = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -9), OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -100),<br/>OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR, OH_AI_STATUS_LITE_REENTRANT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -102), OH_AI_STATUS_LITE_GRAPH_FILE_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -200), OH_AI_STATUS_LITE_NOT_FIND_OP = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -300),<br/>OH_AI_STATUS_LITE_INVALID_OP_NAME = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -301), OH_AI_STATUS_LITE_INVALID_OP_ATTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -302), OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE, OH_AI_STATUS_LITE_FORMAT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -400),<br/>OH_AI_STATUS_LITE_INFER_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF &amp; -500), OH_AI_STATUS_LITE_INFER_INVALID, OH_AI_STATUS_LITE_INPUT_PARAM_INVALID<br/>} | MindSpore的状态码 |
77| [OH_AI_ModelType](#oh_ai_modeltype) { OH_AI_MODELTYPE_MINDIR = 0, OH_AI_MODELTYPE_INVALID = 0xFFFFFFFF } | 模型文件的类型 |
78| [OH_AI_DeviceType](#oh_ai_devicetype) {<br/>OH_AI_DEVICETYPE_CPU = 0, OH_AI_DEVICETYPE_GPU, OH_AI_DEVICETYPE_KIRIN_NPU, OH_AI_DEVICETYPE_NNRT = 60,<br/>OH_AI_DEVICETYPE_INVALID = 100<br/>} | 设备类型信息,包含了目前支持的设备类型。 |
79| [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) { OH_AI_NNRTDEVICE_OTHERS = 0, OH_AI_NNRTDEVICE_CPU = 1, OH_AI_NNRTDEVICE_GPU = 2, OH_AI_NNRTDEVICE_ACCELERATOR = 3 } | NNRt管理的硬件设备类型 |
80| [OH_AI_PerformanceMode](#oh_ai_performancemode) {<br/>OH_AI_PERFORMANCE_NONE = 0, OH_AI_PERFORMANCE_LOW = 1, OH_AI_PERFORMANCE_MEDIUM = 2, OH_AI_PERFORMANCE_HIGH = 3,<br/>OH_AI_PERFORMANCE_EXTREME = 4<br/>} | NNRt硬件的工作性能模式 |
81| [OH_AI_Priority](#oh_ai_priority) { OH_AI_PRIORITY_NONE = 0, OH_AI_PRIORITY_LOW = 1, OH_AI_PRIORITY_MEDIUM = 2, OH_AI_PRIORITY_HIGH = 3 } | NNRt推理任务优先级 |
82| [OH_AI_OptimizationLevel](#oh_ai_optimizationlevel) {<br/>OH_AI_KO0 = 0, OH_AI_KO2 = 2, OH_AI_KO3 = 3, OH_AI_KAUTO = 4,<br/>OH_AI_KOPTIMIZATIONTYPE = 0xFFFFFFFF<br/>} | 训练优化等级。 |
83| [OH_AI_QuantizationType](#oh_ai_quantizationtype) { OH_AI_NO_QUANT = 0, OH_AI_WEIGHT_QUANT = 1, OH_AI_FULL_QUANT = 2, OH_AI_UNKNOWN_QUANT_TYPE = 0xFFFFFFFF } | 量化类型信息。 |
84
85
86### 函数
87
88| 名称 | 描述 |
89| -------- | -------- |
90| [OH_AI_ContextCreate](#oh_ai_contextcreate) () | 创建一个上下文的对象。注意:此接口需跟[OH_AI_ContextDestroy](#oh_ai_contextdestroy)配套使用。 |
91| [OH_AI_ContextDestroy](#oh_ai_contextdestroy) ([OH_AI_ContextHandle](#oh_ai_contexthandle) \*context) | 释放上下文对象。 |
92| [OH_AI_ContextSetThreadNum](#oh_ai_contextsetthreadnum) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, int32_t thread_num) | 设置运行时的线程数量。 |
93| [OH_AI_ContextGetThreadNum](#oh_ai_contextgetthreadnum) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取线程数量。 |
94| [OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, int mode) | 设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。 |
95| [OH_AI_ContextGetThreadAffinityMode](#oh_ai_contextgetthreadaffinitymode) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取运行时线程绑定CPU核心的策略。 |
96| [OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, const int32_t \*core_list, size_t core_num) | 设置运行时线程绑定CPU核心的列表。 |
97| [OH_AI_ContextGetThreadAffinityCoreList](#oh_ai_contextgetthreadaffinitycorelist) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context, size_t \*core_num) | 获取CPU绑核列表。 |
98| [OH_AI_ContextSetEnableParallel](#oh_ai_contextsetenableparallel) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, bool is_parallel) | 设置运行时是否支持并行。此接口特性当前未开启,设置无效。 |
99| [OH_AI_ContextGetEnableParallel](#oh_ai_contextgetenableparallel) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取是否支持算子间并行。 |
100| [OH_AI_ContextAddDeviceInfo](#oh_ai_contextadddeviceinfo) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 将一个用户定义的运行设备信息附加到推理上下文中。 |
101| [OH_AI_DeviceInfoCreate](#oh_ai_deviceinfocreate) ([OH_AI_DeviceType](#oh_ai_devicetype) device_type) | 创建一个设备信息对象。 |
102| [OH_AI_DeviceInfoDestroy](#oh_ai_deviceinfodestroy) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) \*device_info) | 释放设备信息实例。注意:设备信息实例被添加到context后,无须调用者手动释放。 |
103| [OH_AI_DeviceInfoSetProvider](#oh_ai_deviceinfosetprovider) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*provider) | 设置生产商的名称。 |
104| [OH_AI_DeviceInfoGetProvider](#oh_ai_deviceinfogetprovider) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取生产商的名称。 |
105| [OH_AI_DeviceInfoSetProviderDevice](#oh_ai_deviceinfosetproviderdevice) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*device) | 设置生产商设备的名称。 |
106| [OH_AI_DeviceInfoGetProviderDevice](#oh_ai_deviceinfogetproviderdevice) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取生产商设备的名称。 |
107| [OH_AI_DeviceInfoGetDeviceType](#oh_ai_deviceinfogetdevicetype) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取设备的类型。 |
108| [OH_AI_DeviceInfoSetEnableFP16](#oh_ai_deviceinfosetenablefp16) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, bool is_fp16) | 设置是否开启float16推理模式,仅CPU/GPU设备可用。 |
109| [OH_AI_DeviceInfoGetEnableFP16](#oh_ai_deviceinfogetenablefp16) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取是否开启float16推理模式, 仅CPU/GPU设备可用。 |
110| [OH_AI_DeviceInfoSetFrequency](#oh_ai_deviceinfosetfrequency) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, int frequency) | 设置NPU的频率,仅NPU设备可用。 |
111| [OH_AI_DeviceInfoGetFrequency](#oh_ai_deviceinfogetfrequency) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NPU的频率类型,仅NPU设备可用。 |
112| [OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs) (size_t \*num) | 获取系统中所有NNRt硬件设备的描述信息。 |
113| [OH_AI_GetElementOfNNRTDeviceDescs](#oh_ai_getelementofnnrtdevicedescs) ([NNRTDeviceDesc](#nnrtdevicedesc) \*descs, size_t index) | 获取NNRt设备描述信息数组中的元素指针。 |
114| [OH_AI_DestroyAllNNRTDeviceDescs](#oh_ai_destroyallnnrtdevicedescs) ([NNRTDeviceDesc](#nnrtdevicedesc) \*\*desc) | 销毁从[OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs)获取的NNRt描写信息实例数组。 |
115| [OH_AI_GetDeviceIdFromNNRTDeviceDesc](#oh_ai_getdeviceidfromnnrtdevicedesc) (const [NNRtDeviceDesc](#nnrtdevicedesc) \*desc) | 从特定的NNRt设备描述信息实例获取NNRt设备ID。注意,此ID只对NNRt有效。 |
116| [OH_AI_GetNameFromNNRTDeviceDesc](#oh_ai_getnamefromnnrtdevicedesc) (const [NNRTDeviceDesc](#nnrtdevicedesc) \*desc) | 从特定的NNRt设备描述信息实例获取NNRt设备名称。 |
117| [OH_AI_GetTypeFromNNRtDeviceDesc](#oh_ai_gettypefromnnrtdevicedesc) (const [NNRTDeviceDesc](#nnrtdevicedesc) \*desc) | 从特定的NNRt设备描述信息实例获取NNRt设备类型。 |
118| [OH_AI_CreateNNRTDeviceInfoByName](#oh_ai_creatennrtdeviceinfobyname) (const char \*name) | 查找指定名称的NNRt设备,根据找到的第一个设备信息,创建NNRt设备信息。 |
119| [OH_AI_CreateNNRTDeviceInfoByType](#oh_ai_creatennrtdeviceinfobytype) ([OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) type) | 查找指定类型的NNRt设备,根据找到的第一个设备信息,创建NNRt设备信息。 |
120| [OH_AI_DeviceInfoSetDeviceId](#oh_ai_deviceinfosetdeviceid) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, size_t device_id) | 设置NNRt设备ID,仅NNRt设备可用。 |
121| [OH_AI_DeviceInfoGetDeviceId](#oh_ai_deviceinfogetdeviceid) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NNRt设备ID,仅NNRt设备可用。 |
122| [OH_AI_DeviceInfoSetPerformanceMode](#oh_ai_deviceinfosetperformancemode) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, [OH_AI_PerformanceMode](#oh_ai_performancemode) mode) | 设置NNRt性能模式,仅NNRt设备可用。 |
123| [OH_AI_DeviceInfoGetPerformanceMode](#oh_ai_deviceinfogetperformancemode) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NNRt性能模式,仅NNRt设备可用。 |
124| [OH_AI_DeviceInfoSetPriority](#oh_ai_deviceinfosetpriority) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, [OH_AI_Priority](#oh_ai_priority) priority) | 设置NNRt任务优先级,仅NNRt设备可用。 |
125| [OH_AI_DeviceInfoGetPriority](#oh_ai_deviceinfogetpriority) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NNRt任务优先级,仅NNRt设备可用。 |
126| [OH_AI_DeviceInfoAddExtension](#oh_ai_deviceinfoaddextension) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*name, const char \*value, size_t value_size) | 向设备信息中添加键/值对形式的扩展配置。只对NNRt设备信息有效。 |
127| [OH_AI_ModelCreate](#oh_ai_modelcreate) () | 创建一个模型对象。 |
128| [OH_AI_ModelDestroy](#oh_ai_modeldestroy) ([OH_AI_ModelHandle](#oh_ai_modelhandle) \*model) | 释放一个模型对象。 |
129| [OH_AI_ModelBuild](#oh_ai_modelbuild) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const void \*model_data, size_t data_size, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const [OH_AI_ContextHandle](#oh_ai_contexthandle) model_context) | 从内存缓冲区加载并编译MindSpore模型。 |
130| [OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*model_path, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const [OH_AI_ContextHandle](#oh_ai_contexthandle) model_context) | 通过模型文件加载并编译MindSpore模型。 |
131| [OH_AI_ModelResize](#oh_ai_modelresize) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) inputs, [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) \*shape_infos, size_t shape_info_num) | 调整已编译模型的输入形状。 |
132| [OH_AI_ModelPredict](#oh_ai_modelpredict) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) inputs, [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) \*outputs, const [OH_AI_KernelCallBack](#oh_ai_kernelcallback) before, const [OH_AI_KernelCallBack](#oh_ai_kernelcallback) after) | 执行模型推理。 |
133| [OH_AI_ModelGetInputs](#oh_ai_modelgetinputs) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取模型的输入张量数组结构体。 |
134| [OH_AI_ModelGetOutputs](#oh_ai_modelgetoutputs) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取模型的输出张量数组结构体。 |
135| [OH_AI_ModelGetInputByTensorName](#oh_ai_modelgetinputbytensorname) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*tensor_name) | 通过张量名获取模型的输入张量。 |
136| [OH_AI_ModelGetOutputByTensorName](#oh_ai_modelgetoutputbytensorname) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*tensor_name) | 通过张量名获取模型的输出张量。 |
137| [OH_AI_TrainCfgCreate](#oh_ai_traincfgcreate) () | 创建训练配置对象指针,仅用于端侧训练。 |
138| [OH_AI_TrainCfgDestroy](#oh_ai_traincfgdestroy) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) \*train_cfg) | 销毁训练配置对象指针,仅用于端侧训练。 |
139| [OH_AI_TrainCfgGetLossName](#oh_ai_traincfggetlossname) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg, size_t \*num) | 获取损失函数的名称列表,仅用于端侧训练。 |
140| [OH_AI_TrainCfgSetLossName](#oh_ai_traincfgsetlossname) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg, const char \*\*loss_name, size_t num) | 设置损失函数的名称列表,仅用于端侧训练。 |
141| [OH_AI_TrainCfgGetOptimizationLevel](#oh_ai_traincfggetoptimizationlevel) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg) | 获取训练配置的优化等级,仅用于端侧训练。 |
142| [OH_AI_TrainCfgSetOptimizationLevel](#oh_ai_traincfgsetoptimizationlevel) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg, [OH_AI_OptimizationLevel](#oh_ai_optimizationlevel) level) | 设置训练配置的优化等级,仅用于端侧训练。 |
143| [OH_AI_TrainModelBuild](#oh_ai_trainmodelbuild) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const void \*model_data, size_t data_size, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const [OH_AI_ContextHandle](#oh_ai_contexthandle) model_context, const [OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg) | 从内存缓冲区加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。 |
144| [OH_AI_TrainModelBuildFromFile](#oh_ai_trainmodelbuildfromfile) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*model_path, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const [OH_AI_ContextHandle](#oh_ai_contexthandle) model_context, const [OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg) | 根据路径读取加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。 |
145| [OH_AI_RunStep](#oh_ai_runstep) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const [OH_AI_KernelCallBack](#oh_ai_kernelcallback) before, const [OH_AI_KernelCallBack](#oh_ai_kernelcallback) after) | 单步训练模型,仅用于端侧训练。 |
146| [OH_AI_ModelSetLearningRate](#oh_ai_modelsetlearningrate) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, float learning_rate) | 设置训练的学习率,仅用于端侧训练。 |
147| [OH_AI_ModelGetLearningRate](#oh_ai_modelgetlearningrate) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取训练的学习率,仅用于端侧训练。 |
148| [OH_AI_ModelGetWeights](#oh_ai_modelgetweights) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取模型的所有权重Tensors,仅用于端侧训练。 |
149| [OH_AI_ModelUpdateWeights](#oh_ai_modelupdateweights) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) new_weights) | 更新模型的权重Tensor内容,仅用于端侧训练。 |
150| [OH_AI_ModelGetTrainMode](#oh_ai_modelgettrainmode) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取训练模式。 |
151| [OH_AI_ModelSetTrainMode](#oh_ai_modelsettrainmode) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, bool train) | 设置训练模式,仅用于端侧训练。 |
152| [OH_AI_ModelSetupVirtualBatch](#oh_ai_modelsetupvirtualbatch) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, int virtual_batch_multiplier, float lr, float momentum) | OH_AI_API [OH_AI_Status](#oh_ai_status)<br/>设置虚拟batch用于训练,仅用于端侧训练。 |
153| [OH_AI_ExportModel](#oh_ai_exportmodel) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const char \*model_file, [OH_AI_QuantizationType](#oh_ai_quantizationtype) quantization_type, bool export_inference_only, char \*\*output_tensor_name, size_t num) | 导出训练模型,仅用于端侧训练。 |
154| [OH_AI_ExportModelBuffer](#oh_ai_exportmodelbuffer) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, [OH_AI_ModelType](#oh_ai_modeltype) model_type, char \*\*model_data, size_t \*data_size, [OH_AI_QuantizationType](#oh_ai_quantizationtype) quantization_type, bool export_inference_only, char \*\*output_tensor_name, size_t num) | 导出训练模型内存缓存,仅用于端侧训练。  |
155| [OH_AI_ExportWeightsCollaborateWithMicro](#oh_ai_exportweightscollaboratewithmicro) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const char \*weight_file, bool is_inference, bool enable_fp16, char \*\*changeable_weights_name, size_t num) | 导出模型权重,只能用于micro推理,仅用于端侧训练。 |
156| [OH_AI_TensorCreate](#oh_ai_tensorcreate) (const char \*name, [OH_AI_DataType](#oh_ai_datatype) type, const int64_t \*shape, size_t shape_num, const void \*data, size_t data_len) | 创建一个张量对象。 |
157| [OH_AI_TensorDestroy](#oh_ai_tensordestroy) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) \*tensor) | 释放张量对象。 |
158| [OH_AI_TensorClone](#oh_ai_tensorclone) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 深拷贝一个张量。 |
159| [OH_AI_TensorSetName](#oh_ai_tensorsetname) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, const char \*name) | 设置张量的名称。 |
160| [OH_AI_TensorGetName](#oh_ai_tensorgetname) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量的名称。 |
161| [OH_AI_TensorSetDataType](#oh_ai_tensorsetdatatype) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, [OH_AI_DataType](#oh_ai_datatype) type) | 设置张量的数据类型。 |
162| [OH_AI_TensorGetDataType](#oh_ai_tensorgetdatatype) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量类型。 |
163| [OH_AI_TensorSetShape](#oh_ai_tensorsetshape) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, const int64_t \*shape, size_t shape_num) | 设置张量的形状。 |
164| [OH_AI_TensorGetShape](#oh_ai_tensorgetshape) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, size_t \*shape_num) | 获取张量的形状。 |
165| [OH_AI_TensorSetFormat](#oh_ai_tensorsetformat) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, [OH_AI_Format](#oh_ai_format) format) | 设置张量数据的排列方式。 |
166| [OH_AI_TensorGetFormat](#oh_ai_tensorgetformat) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量数据的排列方式。 |
167| [OH_AI_TensorSetData](#oh_ai_tensorsetdata) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, void \*data) | 设置张量的数据。 |
168| [OH_AI_TensorGetData](#oh_ai_tensorgetdata) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量数据的指针。 |
169| [OH_AI_TensorGetMutableData](#oh_ai_tensorgetmutabledata) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取可变的张量数据指针。如果数据为空则会开辟内存。 |
170| [OH_AI_TensorGetElementNum](#oh_ai_tensorgetelementnum) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量元素数量。 |
171| [OH_AI_TensorGetDataSize](#oh_ai_tensorgetdatasize) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量中的数据的字节数大小。 |
172| [OH_AI_TensorSetUserData](#oh_ai_tensorsetuserdata) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, void \*data, size_t data_size) | 设置张量为用户自行管理的数据。此接口常用于复用用户数据作为模型输入,可减少一次数据拷贝。 注意:此数据对于张量来说是外部数据,张量销毁时不会主动释放,由调用者负责释放。另外,在此张量 使用过程中,调用者须确保此数据有效。 |
173| [OH_AI_TensorGetAllocator](#oh_ai_tensorgetallocator)([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取内存分配器。此接口主要是提供一种获取张量的内存分配器的方法。 |
174| [OH_AI_TensorSetAllocator](#oh_ai_tensorsetallocator)([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, [OH_AI_AllocatorHandle](#oh_ai_allocatorhandle) allocator) | 设置内存分配器。设置内存分配器。此接口主要是提供一种设置内存分配器的方法,tensor的内存将由这个分配器分配。 |
175
176
177## 宏定义说明
178
179
180### OH_AI_MAX_SHAPE_NUM
181
182```
183#define OH_AI_MAX_SHAPE_NUM   32
184```
185
186**描述**
187
188维度信息,最大的维度为**OH_AI_MAX_SHAPE_NUM**。
189
190**起始版本:** 9
191
192
193## 类型定义说明
194
195
196### NNRTDeviceDesc
197
198```
199typedef struct NNRTDeviceDesc NNRTDeviceDesc
200```
201
202**描述**
203
204NNRt设备信息描述,包含设备ID,设备名称等信息。
205
206**起始版本:** 10
207
208### OH_AI_AllocatorHandle
209
210```
211typedef void *OH_AI_AllocatorHandle
212```
213
214**描述**
215
216指向内存分配器对象句柄。
217
218**起始版本:** 12
219
220### OH_AI_CallBackParam
221
222```
223typedef struct OH_AI_CallBackParam OH_AI_CallBackParam
224```
225
226**描述**
227
228回调函数中传入的算子信息。
229
230**起始版本:** 9
231
232
233### OH_AI_ContextHandle
234
235```
236typedef void* OH_AI_ContextHandle
237```
238
239**描述**
240
241MindSpore的上下文信息的指针,该指针会指向Context。
242
243**起始版本:** 9
244
245
246### OH_AI_DataType
247
248```
249typedef enum OH_AI_DataType OH_AI_DataType
250```
251
252**描述**
253
254MSTensor保存的数据支持的类型。
255
256**起始版本:** 9
257
258
259### OH_AI_DeviceInfoHandle
260
261```
262typedef void* OH_AI_DeviceInfoHandle
263```
264
265**描述**
266
267MindSpore的运行设备信息的指针。
268
269**起始版本:** 9
270
271
272### OH_AI_DeviceType
273
274```
275typedef enum OH_AI_DeviceType OH_AI_DeviceType
276```
277
278**描述**
279
280设备类型信息,包含了目前支持的设备类型。
281
282**起始版本:** 9
283
284
285### OH_AI_Format
286
287```
288typedef enum OH_AI_Format OH_AI_Format
289```
290
291**描述**
292
293MSTensor保存的数据支持的排列格式。
294
295**起始版本:** 9
296
297
298### OH_AI_KernelCallBack
299
300```
301typedef bool(* OH_AI_KernelCallBack) (const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs, const OH_AI_CallBackParam kernel_Info)
302```
303
304**描述**
305
306回调函数指针。
307
308该函数指针是用于设置[OH_AI_ModelPredict](#oh_ai_modelpredict)函数参数中的两个回调函数。 该指针指向的函数需要包含三个参数,其中inputs和outputs对应了算子的输入和输出张量,kernel_Info表示当前算子的信息。 可以通过回调函数监控算子执行的情况,例如统计算子的执行时间,校验算子的正确性等等。
309
310**起始版本:** 9
311
312
313### OH_AI_ModelHandle
314
315```
316typedef void* OH_AI_ModelHandle
317```
318
319**描述**
320
321指向模型对象的指针。
322
323**起始版本:** 9
324
325
326### OH_AI_ModelType
327
328```
329typedef enum OH_AI_ModelType OH_AI_ModelType
330```
331
332**描述**
333
334模型文件的类型
335
336**起始版本:** 9
337
338
339### OH_AI_NNRTDeviceType
340
341```
342typedef enum OH_AI_NNRTDeviceType OH_AI_NNRTDeviceType
343```
344
345**描述**
346
347NNRt管理的硬件设备类型
348
349**起始版本:** 10
350
351
352### OH_AI_PerformanceMode
353
354```
355typedef enum OH_AI_PerformanceMode OH_AI_PerformanceMode
356```
357
358**描述**
359
360NNRt硬件的工作性能模式
361
362**起始版本:** 10
363
364
365### OH_AI_Priority
366
367```
368typedef enum OH_AI_Priority OH_AI_Priority
369```
370
371**描述**
372
373NNRt推理任务优先级
374
375**起始版本:** 10
376
377
378### OH_AI_Status
379
380```
381typedef enum OH_AI_Status OH_AI_Status
382```
383
384**描述**
385
386MindSpore的状态码
387
388**起始版本:** 9
389
390
391### OH_AI_TensorHandle
392
393```
394typedef void* OH_AI_TensorHandle
395```
396
397**描述**
398
399指向张量对象句柄
400
401**起始版本:** 9
402
403
404### OH_AI_TensorHandleArray
405
406```
407typedef struct OH_AI_TensorHandleArray OH_AI_TensorHandleArray
408```
409
410**描述**
411
412张量数组结构体,用于存储张量数组指针和张量数组长度
413
414**起始版本:** 9
415
416
417### OH_AI_TrainCfgHandle
418
419```
420typedef void* OH_AI_TrainCfgHandle
421```
422
423**描述**
424
425指向训练配置对象的指针。
426
427**起始版本:** 11
428
429
430## 枚举类型说明
431
432
433### OH_AI_CompCode
434
435```
436enum OH_AI_CompCode
437```
438
439**描述**
440
441MindSpore不同组件的代码
442
443**起始版本:** 9
444
445| 枚举值 | 描述 |
446| -------- | -------- |
447| OH_AI_COMPCODE_CORE | MindSpore Core的代码 |
448| OH_AI_COMPCODE_MD   | MindSpore MindData的代码。 |
449| OH_AI_COMPCODE_ME   | MindSpore MindExpression的代码。 |
450| OH_AI_COMPCODE_MC   | MindSpore的代码。 |
451| OH_AI_COMPCODE_LITE | MindSpore Lite的代码 |
452
453
454### OH_AI_DataType
455
456```
457enum OH_AI_DataType
458```
459
460**描述**
461
462MSTensor保存的数据支持的类型。
463
464**起始版本:** 9
465
466| 枚举值 | 描述 |
467| -------- | -------- |
468| OH_AI_DATATYPE_UNKNOWN | 未知的数据类型 |
469| OH_AI_DATATYPE_OBJECTTYPE_STRING | String数据类型 |
470| OH_AI_DATATYPE_OBJECTTYPE_LIST | List数据类型 |
471| OH_AI_DATATYPE_OBJECTTYPE_TUPLE | Tuple数据类型 |
472| OH_AI_DATATYPE_OBJECTTYPE_TENSOR | TensorList数据类型 |
473| OH_AI_DATATYPE_NUMBERTYPE_BEGIN | Number类型的起始 |
474| OH_AI_DATATYPE_NUMBERTYPE_BOOL | Bool数据类型 |
475| OH_AI_DATATYPE_NUMBERTYPE_INT8 | Int8数据类型 |
476| OH_AI_DATATYPE_NUMBERTYPE_INT16 | 表示Int16数据类型 |
477| OH_AI_DATATYPE_NUMBERTYPE_INT32 | 表示Int32数据类型 |
478| OH_AI_DATATYPE_NUMBERTYPE_INT64 | 表示Int64数据类型 |
479| OH_AI_DATATYPE_NUMBERTYPE_UINT8 | 表示UInt8数据类型 |
480| OH_AI_DATATYPE_NUMBERTYPE_UINT16 | 表示UInt16数据类型 |
481| OH_AI_DATATYPE_NUMBERTYPE_UINT32 | 表示UInt32数据类型 |
482| OH_AI_DATATYPE_NUMBERTYPE_UINT64 | 表示UInt64数据类型 |
483| OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 | 表示Float16数据类型 |
484| OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 | 表示Float32数据类型 |
485| OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 | 表示Float64数据类型 |
486| OH_AI_DATATYPE_NUMBERTYPE_END | 表示Number类型的结尾 |
487| OH_AI_DataTypeInvalid | 表示无效的数据类型 |
488
489
490### OH_AI_DeviceType
491
492```
493enum OH_AI_DeviceType
494```
495
496**描述**
497
498设备类型信息,包含了目前支持的设备类型。
499
500**起始版本:** 9
501
502| 枚举值 | 描述 |
503| -------- | -------- |
504| OH_AI_DEVICETYPE_CPU | 设备类型是CPU |
505| OH_AI_DEVICETYPE_GPU | 设备类型是GPU<br/>该配置为上游开源社区选项,在OpenHarmony上不支持 |
506| OH_AI_DEVICETYPE_KIRIN_NPU | 设备类型是麒麟NPU<br/>该配置为上游开源社区选项,在OpenHarmony上不支持<br/>如需使用KIRIN_NPU请通过OH_AI_DEVICETYPE_NNRT配置 |
507| OH_AI_DEVICETYPE_NNRT | 设备类型是NNRt(Neural Network Runtime, 神经网络运行时是面向AI领域的跨芯片推理计算运行时)<br/>OHOS设备范围是[60,80)。 |
508| OH_AI_DEVICETYPE_INVALID | 设备类型无效 |
509
510
511### OH_AI_Format
512
513```
514enum OH_AI_Format
515```
516
517**描述**
518
519MSTensor保存的数据支持的排列格式。
520
521**起始版本:** 9
522
523| 枚举值 | 描述 |
524| -------- | -------- |
525| OH_AI_FORMAT_NCHW | 按批次N、通道C、高度H和宽度W的顺序存储张量数据。 |
526| OH_AI_FORMAT_NHWC | 按批次N、高度H、宽度W和通道C的顺序存储张量数据。 |
527| OH_AI_FORMAT_NHWC4 | 按批次N、高度H、宽度W和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。 |
528| OH_AI_FORMAT_HWKC | 按高度H、宽度W、核数K和通道C的顺序存储张量数据。 |
529| OH_AI_FORMAT_HWCK | 按高度H、宽度W、通道C和核数K的顺序存储张量数据。 |
530| OH_AI_FORMAT_KCHW | 按核数K、通道C、高度H和宽度W的顺序存储张量数据。 |
531| OH_AI_FORMAT_CKHW | 按通道C、核数K、高度H和宽度W的顺序存储张量数据。 |
532| OH_AI_FORMAT_KHWC | 按核数K、高度H、宽度W和通道C的顺序存储张量数据。 |
533| OH_AI_FORMAT_CHWK | 按通道C、高度H、宽度W和核数K的顺序存储张量数据。 |
534| OH_AI_FORMAT_HW | 按高度H和宽度W的顺序存储张量数据。 |
535| OH_AI_FORMAT_HW4 | 按高度H和宽度W的顺序存储张量数据,其中W轴是4字节对齐格式。 |
536| OH_AI_FORMAT_NC | 按批次N和通道C的顺序存储张量数据。 |
537| OH_AI_FORMAT_NC4 | 按批次N和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。 |
538| OH_AI_FORMAT_NC4HW4 | 按批次N、通道C、高度H和宽度W的顺序存储张量数据,其中C轴和W轴是4字节对齐格式。 |
539| OH_AI_FORMAT_NCDHW | 按批次N、通道C、深度D、高度H和宽度W的顺序存储张量数据。 |
540| OH_AI_FORMAT_NWC | 按批次N、宽度W和通道C的顺序存储张量数据。 |
541| OH_AI_FORMAT_NCW | 按批次N、通道C和宽度W的顺序存储张量数据。 |
542
543
544### OH_AI_ModelType
545
546```
547enum OH_AI_ModelType
548```
549
550**描述**
551
552模型文件的类型
553
554**起始版本:** 9
555
556| 枚举值 | 描述 |
557| -------- | -------- |
558| OH_AI_MODELTYPE_MINDIR | 模型类型是MindIR,对应的模型文件后缀为.ms。 |
559| OH_AI_MODELTYPE_INVALID | 模型类型无效 |
560
561
562### OH_AI_NNRTDeviceType
563
564```
565enum OH_AI_NNRTDeviceType
566```
567
568**描述**
569
570NNRt管理的硬件设备类型
571
572**起始版本:** 10
573
574| 枚举值 | 描述 |
575| -------- | -------- |
576| OH_AI_NNRTDEVICE_OTHERS | 设备类型不属于以下3种,则属于其它 |
577| OH_AI_NNRTDEVICE_CPU | CPU设备 |
578| OH_AI_NNRTDEVICE_GPU | GPU设备 |
579| OH_AI_NNRTDEVICE_ACCELERATOR | 特定的加速设备 |
580
581
582### OH_AI_OptimizationLevel
583
584```
585enum OH_AI_OptimizationLevel
586```
587
588**描述:**
589
590训练优化等级。
591
592**起始版本:**
593
594**11**
595
596| 枚举值 | 描述 |
597| -------- | -------- |
598| OH_AI_KO0 | 无优化等级。 |
599| OH_AI_KO2 | 将网络转换为float16, 保持批量归一化层和损失函数为float32。 |
600| OH_AI_KO3 | 将网络转换为float16, 包括批量归一化层 |
601| OH_AI_KAUTO | 根据设备选择优化等级。 |
602| OH_AI_KOPTIMIZATIONTYPE | 无效优化等级。 |
603
604
605### OH_AI_PerformanceMode
606
607```
608enum OH_AI_PerformanceMode
609```
610
611**描述**
612
613NNRt硬件的工作性能模式
614
615**起始版本:** 10
616
617| 枚举值 | 描述 |
618| -------- | -------- |
619| OH_AI_PERFORMANCE_NONE | 无特殊设置 |
620| OH_AI_PERFORMANCE_LOW | 低功耗模式 |
621| OH_AI_PERFORMANCE_MEDIUM | 功耗-性能均衡模式 |
622| OH_AI_PERFORMANCE_HIGH | 高性能模式 |
623| OH_AI_PERFORMANCE_EXTREME | 极致性能模式 |
624
625
626### OH_AI_Priority
627
628```
629enum OH_AI_Priority
630```
631
632**描述**
633
634NNRt推理任务优先级
635
636**起始版本:** 10
637
638| 枚举值 | 描述 |
639| -------- | -------- |
640| OH_AI_PRIORITY_NONE | 无优先级偏好 |
641| OH_AI_PRIORITY_LOW | 低优先级任务 |
642| OH_AI_PRIORITY_MEDIUM | 中优先级任务 |
643| OH_AI_PRIORITY_HIGH | 高优先级 |
644
645
646### OH_AI_QuantizationType
647
648```
649enum OH_AI_QuantizationType
650```
651
652**描述:**
653
654量化类型信息。
655
656**起始版本:**
657
658**11**
659
660| 枚举值 | 描述 |
661| -------- | -------- |
662| OH_AI_NO_QUANT | 不做量化 |
663| OH_AI_WEIGHT_QUANT | 权重量化 |
664| OH_AI_FULL_QUANT | 全量化 |
665| OH_AI_UNKNOWN_QUANT_TYPE | 无效量化类型 |
666
667
668### OH_AI_Status
669
670```
671enum OH_AI_Status
672```
673
674**描述**
675
676MindSpore的状态码
677
678**起始版本:** 9
679
680| 枚举值 | 描述 |
681| -------- | -------- |
682| OH_AI_STATUS_SUCCESS | 通用的成功状态码 |
683| OH_AI_STATUS_CORE_FAILED | MindSpore Core 失败状态码 |
684| OH_AI_STATUS_LITE_ERROR | MindSpore Lite 异常状态码 |
685| OH_AI_STATUS_LITE_NULLPTR | MindSpore Lite 空指针状态码 |
686| OH_AI_STATUS_LITE_PARAM_INVALID | MindSpore Lite 参数异常状态码 |
687| OH_AI_STATUS_LITE_NO_CHANGE | MindSpore Lite 未改变状态码 |
688| OH_AI_STATUS_LITE_SUCCESS_EXIT | MindSpore Lite 没有错误但是退出的状态码 |
689| OH_AI_STATUS_LITE_MEMORY_FAILED | MindSpore Lite 内存分配失败的状态码 |
690| OH_AI_STATUS_LITE_NOT_SUPPORT | MindSpore Lite 功能未支持的状态码 |
691| OH_AI_STATUS_LITE_THREADPOOL_ERROR | MindSpore Lite 线程池异常状态码 |
692| OH_AI_STATUS_LITE_UNINITIALIZED_OBJ | MindSpore Lite 未初始化状态码 |
693| OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE | MindSpore Lite 张量溢出错误的状态码 |
694| OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR | MindSpore Lite 输入张量异常的状态码 |
695| OH_AI_STATUS_LITE_REENTRANT_ERROR | MindSpore Lite 重入异常的状态码 |
696| OH_AI_STATUS_LITE_GRAPH_FILE_ERROR | MindSpore Lite 文件异常状态码 |
697| OH_AI_STATUS_LITE_NOT_FIND_OP | MindSpore Lite 未找到算子的状态码 |
698| OH_AI_STATUS_LITE_INVALID_OP_NAME | MindSpore Lite 无效算子状态码 |
699| OH_AI_STATUS_LITE_INVALID_OP_ATTR | MindSpore Lite 无效算子超参数状态码 |
700| OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE | MindSpore Lite 算子执行失败的状态码 |
701| OH_AI_STATUS_LITE_FORMAT_ERROR | MindSpore Lite 张量格式异常状态码 |
702| OH_AI_STATUS_LITE_INFER_ERROR | MindSpore Lite 形状推理异常状态码 |
703| OH_AI_STATUS_LITE_INFER_INVALID | MindSpore Lite 无效的形状推理的状态码 |
704| OH_AI_STATUS_LITE_INPUT_PARAM_INVALID | MindSpore Lite 用户输入的参数无效状态码 |
705
706
707## 函数说明
708
709
710### OH_AI_ContextAddDeviceInfo()
711
712```
713OH_AI_API void OH_AI_ContextAddDeviceInfo (OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info )
714```
715
716**描述**
717
718将一个用户定义的运行设备信息附加到推理上下文中。
719
720**起始版本:** 9
721
722**参数:**
723
724| 名称 | 描述 |
725| -------- | -------- |
726| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
727| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
728
729
730### OH_AI_ContextCreate()
731
732```
733OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate ()
734```
735
736**描述**
737
738创建一个上下文的对象。注意:此接口需跟[OH_AI_ContextDestroy](#oh_ai_contextdestroy)配套使用。
739
740**起始版本:** 9
741
742**返回:**
743
744指向上下文信息的[OH_AI_ContextHandle](#oh_ai_contexthandle)。
745
746
747### OH_AI_ContextDestroy()
748
749```
750OH_AI_API void OH_AI_ContextDestroy (OH_AI_ContextHandle * context)
751```
752
753**描述**
754
755释放上下文对象。
756
757**起始版本:** 9
758
759**参数:**
760
761| 名称 | 描述 |
762| -------- | -------- |
763| context | 指向[OH_AI_ContextHandle](#oh_ai_contexthandle)的二级指针,上下文销毁后会对context置为空指针。 |
764
765
766### OH_AI_ContextGetEnableParallel()
767
768```
769OH_AI_API bool OH_AI_ContextGetEnableParallel (const OH_AI_ContextHandle context)
770```
771
772**描述**
773
774获取是否支持算子间并行。
775
776**起始版本:** 9
777
778**参数:**
779
780| 名称 | 描述 |
781| -------- | -------- |
782| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
783
784**返回:**
785
786是否支持并行。true 为支持并行, false 为不支持并行。
787
788
789### OH_AI_ContextGetThreadAffinityCoreList()
790
791```
792OH_AI_API const int32_t* OH_AI_ContextGetThreadAffinityCoreList (const OH_AI_ContextHandle context, size_t * core_num )
793```
794
795**描述**
796
797获取CPU绑核列表。
798
799**起始版本:** 9
800
801**参数:**
802
803| 名称 | 描述 |
804| -------- | -------- |
805| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
806| core_num | 该参数是输出参数,表示核的数量。 |
807
808**返回:**
809
810CPU绑核列表。此列表对象由[OH_AI_ContextHandle](#oh_ai_contexthandle)管理,调用者无须手动释放。
811
812
813### OH_AI_ContextGetThreadAffinityMode()
814
815```
816OH_AI_API int OH_AI_ContextGetThreadAffinityMode (const OH_AI_ContextHandle context)
817```
818
819**描述**
820
821获取运行时线程绑定CPU核心的策略。
822
823**起始版本:** 9
824
825**参数:**
826
827| 名称 | 描述 |
828| -------- | -------- |
829| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
830
831**返回:**
832
833绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为中核优先。
834
835
836### OH_AI_ContextGetThreadNum()
837
838```
839OH_AI_API int32_t OH_AI_ContextGetThreadNum (const OH_AI_ContextHandle context)
840```
841
842**描述**
843
844获取线程数量。
845
846**起始版本:** 9
847
848**参数:**
849
850| 名称 | 描述 |
851| -------- | -------- |
852| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
853
854**返回:**
855
856当前的线程数量。
857
858
859### OH_AI_ContextSetEnableParallel()
860
861```
862OH_AI_API void OH_AI_ContextSetEnableParallel (OH_AI_ContextHandle context, bool is_parallel )
863```
864
865**描述**
866
867设置运行时是否支持并行。此接口特性当前未开启,设置无效。
868
869**起始版本:** 9
870
871**参数:**
872
873| 名称 | 描述 |
874| -------- | -------- |
875| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
876| is_parallel | 是否支持并行。true 为支持并行, false 为不支持并行。 |
877
878
879### OH_AI_ContextSetThreadAffinityCoreList()
880
881```
882OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList (OH_AI_ContextHandle context, const int32_t * core_list, size_t core_num )
883```
884
885**描述**
886
887设置运行时线程绑定CPU核心的列表。
888
889例如:当core_list=[2,6,8]时,则线程会在CPU的第2,6,8个核心上运行。 如果对于同一个上下文对象,调用了[OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode)和[OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist) 这两个函数,则仅[OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist)的core_list参数生效,而[OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode)的 mode参数不生效。
890
891**起始版本:** 9
892
893**参数:**
894
895| 名称 | 描述 |
896| -------- | -------- |
897| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
898| core_list | CPU绑核的列表。 |
899| core_num | 核的数量,它就代表**core_list**的长度。 |
900
901
902### OH_AI_ContextSetThreadAffinityMode()
903
904```
905OH_AI_API void OH_AI_ContextSetThreadAffinityMode (OH_AI_ContextHandle context, int mode )
906```
907
908**描述**
909
910设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。
911
912**起始版本:** 9
913
914**参数:**
915
916| 名称 | 描述 |
917| -------- | -------- |
918| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
919| mode | 绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为中核优先。 |
920
921
922### OH_AI_ContextSetThreadNum()
923
924```
925OH_AI_API void OH_AI_ContextSetThreadNum (OH_AI_ContextHandle context, int32_t thread_num )
926```
927
928**描述**
929
930设置运行时的线程数量。
931
932**起始版本:** 9
933
934**参数:**
935
936| 名称 | 描述 |
937| -------- | -------- |
938| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle) |
939| thread_num | 运行时的线程数量。 |
940
941
942### OH_AI_CreateNNRTDeviceInfoByName()
943
944```
945OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByName (const char * name)
946```
947
948**描述**
949
950查找指定名称的NNRt设备,根据找到的第一个设备信息,创建NNRt设备信息。
951
952**起始版本:** 10
953
954**参数:**
955
956| 名称 | 描述 |
957| -------- | -------- |
958| name | 目标NNRt设备名。 |
959
960**返回:**
961
962指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。
963
964
965### OH_AI_CreateNNRTDeviceInfoByType()
966
967```
968OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByType (OH_AI_NNRTDeviceType type)
969```
970
971**描述**
972
973查找指定类型的NNRt设备,根据找到的第一个设备信息,创建NNRt设备信息。
974
975**起始版本:** 10
976
977**参数:**
978
979| 名称 | 描述 |
980| -------- | -------- |
981| type | [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) 目标NNRt设备类型。 |
982
983**返回:**
984
985指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。
986
987
988### OH_AI_DestroyAllNNRTDeviceDescs()
989
990```
991OH_AI_API void OH_AI_DestroyAllNNRTDeviceDescs (NNRTDeviceDesc ** desc)
992```
993
994**描述**
995
996销毁从[OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs)获取的NNRt描写信息实例数组。
997
998**起始版本:** 10
999
1000**参数:**
1001
1002| 名称 | 描述 |
1003| -------- | -------- |
1004| desc | 指向NNRt设备描述信息实例数组的二重指针。销毁结束,desc指向内容会被置为NULL。 |
1005
1006
1007### OH_AI_DeviceInfoAddExtension()
1008
1009```
1010OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension (OH_AI_DeviceInfoHandle device_info, const char * name, const char * value, size_t value_size )
1011```
1012
1013**描述**
1014
1015向设备信息中添加键/值对形式的扩展配置。只对NNRt设备信息有效。
1016
1017注意:当前仅支持{"CachePath": "YourCachePath"},{"CacheVersion": "YouCacheVersion"},{"QuantBuffer": "YourQuantBuffer"},{"ModelName": "YourModelName"},{"isProfiling": "YourisProfiling"},{"opLayout": "YouropLayout"},{"InputDims": "YourInputDims"},{"DynamicDims": "YourDynamicDims"},{"QuantConfigData": "YourQuantConfigData"},{"BandMode": "YourBandMode"},{"NPU_FM_SHARED": "YourNPU_FM_SHARED"} 11种键值对配置,用户根据使用情况替换具体的值。
1018
1019**起始版本:** 10
1020
1021**参数:**
1022
1023| 名称 | 描述 |
1024| -------- | -------- |
1025| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1026| name | 单个扩展项的键,格式为C字符串。 |
1027| value | 单个扩展项的值内容首地址。 |
1028| value_size | 单个扩展项的值内容长度。 |
1029
1030**返回:**
1031
1032[OH_AI_Status](#oh_ai_status) 执行状态码,若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。
1033
1034
1035### OH_AI_DeviceInfoCreate()
1036
1037```
1038OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate (OH_AI_DeviceType device_type)
1039```
1040
1041**描述**
1042
1043创建一个设备信息对象。
1044
1045**起始版本:** 9
1046
1047**参数:**
1048
1049| 名称 | 描述 |
1050| -------- | -------- |
1051| device_type | 设备类型, 具体见[OH_AI_DeviceType](#oh_ai_devicetype)。 |
1052
1053**返回:**
1054
1055指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。
1056
1057
1058### OH_AI_DeviceInfoDestroy()
1059
1060```
1061OH_AI_API void OH_AI_DeviceInfoDestroy (OH_AI_DeviceInfoHandle * device_info)
1062```
1063
1064**描述**
1065
1066释放设备信息实例。注意:设备信息实例被添加到context后,无须调用者手动释放。
1067
1068**起始版本:** 9
1069
1070**参数:**
1071
1072| 名称 | 描述 |
1073| -------- | -------- |
1074| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1075
1076
1077### OH_AI_DeviceInfoGetDeviceId()
1078
1079```
1080OH_AI_API size_t OH_AI_DeviceInfoGetDeviceId (const OH_AI_DeviceInfoHandle device_info)
1081```
1082
1083**描述**
1084
1085获取NNRt设备ID,仅NNRt设备可用。
1086
1087**起始版本:** 10
1088
1089**参数:**
1090
1091| 名称 | 描述 |
1092| -------- | -------- |
1093| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1094
1095**返回:**
1096
1097NNRt设备ID。
1098
1099
1100### OH_AI_DeviceInfoGetDeviceType()
1101
1102```
1103OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType (const OH_AI_DeviceInfoHandle device_info)
1104```
1105
1106**描述**
1107
1108获取设备的类型。
1109
1110**起始版本:** 9
1111
1112**参数:**
1113
1114| 名称 | 描述 |
1115| -------- | -------- |
1116| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1117
1118**返回:**
1119
1120生产商设备类型。
1121
1122
1123### OH_AI_DeviceInfoGetEnableFP16()
1124
1125```
1126OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16 (const OH_AI_DeviceInfoHandle device_info)
1127```
1128
1129**描述**
1130
1131获取是否开启float16推理模式, 仅CPU/GPU设备可用。
1132
1133**起始版本:** 9
1134
1135**参数:**
1136
1137| 名称 | 描述 |
1138| -------- | -------- |
1139| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1140
1141**返回:**
1142
1143设置是否开启float16推理模式。
1144
1145
1146### OH_AI_DeviceInfoGetFrequency()
1147
1148```
1149OH_AI_API int OH_AI_DeviceInfoGetFrequency (const OH_AI_DeviceInfoHandle device_info)
1150```
1151
1152**描述**
1153
1154获取NPU的频率类型,仅NPU设备可用。
1155
1156**起始版本:** 9
1157
1158**参数:**
1159
1160| 名称 | 描述 |
1161| -------- | -------- |
1162| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1163
1164**返回:**
1165
1166NPU的频率类型。取值范围为0-4,1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。
1167
1168
1169### OH_AI_DeviceInfoGetPerformanceMode()
1170
1171```
1172OH_AI_API OH_AI_PerformanceMode OH_AI_DeviceInfoGetPerformanceMode (const OH_AI_DeviceInfoHandle device_info)
1173```
1174
1175**描述**
1176
1177获取NNRt性能模式,仅NNRt设备可用。
1178
1179**起始版本:** 10
1180
1181**参数:**
1182
1183| 名称 | 描述 |
1184| -------- | -------- |
1185| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1186
1187**返回:**
1188
1189[OH_AI_PerformanceMode](#oh_ai_performancemode) NNRt性能模式。
1190
1191
1192### OH_AI_DeviceInfoGetPriority()
1193
1194```
1195OH_AI_API OH_AI_Priority OH_AI_DeviceInfoGetPriority (const OH_AI_DeviceInfoHandle device_info)
1196```
1197
1198**描述**
1199
1200获取NNRt任务优先级,仅NNRt设备可用。
1201
1202**起始版本:** 10
1203
1204**参数:**
1205
1206| 名称 | 描述 |
1207| -------- | -------- |
1208| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1209
1210**返回:**
1211
1212[OH_AI_Priority](#oh_ai_priority) NNRt任务优先级。
1213
1214
1215### OH_AI_DeviceInfoGetProvider()
1216
1217```
1218OH_AI_API const char* OH_AI_DeviceInfoGetProvider (const OH_AI_DeviceInfoHandle device_info)
1219```
1220
1221**描述**
1222
1223获取生产商的名称。
1224
1225**起始版本:** 9
1226
1227**参数:**
1228
1229| 名称 | 描述 |
1230| -------- | -------- |
1231| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1232
1233**返回:**
1234
1235生产商的名称。
1236
1237
1238### OH_AI_DeviceInfoGetProviderDevice()
1239
1240```
1241OH_AI_API const char* OH_AI_DeviceInfoGetProviderDevice (const OH_AI_DeviceInfoHandle device_info)
1242```
1243
1244**描述**
1245
1246获取生产商设备的名称。
1247
1248**起始版本:** 9
1249
1250**参数:**
1251
1252| 名称 | 描述 |
1253| -------- | -------- |
1254| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1255
1256**返回:**
1257
1258生产商设备的名称。
1259
1260
1261### OH_AI_DeviceInfoSetDeviceId()
1262
1263```
1264OH_AI_API void OH_AI_DeviceInfoSetDeviceId (OH_AI_DeviceInfoHandle device_info, size_t device_id )
1265```
1266
1267**描述**
1268
1269设置NNRt设备ID,仅NNRt设备可用。
1270
1271**起始版本:** 10
1272
1273**参数:**
1274
1275| 名称 | 描述 |
1276| -------- | -------- |
1277| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1278| device_id | NNRt设备ID。 |
1279
1280
1281### OH_AI_DeviceInfoSetEnableFP16()
1282
1283```
1284OH_AI_API void OH_AI_DeviceInfoSetEnableFP16 (OH_AI_DeviceInfoHandle device_info, bool is_fp16 )
1285```
1286
1287**描述**
1288
1289设置是否开启float16推理模式,仅CPU/GPU设备可用。
1290
1291**起始版本:** 9
1292
1293**参数:**
1294
1295| 名称 | 描述 |
1296| -------- | -------- |
1297| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1298| is_fp16 | 是否开启float16推理模式。 |
1299
1300
1301### OH_AI_DeviceInfoSetFrequency()
1302
1303```
1304OH_AI_API void OH_AI_DeviceInfoSetFrequency (OH_AI_DeviceInfoHandle device_info, int frequency )
1305```
1306
1307**描述**
1308
1309设置NPU的频率,仅NPU设备可用。
1310
1311**起始版本:** 9
1312
1313**参数:**
1314
1315| 名称 | 描述 |
1316| -------- | -------- |
1317| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1318| frequency | 频率类型,取值范围为0-4,默认是3。1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 |
1319
1320
1321### OH_AI_DeviceInfoSetPerformanceMode()
1322
1323```
1324OH_AI_API void OH_AI_DeviceInfoSetPerformanceMode (OH_AI_DeviceInfoHandle device_info, OH_AI_PerformanceMode mode )
1325```
1326
1327**描述**
1328
1329设置NNRt性能模式,仅NNRt设备可用。
1330
1331**起始版本:** 10
1332
1333**参数:**
1334
1335| 名称 | 描述 |
1336| -------- | -------- |
1337| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1338| mode | [OH_AI_PerformanceMode](#oh_ai_performancemode) NNRt性能模式。 |
1339
1340
1341### OH_AI_DeviceInfoSetPriority()
1342
1343```
1344OH_AI_API void OH_AI_DeviceInfoSetPriority (OH_AI_DeviceInfoHandle device_info, OH_AI_Priority priority )
1345```
1346
1347**描述**
1348
1349设置NNRt任务优先级,仅NNRt设备可用。
1350
1351**起始版本:** 10
1352
1353**参数:**
1354
1355| 名称 | 描述 |
1356| -------- | -------- |
1357| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1358| priority | [OH_AI_Priority](#oh_ai_priority) NNRt任务优先级。 |
1359
1360
1361### OH_AI_DeviceInfoSetProvider()
1362
1363```
1364OH_AI_API void OH_AI_DeviceInfoSetProvider (OH_AI_DeviceInfoHandle device_info, const char * provider )
1365```
1366
1367**描述**
1368
1369设置生产商的名称。
1370
1371**起始版本:** 9
1372
1373**参数:**
1374
1375| 名称 | 描述 |
1376| -------- | -------- |
1377| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1378| provider | 生产商的名称。 |
1379
1380
1381### OH_AI_DeviceInfoSetProviderDevice()
1382
1383```
1384OH_AI_API void OH_AI_DeviceInfoSetProviderDevice (OH_AI_DeviceInfoHandle device_info, const char * device )
1385```
1386
1387**描述**
1388
1389设置生产商设备的名称。
1390
1391**起始版本:** 9
1392
1393**参数:**
1394
1395| 名称 | 描述 |
1396| -------- | -------- |
1397| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1398| device | 生产商设备名称。例如: CPU。 |
1399
1400
1401### OH_AI_ExportModel()
1402
1403```
1404OH_AI_API OH_AI_Status OH_AI_ExportModel (OH_AI_ModelHandle model, OH_AI_ModelType model_type, const char * model_file, OH_AI_QuantizationType quantization_type, bool export_inference_only, char ** output_tensor_name, size_t num )
1405```
1406
1407**描述**
1408
1409导出训练模型,仅用于端侧训练。
1410
1411**起始版本:** 11
1412
1413**参数:**
1414
1415| 名称 | 描述 |
1416| -------- | -------- |
1417| model | 模型对象指针。 |
1418| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 |
1419| model_file | 导出的模型文件路径。 |
1420| quantization_type | 量化类型。 |
1421| export_inference_only | 是否导出推理模型。 |
1422| output_tensor_name | 设置导出模型的输出Tensor,默认为空表示全量导出。 |
1423| num | 输出Tensor的数量。 |
1424
1425**返回:**
1426
1427枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1428
1429### OH_AI_ExportModelBuffer()
1430
1431```
1432OH_AI_API OH_AI_Status OH_AI_ExportModelBuffer (OH_AI_ModelHandle model, OH_AI_ModelType model_type, char ** model_data, size_t * data_size, OH_AI_QuantizationType quantization_type, bool export_inference_only, char ** output_tensor_name, size_t num )
1433```
1434**描述**
1435导出训练模型内存缓存,仅用于端侧训练。
1436
1437**起始版本:** 11
1438
1439**参数:**
1440
1441| 名称 | 描述 |
1442| -------- | -------- |
1443| model | 模型对象指针。  |
1444| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。  |
1445| model_data | 指向导出模型文件缓冲区的指针。  |
1446| data_size | 缓冲区大小。  |
1447| quantization_type | 量化类型。  |
1448| export_inference_only | 是否导出推理模型。  |
1449| output_tensor_name | 设置导出模型的输出Tensor,默认为空表示全量导出。  |
1450| num | 输出Tensor的数量。  |
1451
1452**返回:**
1453
1454枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1455
1456
1457### OH_AI_ExportWeightsCollaborateWithMicro()
1458
1459```
1460OH_AI_API OH_AI_Status OH_AI_ExportWeightsCollaborateWithMicro (OH_AI_ModelHandle model, OH_AI_ModelType model_type, const char * weight_file, bool is_inference, bool enable_fp16, char ** changeable_weights_name, size_t num )
1461```
1462
1463**描述**
1464
1465导出模型权重,只能用于micro推理,仅用于端侧训练。
1466
1467**起始版本:** 11
1468
1469**参数:**
1470
1471| 名称 | 描述 |
1472| -------- | -------- |
1473| model | 模型对象指针。 |
1474| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 |
1475| weight_file | 导出的权重文件路径。 |
1476| is_inference | 是否导出推理模型,当前只支持设置为true。 |
1477| enable_fp16 | 浮点权重是否保存为float16格式。 |
1478| changeable_weights_name | shape可变的权重Tensor名称。 |
1479| num | shape可变的权重Tensor名称的数量。 |
1480
1481**返回:**
1482
1483枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1484
1485
1486### OH_AI_GetAllNNRTDeviceDescs()
1487
1488```
1489OH_AI_API NNRTDeviceDesc* OH_AI_GetAllNNRTDeviceDescs (size_t * num)
1490```
1491
1492**描述**
1493
1494获取系统中所有NNRt硬件设备的描述信息。
1495
1496**起始版本:** 10
1497
1498**参数:**
1499
1500| 名称 | 描述 |
1501| -------- | -------- |
1502| num | 输出参数,返回设备数量。 |
1503
1504**返回:**
1505
1506指向NNRt设备描述信息实例数组的指针。当获取失败时,返回NULL。
1507
1508
1509### OH_AI_GetDeviceIdFromNNRTDeviceDesc()
1510
1511```
1512OH_AI_API size_t OH_AI_GetDeviceIdFromNNRTDeviceDesc (const NNRTDeviceDesc * desc)
1513```
1514
1515**描述**
1516
1517从特定的NNRt设备描述信息实例获取NNRt设备ID。注意,此ID只对NNRt有效。
1518
1519**起始版本:** 10
1520
1521**参数:**
1522
1523| 名称 | 描述 |
1524| -------- | -------- |
1525| desc | 指向NNRt设备描述信息实例的指针。 |
1526
1527**返回:**
1528
1529NNRt设备ID。
1530
1531
1532### OH_AI_GetElementOfNNRTDeviceDescs()
1533
1534```
1535OH_AI_API NNRTDeviceDesc* OH_AI_GetElementOfNNRTDeviceDescs (NNRTDeviceDesc * descs, size_t index )
1536```
1537
1538**描述**
1539
1540获取NNRt设备描述信息数组中的元素指针。
1541
1542**起始版本:** 10
1543
1544**参数:**
1545
1546| 名称 | 描述 |
1547| -------- | -------- |
1548| descs | NNRt设备描述信息数组。 |
1549| index | 数组元素索引。 |
1550
1551**返回:**
1552
1553NNRt设备描述信息类型指针。
1554
1555
1556### OH_AI_GetNameFromNNRTDeviceDesc()
1557
1558```
1559OH_AI_API const char* OH_AI_GetNameFromNNRTDeviceDesc (const NNRTDeviceDesc * desc)
1560```
1561
1562**描述**
1563
1564从特定的NNRt设备描述信息实例获取NNRt设备名称。
1565
1566**起始版本:** 10
1567
1568**参数:**
1569
1570| 名称 | 描述 |
1571| -------- | -------- |
1572| desc | 指向NNRt设备描述信息实例的指针。 |
1573
1574**返回:**
1575
1576NNRt设备名称,指向一个常量字符串的指针,该常量字符串由desc持有,调用者无需单独释放此指针。
1577
1578
1579### OH_AI_GetTypeFromNNRTDeviceDesc()
1580
1581```
1582OH_AI_API OH_AI_NNRTDeviceType OH_AI_GetTypeFromNNRTDeviceDesc (const NNRTDeviceDesc * desc)
1583```
1584
1585**描述**
1586
1587从特定的NNRt设备描述信息实例获取NNRt设备类型。
1588
1589**起始版本:** 10
1590
1591**参数:**
1592
1593| 名称 | 描述 |
1594| -------- | -------- |
1595| desc | 指向NNRt设备描述信息实例的指针。 |
1596
1597**返回:**
1598
1599[OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) NNRt设备类型。
1600
1601
1602### OH_AI_ModelBuild()
1603
1604```
1605OH_AI_API OH_AI_Status OH_AI_ModelBuild (OH_AI_ModelHandle model, const void * model_data, size_t data_size, OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context )
1606```
1607
1608**描述**
1609
1610从内存缓冲区加载并编译MindSpore模型。
1611
1612注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuild](#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)一次, 如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。
1613
1614**起始版本:** 9
1615
1616**参数:**
1617
1618| 名称 | 描述 |
1619| -------- | -------- |
1620| model | 模型对象指针。 |
1621| model_data | 内存中已经加载的模型数据地址。 |
1622| data_size | 模型数据的长度。 |
1623| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 |
1624| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
1625
1626**返回:**
1627
1628枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1629
1630
1631### OH_AI_ModelBuildFromFile()
1632
1633```
1634OH_AI_API OH_AI_Status OH_AI_ModelBuildFromFile (OH_AI_ModelHandle model, const char * model_path, OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context )
1635```
1636
1637**描述**
1638
1639通过模型文件加载并编译MindSpore模型。
1640
1641注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuild](#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)一次, 如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。
1642
1643**起始版本:** 9
1644
1645**参数:**
1646
1647| 名称 | 描述 |
1648| -------- | -------- |
1649| model | 模型对象指针。 |
1650| model_path | 模型文件路径。 |
1651| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 |
1652| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
1653
1654**返回:**
1655
1656枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1657
1658
1659### OH_AI_ModelCreate()
1660
1661```
1662OH_AI_API OH_AI_ModelHandle OH_AI_ModelCreate ()
1663```
1664
1665**描述**
1666
1667创建一个模型对象。
1668
1669**起始版本:** 9
1670
1671**返回:**
1672
1673模型对象指针。
1674
1675
1676### OH_AI_ModelDestroy()
1677
1678```
1679OH_AI_API void OH_AI_ModelDestroy (OH_AI_ModelHandle * model)
1680```
1681
1682**描述**
1683
1684释放一个模型对象。
1685
1686**起始版本:** 9
1687
1688**参数:**
1689
1690| 名称 | 描述 |
1691| -------- | -------- |
1692| model | 模型对象指针。 |
1693
1694
1695### OH_AI_ModelGetInputByTensorName()
1696
1697```
1698OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetInputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name )
1699```
1700
1701**描述**
1702
1703通过张量名获取模型的输入张量。
1704
1705**起始版本:** 9
1706
1707**参数:**
1708
1709| 名称 | 描述 |
1710| -------- | -------- |
1711| model | 模型对象指针。 |
1712| tensor_name | 张量名称。 |
1713
1714**返回:**
1715
1716tensor_name所对应的输入张量的张量指针,如果输入中没有该张量则返回空。
1717
1718
1719### OH_AI_ModelGetInputs()
1720
1721```
1722OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetInputs (const OH_AI_ModelHandle model)
1723```
1724
1725**描述**
1726
1727获取模型的输入张量数组结构体。
1728
1729**起始版本:** 9
1730
1731**参数:**
1732
1733| 名称 | 描述 |
1734| -------- | -------- |
1735| model | 模型对象指针。 |
1736
1737**返回:**
1738
1739模型输入对应的张量数组结构体。
1740
1741
1742### OH_AI_ModelGetLearningRate()
1743
1744```
1745OH_AI_API float OH_AI_ModelGetLearningRate (OH_AI_ModelHandle model)
1746```
1747
1748**描述**
1749
1750获取训练的学习率,仅用于端侧训练。
1751
1752**起始版本:** 11
1753
1754**参数:**
1755
1756| 名称 | 描述 |
1757| -------- | -------- |
1758| model | 模型对象指针。 |
1759
1760**返回:**
1761
1762学习率,没有设置优化器时为0.0。
1763
1764
1765### OH_AI_ModelGetOutputByTensorName()
1766
1767```
1768OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetOutputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name )
1769```
1770
1771**描述**
1772
1773通过张量名获取模型的输出张量。
1774
1775**起始版本:** 9
1776
1777**参数:**
1778
1779| 名称 | 描述 |
1780| -------- | -------- |
1781| model | 模型对象指针。 |
1782| tensor_name | 张量名称。 |
1783
1784**返回:**
1785
1786tensor_name所对应的输入张量的张量指针,如果输出中没有该张量则返回空。
1787
1788
1789### OH_AI_ModelGetOutputs()
1790
1791```
1792OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetOutputs (const OH_AI_ModelHandle model)
1793```
1794
1795**描述**
1796
1797获取模型的输出张量数组结构体。
1798
1799**起始版本:** 9
1800
1801**参数:**
1802
1803| 名称 | 描述 |
1804| -------- | -------- |
1805| model | 模型对象指针。 |
1806
1807**返回:**
1808
1809模型输出对应的张量数组结构体。
1810
1811
1812### OH_AI_ModelGetTrainMode()
1813
1814```
1815OH_AI_API bool OH_AI_ModelGetTrainMode (OH_AI_ModelHandle model)
1816```
1817
1818**描述**
1819
1820获取训练模式。
1821
1822**起始版本:** 11
1823
1824**参数:**
1825
1826| 名称 | 描述 |
1827| -------- | -------- |
1828| model | 模型对象指针。 |
1829
1830**返回:**
1831
1832表示是否是训练模式。
1833
1834
1835### OH_AI_ModelGetWeights()
1836
1837```
1838OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetWeights (OH_AI_ModelHandle model)
1839```
1840
1841**描述**
1842
1843获取模型的所有权重Tensors,仅用于端侧训练。
1844
1845**起始版本:** 11
1846
1847**参数:**
1848
1849| 名称 | 描述 |
1850| -------- | -------- |
1851| model | 模型对象指针。 |
1852
1853**返回:**
1854
1855模型的所有权重Tensor。
1856
1857
1858### OH_AI_ModelPredict()
1859
1860```
1861OH_AI_API OH_AI_Status OH_AI_ModelPredict (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs, OH_AI_TensorHandleArray * outputs, const OH_AI_KernelCallBack before, const OH_AI_KernelCallBack after )
1862```
1863
1864**描述**
1865
1866执行模型推理。
1867
1868**起始版本:** 9
1869
1870**参数:**
1871
1872| 名称 | 描述 |
1873| -------- | -------- |
1874| model | 模型对象指针。 |
1875| inputs | 模型输入对应的张量数组结构体。 |
1876| outputs | 模型输出对应的张量数组结构体的指针。 |
1877| before | 模型推理前执行的回调函数。 |
1878| after | 模型推理后执行的回调函数。 |
1879
1880**返回:**
1881
1882枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1883
1884
1885### OH_AI_ModelResize()
1886
1887```
1888OH_AI_API OH_AI_Status OH_AI_ModelResize (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs, OH_AI_ShapeInfo * shape_infos, size_t shape_info_num )
1889```
1890
1891**描述**
1892
1893调整已编译模型的输入形状。
1894
1895**起始版本:** 9
1896
1897**参数:**
1898
1899| 名称 | 描述 |
1900| -------- | -------- |
1901| model | 模型对象指针。 |
1902| inputs | 模型输入对应的张量数组结构体。 |
1903| shape_infos | 输入形状信息数组,按模型输入顺序排列的由形状信息组成的数组,模型会按顺序依次调整张量形状。 |
1904| shape_info_num | 形状信息数组的长度。 |
1905
1906**返回:**
1907
1908枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1909
1910
1911### OH_AI_ModelSetLearningRate()
1912
1913```
1914OH_AI_API OH_AI_Status OH_AI_ModelSetLearningRate (OH_AI_ModelHandle model, float learning_rate )
1915```
1916
1917**描述**
1918
1919设置训练的学习率,仅用于端侧训练。
1920
1921**起始版本:** 11
1922
1923**参数:**
1924
1925| 名称 | 描述 |
1926| -------- | -------- |
1927| learning_rate | 学习率 |
1928
1929**返回:**
1930
1931枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1932
1933
1934### OH_AI_ModelSetTrainMode()
1935
1936```
1937OH_AI_API OH_AI_Status OH_AI_ModelSetTrainMode (OH_AI_ModelHandle model, bool train )
1938```
1939
1940**描述**
1941
1942设置训练模式,仅用于端侧训练。
1943
1944**起始版本:** 11
1945
1946**参数:**
1947
1948| 名称 | 描述 |
1949| -------- | -------- |
1950| model | 模型对象指针。 |
1951| train | 是否为训练模式。 |
1952
1953**返回:**
1954
1955枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1956
1957
1958### OH_AI_ModelSetupVirtualBatch()
1959
1960```
1961OH_AI_API OH_AI_Status OH_AI_ModelSetupVirtualBatch (OH_AI_ModelHandle model, int virtual_batch_multiplier, float lr, float momentum )
1962```
1963
1964**描述**
1965
1966设置虚拟batch用于训练,仅用于端侧训练。
1967
1968**起始版本:** 11
1969
1970**参数:**
1971
1972| 名称 | 描述 |
1973| -------- | -------- |
1974| model | 模型对象指针。 |
1975| virtual_batch_multiplier | 虚拟batch乘法器,当设置值小于1时,表示禁用虚拟batch。 |
1976| lr | 学习率,默认为-1.0f。 |
1977| momentum | 动量,默认为-1.0f。 |
1978
1979**返回:**
1980
1981枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
1982
1983
1984### OH_AI_ModelUpdateWeights()
1985
1986```
1987OH_AI_API OH_AI_Status OH_AI_ModelUpdateWeights (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray new_weights )
1988```
1989
1990**描述**
1991
1992更新模型的权重Tensor内容,仅用于端侧训练。
1993
1994**起始版本:** 11
1995
1996**参数:**
1997
1998| 名称 | 描述 |
1999| -------- | -------- |
2000| new_weights | 要更新的权重Tensor。 |
2001
2002**返回:**
2003
2004枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
2005
2006
2007### OH_AI_RunStep()
2008
2009```
2010OH_AI_API OH_AI_Status OH_AI_RunStep (OH_AI_ModelHandle model, const OH_AI_KernelCallBack before, const OH_AI_KernelCallBack after )
2011```
2012
2013**描述**
2014
2015单步训练模型,仅用于端侧训练。
2016
2017**起始版本:** 11
2018
2019**参数:**
2020
2021| 名称 | 描述 |
2022| -------- | -------- |
2023| model | 模型对象指针。 |
2024| before | 模型推理前执行的回调函数。 |
2025| after | 模型推理后执行的回调函数。 |
2026
2027**返回:**
2028
2029枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
2030
2031
2032### OH_AI_TensorClone()
2033
2034```
2035OH_AI_API OH_AI_TensorHandle OH_AI_TensorClone (OH_AI_TensorHandle tensor)
2036```
2037
2038**描述**
2039
2040深拷贝一个张量。
2041
2042**起始版本:** 9
2043
2044**参数:**
2045
2046| 名称 | 描述 |
2047| -------- | -------- |
2048| tensor | 待拷贝张量的指针。 |
2049
2050**返回:**
2051
2052指向新张量对象句柄。
2053
2054
2055### OH_AI_TensorCreate()
2056
2057```
2058OH_AI_API OH_AI_TensorHandle OH_AI_TensorCreate (const char * name, OH_AI_DataType type, const int64_t * shape, size_t shape_num, const void * data, size_t data_len )
2059```
2060
2061**描述**
2062
2063创建一个张量对象。
2064
2065**起始版本:** 9
2066
2067**参数:**
2068
2069| 名称 | 描述 |
2070| -------- | -------- |
2071| name | 张量名称 |
2072| type | 张量的数据类型 |
2073| shape | 张量的维度数组。 |
2074| shape_num | 张量维度数组长度。 |
2075| data | 指向数据的指针。 |
2076| data_len | 数据的长度。 |
2077
2078**返回:**
2079
2080指向张量对象句柄。
2081
2082### OH_AI_TensorGetAllocator()
2083
2084```
2085OH_AI_API OH_AI_AllocatorHandle OH_AI_TensorGetAllocator(OH_AI_TensorHandle tensor)
2086```
2087
2088**描述**
2089
2090获取内存分配器。此接口主要是提供一种获取张量的内存分配器的方法。
2091
2092**起始版本:** 12
2093
2094**参数:**
2095
2096| 名称 | 描述 |
2097| -------- | -------- |
2098| tensor | 张量对象句柄。 |
2099
2100**返回:**
2101
2102内存分配器的句柄。
2103
2104
2105### OH_AI_TensorDestroy()
2106
2107```
2108OH_AI_API void OH_AI_TensorDestroy (OH_AI_TensorHandle * tensor)
2109```
2110
2111**描述**
2112
2113释放张量对象。
2114
2115**起始版本:** 9
2116
2117**参数:**
2118
2119| 名称 | 描述 |
2120| -------- | -------- |
2121| tensor | 指向张量句柄的二级指针。 |
2122
2123
2124### OH_AI_TensorGetData()
2125
2126```
2127OH_AI_API const void* OH_AI_TensorGetData (const OH_AI_TensorHandle tensor)
2128```
2129
2130**描述**
2131
2132获取张量数据的指针。
2133
2134**起始版本:** 9
2135
2136**参数:**
2137
2138| 名称 | 描述 |
2139| -------- | -------- |
2140| tensor | 张量对象句柄。 |
2141
2142**返回:**
2143
2144张量数据的指针。
2145
2146
2147### OH_AI_TensorGetDataSize()
2148
2149```
2150OH_AI_API size_t OH_AI_TensorGetDataSize (const OH_AI_TensorHandle tensor)
2151```
2152
2153**描述**
2154
2155获取张量中的数据的字节数大小。
2156
2157**起始版本:** 9
2158
2159**参数:**
2160
2161| 名称 | 描述 |
2162| -------- | -------- |
2163| tensor | 张量对象句柄。 |
2164
2165**返回:**
2166
2167张量数据的字节数大小。
2168
2169
2170### OH_AI_TensorGetDataType()
2171
2172```
2173OH_AI_API OH_AI_DataType OH_AI_TensorGetDataType (const OH_AI_TensorHandle tensor)
2174```
2175
2176**描述**
2177
2178获取张量类型。
2179
2180**起始版本:** 9
2181
2182**参数:**
2183
2184| 名称 | 描述 |
2185| -------- | -------- |
2186| tensor | 张量对象句柄。 |
2187
2188**返回:**
2189
2190张量的数据类型。
2191
2192
2193### OH_AI_TensorGetElementNum()
2194
2195```
2196OH_AI_API int64_t OH_AI_TensorGetElementNum (const OH_AI_TensorHandle tensor)
2197```
2198
2199**描述**
2200
2201获取张量元素数量。
2202
2203**起始版本:** 9
2204
2205**参数:**
2206
2207| 名称 | 描述 |
2208| -------- | -------- |
2209| tensor | 张量对象句柄。 |
2210
2211**返回:**
2212
2213张量的元素数量。
2214
2215
2216### OH_AI_TensorGetFormat()
2217
2218```
2219OH_AI_API OH_AI_Format OH_AI_TensorGetFormat (const OH_AI_TensorHandle tensor)
2220```
2221
2222**描述**
2223
2224获取张量数据的排列方式。
2225
2226**起始版本:** 9
2227
2228**参数:**
2229
2230| 名称 | 描述 |
2231| -------- | -------- |
2232| tensor | 张量对象句柄。 |
2233
2234**返回:**
2235
2236张量数据的排列方式。
2237
2238
2239### OH_AI_TensorGetMutableData()
2240
2241```
2242OH_AI_API void* OH_AI_TensorGetMutableData (const OH_AI_TensorHandle tensor)
2243```
2244
2245**描述**
2246
2247获取可变的张量数据指针。如果数据为空则会开辟内存。
2248
2249**起始版本:** 9
2250
2251**参数:**
2252
2253| 名称 | 描述 |
2254| -------- | -------- |
2255| tensor | 张量对象句柄。 |
2256
2257**返回:**
2258
2259张量数据的指针。
2260
2261
2262### OH_AI_TensorGetName()
2263
2264```
2265OH_AI_API const char* OH_AI_TensorGetName (const OH_AI_TensorHandle tensor)
2266```
2267
2268**描述**
2269
2270获取张量的名称。
2271
2272**起始版本:** 9
2273
2274**参数:**
2275
2276| 名称 | 描述 |
2277| -------- | -------- |
2278| tensor | 张量对象句柄。 |
2279
2280**返回:**
2281
2282张量的名称。
2283
2284
2285### OH_AI_TensorGetShape()
2286
2287```
2288OH_AI_API const int64_t* OH_AI_TensorGetShape (const OH_AI_TensorHandle tensor, size_t * shape_num )
2289```
2290
2291**描述**
2292
2293获取张量的形状。
2294
2295**起始版本:** 9
2296
2297**参数:**
2298
2299| 名称 | 描述 |
2300| -------- | -------- |
2301| tensor | 张量对象句柄。 |
2302| shape_num | 该参数是输出参数,形状数组的长度会写入该变量。 |
2303
2304**返回:**
2305
2306形状数组。
2307
2308### OH_AI_TensorSetAllocator()
2309
2310```
2311OH_AI_API OH_AI_Status OH_AI_TensorSetAllocator(OH_AI_TensorHandle tensor, OH_AI_AllocatorHandle allocator)
2312```
2313
2314**描述**
2315
2316设置内存分配器。此接口主要是提供一种设置内存分配器的方法,tensor的内存将由这个分配器分配。
2317
2318**起始版本:** 12
2319
2320**参数:**
2321
2322| 名称      | 描述                 |
2323| --------- | -------------------- |
2324| tensor    | 张量对象句柄。       |
2325| allocator | 内存分配器对象句柄。 |
2326
2327**返回:**
2328
2329执行状态码。若成功返回OH_AI_STATUS_SUCCESS,否则返回具体错误码。
2330
2331
2332### OH_AI_TensorSetData()
2333
2334```
2335OH_AI_API void OH_AI_TensorSetData (OH_AI_TensorHandle tensor, void * data )
2336```
2337
2338**描述**
2339
2340设置张量的数据。
2341
2342**起始版本:** 9
2343
2344**参数:**
2345
2346| 名称 | 描述 |
2347| -------- | -------- |
2348| tensor | 张量对象句柄。 |
2349| data | 指向数据的指针。 |
2350
2351
2352### OH_AI_TensorSetDataType()
2353
2354```
2355OH_AI_API void OH_AI_TensorSetDataType (OH_AI_TensorHandle tensor, OH_AI_DataType type )
2356```
2357
2358**描述**
2359
2360设置张量的数据类型。
2361
2362**起始版本:** 9
2363
2364**参数:**
2365
2366| 名称 | 描述 |
2367| -------- | -------- |
2368| tensor | 张量对象句柄。 |
2369| type | 数据类型,具体见[OH_AI_DataType](#oh_ai_datatype)。 |
2370
2371
2372### OH_AI_TensorSetFormat()
2373
2374```
2375OH_AI_API void OH_AI_TensorSetFormat (OH_AI_TensorHandle tensor, OH_AI_Format format )
2376```
2377
2378**描述**
2379
2380设置张量数据的排列方式。
2381
2382**起始版本:** 9
2383
2384**参数:**
2385
2386| 名称 | 描述 |
2387| -------- | -------- |
2388| tensor | 张量对象句柄。 |
2389| format | 张量数据排列方式。 |
2390
2391
2392### OH_AI_TensorSetName()
2393
2394```
2395OH_AI_API void OH_AI_TensorSetName (OH_AI_TensorHandle tensor, const char * name )
2396```
2397
2398**描述**
2399
2400设置张量的名称。
2401
2402**起始版本:** 9
2403
2404**参数:**
2405
2406| 名称 | 描述 |
2407| -------- | -------- |
2408| tensor | 张量对象句柄。 |
2409| name | 张量名称。 |
2410
2411
2412### OH_AI_TensorSetShape()
2413
2414```
2415OH_AI_API void OH_AI_TensorSetShape (OH_AI_TensorHandle tensor, const int64_t * shape, size_t shape_num )
2416```
2417
2418**描述**
2419
2420设置张量的形状。
2421
2422**起始版本:** 9
2423
2424**参数:**
2425
2426| 名称 | 描述 |
2427| -------- | -------- |
2428| tensor | 张量对象句柄。 |
2429| shape | 形状数组。 |
2430| shape_num | 张量形状数组长度。 |
2431
2432
2433### OH_AI_TensorSetUserData()
2434
2435```
2436OH_AI_API OH_AI_Status OH_AI_TensorSetUserData (OH_AI_TensorHandle tensor, void * data, size_t data_size )
2437```
2438
2439**描述**
2440
2441设置张量为用户自行管理的数据。此接口常用于复用用户数据作为模型输入,可减少一次数据拷贝。 注意:此数据对于张量来说是外部数据,张量销毁时不会主动释放,由调用者负责释放。另外,在此张量 使用过程中,调用者须确保此数据有效。
2442
2443**起始版本:** 10
2444
2445**参数:**
2446
2447| 名称 | 描述 |
2448| -------- | -------- |
2449| tensor | 张量对象句柄。 |
2450| data | 用户数据首地址。 |
2451| data_size | 用户数据长度。 |
2452
2453**返回:**
2454
2455执行状态码。若成功返回OH_AI_STATUS_SUCCESS,否则返回具体错误码。
2456
2457
2458### OH_AI_TrainCfgCreate()
2459
2460```
2461OH_AI_API OH_AI_TrainCfgHandle OH_AI_TrainCfgCreate ()
2462```
2463
2464**描述**
2465
2466创建训练配置对象指针,仅用于端侧训练。
2467
2468**起始版本:** 11
2469
2470**返回:**
2471
2472训练配置对象指针。
2473
2474
2475### OH_AI_TrainCfgDestroy()
2476
2477```
2478OH_AI_API void OH_AI_TrainCfgDestroy (OH_AI_TrainCfgHandle * train_cfg)
2479```
2480
2481**描述**
2482
2483销毁训练配置对象指针,仅用于端侧训练。
2484
2485**起始版本:** 11
2486
2487**参数:**
2488
2489| 名称 | 描述 |
2490| -------- | -------- |
2491| train_cfg | 训练配置对象指针。 |
2492
2493
2494### OH_AI_TrainCfgGetLossName()
2495
2496```
2497OH_AI_API char** OH_AI_TrainCfgGetLossName (OH_AI_TrainCfgHandle train_cfg, size_t * num )
2498```
2499
2500**描述**
2501
2502获取损失函数的名称列表,仅用于端侧训练。
2503
2504**起始版本:** 11
2505
2506**参数:**
2507
2508| 名称 | 描述 |
2509| -------- | -------- |
2510| train_cfg | 训练配置对象指针。 |
2511| num | 损失函数数量。 |
2512
2513**返回:**
2514
2515损失函数的名称列表。
2516
2517
2518### OH_AI_TrainCfgGetOptimizationLevel()
2519
2520```
2521OH_AI_API OH_AI_OptimizationLevel OH_AI_TrainCfgGetOptimizationLevel (OH_AI_TrainCfgHandle train_cfg)
2522```
2523
2524**描述**
2525
2526获取训练配置的优化等级,仅用于端侧训练。
2527
2528**起始版本:** 11
2529
2530**参数:**
2531
2532| 名称 | 描述 |
2533| -------- | -------- |
2534| train_cfg | 训练配置对象指针。 |
2535
2536**返回:**
2537
2538优化等级。
2539
2540
2541### OH_AI_TrainCfgSetLossName()
2542
2543```
2544OH_AI_API void OH_AI_TrainCfgSetLossName (OH_AI_TrainCfgHandle train_cfg, const char ** loss_name, size_t num )
2545```
2546
2547**描述**
2548
2549设置损失函数的名称列表,仅用于端侧训练。
2550
2551**起始版本:** 11
2552
2553**参数:**
2554
2555| 名称 | 描述 |
2556| -------- | -------- |
2557| train_cfg | 训练配置对象指针。 |
2558| loss_name | 损失函数的名称列表。 |
2559| num | 损失函数数量。 |
2560
2561
2562### OH_AI_TrainCfgSetOptimizationLevel()
2563
2564```
2565OH_AI_API void OH_AI_TrainCfgSetOptimizationLevel (OH_AI_TrainCfgHandle train_cfg, OH_AI_OptimizationLevel level )
2566```
2567
2568**描述**
2569
2570设置训练配置的优化等级,仅用于端侧训练。
2571
2572**起始版本:** 11
2573
2574**参数:**
2575
2576| 名称 | 描述 |
2577| -------- | -------- |
2578| train_cfg | 训练配置对象指针。 |
2579| level | 优化等级。 |
2580
2581
2582### OH_AI_TrainModelBuild()
2583
2584```
2585OH_AI_API OH_AI_Status OH_AI_TrainModelBuild (OH_AI_ModelHandle model, const void * model_data, size_t data_size, OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context, const OH_AI_TrainCfgHandle train_cfg )
2586```
2587
2588**描述**
2589
2590从内存缓冲区加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。
2591
2592**起始版本:** 11
2593
2594**参数:**
2595
2596| 名称 | 描述 |
2597| -------- | -------- |
2598| model | 模型对象指针。 |
2599| model_data | 指向存储读入模型文件缓冲区的指针。 |
2600| data_size | 缓冲区大小。 |
2601| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 |
2602| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
2603| train_cfg | 训练配置对象指针。 |
2604
2605**返回:**
2606
2607枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
2608
2609
2610### OH_AI_TrainModelBuildFromFile()
2611
2612```
2613OH_AI_API OH_AI_Status OH_AI_TrainModelBuildFromFile (OH_AI_ModelHandle model, const char * model_path, OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context, const OH_AI_TrainCfgHandle train_cfg )
2614```
2615
2616**描述**
2617
2618根据路径读取加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。
2619
2620**起始版本:** 11
2621
2622**参数:**
2623
2624| 名称 | 描述 |
2625| -------- | -------- |
2626| model | 模型对象指针。 |
2627| model_path | 模型文件路径。 |
2628| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 |
2629| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
2630| train_cfg | 训练配置对象指针。 |
2631
2632**返回:**
2633
2634枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。
2635