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