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