• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# MindSpore
2
3
4## 概述
5
6提供MindSpore Lite的模型推理相关接口。
7
8\@Syscap SystemCapability.Ai.MindSpore
9
10**起始版本:**
11
129
13
14
15## 汇总
16
17
18### 文件
19
20| 名称                            | 描述                                                         |
21| ------------------------------- | ------------------------------------------------------------ |
22| [context.h](context_8h.md)      | 提供了Context相关的接口,可以配置运行时信息。<br>引用文件:\<mindspore/context.h><br>库:libmindspore_lite_ndk.so |
23| [data_type.h](data__type_8h.md) | 声明了张量的数据的类型。<br>引用文件:\<mindspore/data_type.h><br>库:libmindspore_lite_ndk.so |
24| [format.h](format_8h.md)        | 提供张量数据的排列格式。<br>引用文件:\<mindspore/format.h><br>库:libmindspore_lite_ndk.so |
25| [model.h](model_8h.md)          | 提供了模型相关接口,可以用于模型创建、模型推理等。<br>引用文件:\<mindspore/model.h><br>库:libmindspore_lite_ndk.so |
26| [status.h](status_8h.md)        | 提供了Mindspore Lite运行时的状态码。<br>引用文件:\<mindspore/status.h><br>库:libmindspore_lite_ndk.so |
27| [tensor.h](tensor_8h.md)        | 提供了张量相关的接口,可用于创建和修改张量信息。<br>引用文件:\<mindspore/tensor.h><br>库:libmindspore_lite_ndk.so |
28| [types.h](types_8h.md)          | 提供了MindSpore Lite支持的模型文件类型和设备类型。<br>引用文件:\<mindspore/types.h><br>库:libmindspore_lite_ndk.so |
29
30
31### 结构体
32
33| 名称                                                         | 描述                                                 |
34| ------------------------------------------------------------ | ---------------------------------------------------- |
35| [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) | 张量数组结构体,用于存储张量数组指针和张量数组长度。 |
36| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md)                | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。         |
37| [OH_AI_CallBackParam](_o_h___a_i___call_back_param.md)       | 回调函数中传入的算子信息。                           |
38
39
40### 宏定义
41
42| 名称                                             | 描述                                         |
43| ------------------------------------------------ | -------------------------------------------- |
44| [OH_AI_MAX_SHAPE_NUM](#oh_ai_max_shape_num)   32 | 张量维度的最大值。 |
45
46
47### 类型定义
48
49| 名称                                                         | 描述                                               |
50| ------------------------------------------------------------ | -------------------------------------------------- |
51| [OH_AI_ContextHandle](#oh_ai_contexthandle)                  | Mindspore的上下文信息的指针,该指针会指向Context。 |
52| [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)            | Mindspore的运行设备信息的指针。                    |
53| [OH_AI_DataType](#oh_ai_datatype)                            | MSTensor保存的数据支持的类型。                     |
54| [OH_AI_Format](#oh_ai_format)                                | MSTensor保存的数据支持的排列格式。                 |
55| [OH_AI_ModelHandle](#oh_ai_modelhandle)                      | 指向模型对象的指针。                               |
56| [OH_AI_TensorHandleArray](#oh_ai_tensorhandlearray)          | 张量数组结构体,用于存储张量数组指针和张量数组长度 |
57| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md)                | 维度信息,最大的维度为MS_MAX_SHAPE_NUM。           |
58| [OH_AI_CallBackParam](#oh_ai_callbackparam)                  | 回调函数中传入的算子信息。                         |
59| [OH_AI_KernelCallBack](#oh_ai_kernelcallback) | 回调函数指针。                                     |
60| [OH_AI_Status](#oh_ai_status)                                | Minspore的状态码。                                 |
61| [OH_AI_TensorHandle](#oh_ai_tensorhandle)                    | 指向张量对象句柄。                                 |
62| [OH_AI_ModelType](#oh_ai_modeltype)                          | 模型文件的类型。                                   |
63| [OH_AI_DeviceType](#oh_ai_devicetype)                        | 设备类型信息,包含了目前支持的设备类型。           |
64| [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype)                | NNRT管理的硬件设备类型                             |
65| [OH_AI_PerformanceMode](#oh_ai_performancemode)              | NNRT硬件的工作性能模式                             |
66| [OH_AI_Priority](#oh_ai_priority)                            | NNRT推理任务优先级                                 |
67| [NNRTDeviceDesc](#nnrtdevicedesc)                            | NNRT设备信息描述,包含设备ID,设备名称等信息。     |
68
69
70### 枚举
71
72| 名称                                                         | 描述                                     |
73| ------------------------------------------------------------ | ---------------------------------------- |
74| [OH_AI_DataType](#oh_ai_datatype-1) {<br/>OH_AI_DATATYPE_UNKNOWN = 0, <br/>OH_AI_DATATYPE_OBJECTTYPE_STRING = 12, <br/>OH_AI_DATATYPE_OBJECTTYPE_LIST = 13, <br/>OH_AI_DATATYPE_OBJECTTYPE_TUPLE = 14,<br/>OH_AI_DATATYPE_OBJECTTYPE_TENSOR = 17, <br/>OH_AI_DATATYPE_NUMBERTYPE_BEGIN = 29,<br/> OH_AI_DATATYPE_NUMBERTYPE_BOOL = 30,<br/> OH_AI_DATATYPE_NUMBERTYPE_INT8 = 32,<br/>OH_AI_DATATYPE_NUMBERTYPE_INT16 = 33, <br/>OH_AI_DATATYPE_NUMBERTYPE_INT32 = 34, <br/>OH_AI_DATATYPE_NUMBERTYPE_INT64 = 35, <br/>OH_AI_DATATYPE_NUMBERTYPE_UINT8 = 37,<br/>OH_AI_DATATYPE_NUMBERTYPE_UINT16 = 38, <br/>OH_AI_DATATYPE_NUMBERTYPE_UINT32 = 39,<br/> OH_AI_DATATYPE_NUMBERTYPE_UINT64 = 40, <br/>OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 = 42,<br/>OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 = 43, <br/>OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 = 44, <br/>OH_AI_DATATYPE_NUMBERTYPE_END = 46,<br/> OH_AI_DataTypeInvalid = INT32_MAX<br/>} | MSTensor保存的数据支持的类型。           |
75| [OH_AI_Format](#oh_ai_format-1) {<br/>OH_AI_FORMAT_NCHW = 0,<br/> OH_AI_FORMAT_NHWC = 1, <br/>OH_AI_FORMAT_NHWC4 = 2, <br/>OH_AI_FORMAT_HWKC = 3,<br/>OH_AI_FORMAT_HWCK = 4, <br/>OH_AI_FORMAT_KCHW = 5, <br/>OH_AI_FORMAT_CKHW = 6,<br/> OH_AI_FORMAT_KHWC = 7,<br/>OH_AI_FORMAT_CHWK = 8,<br/> OH_AI_FORMAT_HW = 9, <br/>OH_AI_FORMAT_HW4 = 10,<br/> OH_AI_FORMAT_NC = 11,<br/>OH_AI_FORMAT_NC4 = 12, <br/>OH_AI_FORMAT_NC4HW4 = 13, <br/>OH_AI_FORMAT_NCDHW = 15,<br/> OH_AI_FORMAT_NWC = 16,<br/>OH_AI_FORMAT_NCW = 17<br/>} | MSTensor保存的数据支持的排列格式。       |
76| [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/>} | Minspore不同组件的代码。                 |
77| [OH_AI_Status](#oh_ai_status-1) {<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的状态码。                       |
78| [OH_AI_ModelType](#oh_ai_modeltype-1) { <br/>OH_AI_MODELTYPE_MINDIR = 0, <br/>OH_AI_MODELTYPE_INVALID = 0xFFFFFFFF <br/>} | 模型文件的类型。                         |
79| [OH_AI_DeviceType](#oh_ai_devicetype-1) {<br/>OH_AI_DEVICETYPE_CPU = 0, <br/>OH_AI_DEVICETYPE_GPU, <br/>OH_AI_DEVICETYPE_KIRIN_NPU, <br/>OH_AI_DEVICETYPE_NNRT = 60,<br/>OH_AI_DEVICETYPE_INVALID = 100<br/>} | 设备类型信息,包含了目前支持的设备类型。 |
80| [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype-1) { <br/>OH_AI_NNRTDEVICE_OTHERS = 0, <br/>OH_AI_NNRTDEVICE_CPU = 1, <br/>OH_AI_NNRTDEVICE_GPU = 2, <br/>OH_AI_NNRTDEVICE_ACCELERATOR = 3<br/> } | NNRT管理的硬件设备类型。                 |
81| [OH_AI_PerformanceMode](#oh_ai_performancemode-1) {<br/>OH_AI_PERFORMANCE_NONE = 0, <br/>OH_AI_PERFORMANCE_LOW = 1, <br/>OH_AI_PERFORMANCE_MEDIUM = 2,<br/> OH_AI_PERFORMANCE_HIGH = 3,<br/>OH_AI_PERFORMANCE_EXTREME = 4<br/>} | NNRT硬件的工作性能模式。                 |
82| [OH_AI_Priority](#oh_ai_priority-1) { <br/>OH_AI_PRIORITY_NONE = 0, <br/>OH_AI_PRIORITY_LOW = 1, <br/>OH_AI_PRIORITY_MEDIUM = 2, <br/>OH_AI_PRIORITY_HIGH = 3 <br/>} | NNRT推理任务优先级。                     |
83
84
85### 函数
86
87| 名称                                                         | 描述                                                         |
88| ------------------------------------------------------------ | ------------------------------------------------------------ |
89| [OH_AI_ContextCreate](#oh_ai_contextcreate) ()               | 创建一个上下文的对象。                                       |
90| [OH_AI_ContextDestroy](#oh_ai_contextdestroy) ([OH_AI_ContextHandle](#oh_ai_contexthandle) \*context) | 释放上下文对象。                                             |
91| [OH_AI_ContextSetThreadNum](#oh_ai_contextsetthreadnum) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, int32_t thread_num) | 设置运行时的线程数量。                                       |
92| [OH_AI_ContextGetThreadNum](#oh_ai_contextgetthreadnum) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取线程数量。                                               |
93| [OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, int mode) | 设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。 |
94| [OH_AI_ContextGetThreadAffinityMode](#oh_ai_contextgetthreadaffinitymode) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取运行时线程绑定CPU核心的策略。                            |
95| [OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, const int32_t \*core_list, size_t core_num) | 设置运行时线程绑定CPU核心的列表。                            |
96| [OH_AI_ContextGetThreadAffinityCoreList](#oh_ai_contextgetthreadaffinitycorelist) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context, size_t \*core_num) | 获取CPU绑核列表。                                            |
97| [OH_AI_ContextSetEnableParallel](#oh_ai_contextsetenableparallel) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, bool is_parallel) | 设置运行时是否支持并行。此接口特性当前未开启,设置无效。                                     |
98| [OH_AI_ContextGetEnableParallel](#oh_ai_contextgetenableparallel) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取是否支持算子间并行。                                     |
99| [OH_AI_ContextAddDeviceInfo](#oh_ai_contextadddeviceinfo) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 将一个用户定义的运行设备信息附加到推理上下文中。                                           |
100| [OH_AI_DeviceInfoCreate](#oh_ai_deviceinfocreate) ([OH_AI_DeviceType](#oh_ai_devicetype) device_type) | 创建一个设备信息对象。                                       |
101| [OH_AI_DeviceInfoDestroy](#oh_ai_deviceinfodestroy) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) \*device_info) | 释放设备信息实例。注意:设备信息实例被添加到context后,无需调用者手动释放。                                           |
102| [OH_AI_DeviceInfoSetProvider](#oh_ai_deviceinfosetprovider) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*provider) | 设置生产商的名称。                                           |
103| [OH_AI_DeviceInfoGetProvider](#oh_ai_deviceinfogetprovider) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取生产商的名称。                                           |
104| [OH_AI_DeviceInfoSetProviderDevice](#oh_ai_deviceinfosetproviderdevice) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*device) | 设置生产商设备的名称。                                       |
105| [OH_AI_DeviceInfoGetProviderDevice](#oh_ai_deviceinfogetproviderdevice) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取生产商设备的名称。                                       |
106| [OH_AI_DeviceInfoGetDeviceType](#oh_ai_deviceinfogetdevicetype) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取设备的类型。                                             |
107| [OH_AI_DeviceInfoSetEnableFP16](#oh_ai_deviceinfosetenablefp16) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, bool is_fp16) | 设置是否开启float16推理模式,仅CPU/GPU设备可用。             |
108| [OH_AI_DeviceInfoGetEnableFP16](#oh_ai_deviceinfogetenablefp16) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取是否开启float16推理模式, 仅CPU/GPU设备可用。             |
109| [OH_AI_DeviceInfoSetFrequency](#oh_ai_deviceinfosetfrequency) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, int frequency) | 设置NPU的频率,仅NPU设备可用。                               |
110| [OH_AI_DeviceInfoGetFrequency](#oh_ai_deviceinfogetfrequency) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NPU的频率类型,仅NPU设备可用。                           |
111| [OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs) (size_t \*num) | 获取系统中所有NNRT硬件设备的描述信息。                       |
112| [OH_AI_GetElementOfNNRTDeviceDescs](#oh_ai_getelementofnnrtdevicedescs) (NNRTDeviceDesc \*descs, size_t index) | 获取NNRT设备描述信息数组中的元素指针。 |
113| [OH_AI_DestroyAllNNRTDeviceDescs](#oh_ai_destroyallnnrtdevicedescs) ([NNRTDeviceDesc](#nnrtdevicedesc) \*\*desc) | 销毁从[OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs)获取的NNRT描写信息实例数组。 |
114| [OH_AI_GetDeviceIdFromNNRTDeviceDesc](#oh_ai_getdeviceidfromnnrtdevicedesc) (const [NNRTDeviceDesc](#nnrtdevicedesc) \*desc) | 从特定的NNRT设备描述信息实例获取NNRT设备ID。注意,此ID只对NNRT有效。 |
115| [OH_AI_GetNameFromNNRTDeviceDesc](#oh_ai_getnamefromnnrtdevicedesc) (const [NNRTDeviceDesc](#nnrtdevicedesc) \*desc) | 从特定的NNRT设备描述信息实例获取NNRT设备名称。               |
116| [OH_AI_GetTypeFromNNRTDeviceDesc](#oh_ai_gettypefromnnrtdevicedesc) (const [NNRTDeviceDesc](#nnrtdevicedesc) \*desc) | 从特定的NNRT设备描述信息实例获取NNRT设备类型。               |
117| [OH_AI_CreateNNRTDeviceInfoByName](#oh_ai_creatennrtdeviceinfobyname) (const char \*name) | 查找指定名称的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。 |
118| [OH_AI_CreateNNRTDeviceInfoByType](#oh_ai_creatennrtdeviceinfobytype) ([OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) type) | 查找指定类型的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。 |
119| [OH_AI_DeviceInfoSetDeviceId](#oh_ai_deviceinfosetdeviceid) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, size_t device_id) | 设置NNRT设备ID,仅NNRT设备可用。                             |
120| [OH_AI_DeviceInfoGetDeviceId](#oh_ai_deviceinfogetdeviceid) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NNRT设备ID,仅NNRT设备可用。                             |
121| [OH_AI_DeviceInfoSetPerformanceMode](#oh_ai_deviceinfosetperformancemode) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, [OH_AI_PerformanceMode](#oh_ai_performancemode) mode) | 设置NNRT性能模式,仅NNRT设备可用。                           |
122| [OH_AI_DeviceInfoGetPerformanceMode](#oh_ai_deviceinfogetperformancemode) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NNRT性能模式,仅NNRT设备可用。                           |
123| [OH_AI_DeviceInfoSetPriority](#oh_ai_deviceinfosetpriority) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, [OH_AI_Priority](#oh_ai_priority) priority) | 设置NNRT任务优先级,仅NNRT设备可用。                         |
124| [OH_AI_DeviceInfoGetPriority](#oh_ai_deviceinfogetpriority) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NNRT任务优先级,仅NNRT设备可用。                         |
125| [OH_AI_ModelCreate](#oh_ai_modelcreate) ()                   | 创建一个模型对象。                                           |
126| [OH_AI_ModelDestroy](#oh_ai_modeldestroy) ([OH_AI_ModelHandle](#oh_ai_modelhandle) \*model) | 释放一个模型对象。                                           |
127| [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模型。                        |
128| [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模型。                        |
129| [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) | 调整已编译模型的输入形状。                                   |
130| [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) | 执行模型推理。                                               |
131| [OH_AI_ModelGetInputs](#oh_ai_modelgetinputs) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取模型的输入张量数组结构体。                               |
132| [OH_AI_ModelGetOutputs](#oh_ai_modelgetoutputs) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取模型的输出张量数组结构体。                               |
133| [OH_AI_ModelGetInputByTensorName](#oh_ai_modelgetinputbytensorname) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*tensor_name) | 通过张量名获取模型的输入张量。                               |
134| [OH_AI_ModelGetOutputByTensorName](#oh_ai_modelgetoutputbytensorname) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*tensor_name) | 通过张量名获取模型的输出张量。                               |
135| [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设备信息有效。 |
136| [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) | 创建一个张量对象。                                           |
137| [OH_AI_TensorDestroy](#oh_ai_tensordestroy) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) \*tensor) | 释放张量对象。                                               |
138| [OH_AI_TensorClone](#oh_ai_tensorclone) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 深拷贝一个张量。                                             |
139| [OH_AI_TensorSetName](#oh_ai_tensorsetname) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, const char \*name) | 设置张量的名称。                                             |
140| [OH_AI_TensorGetName](#oh_ai_tensorgetname) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量的名称。                                             |
141| [OH_AI_TensorSetDataType](#oh_ai_tensorsetdatatype) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, [OH_AI_DataType](#oh_ai_datatype) type) | 设置张量的数据类型。                                         |
142| [OH_AI_TensorGetDataType](#oh_ai_tensorgetdatatype) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量类型。                                               |
143| [OH_AI_TensorSetShape](#oh_ai_tensorsetshape) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, const int64_t \*shape, size_t shape_num) | 设置张量的形状。                                             |
144| [OH_AI_TensorGetShape](#oh_ai_tensorgetshape) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, size_t \*shape_num) | 获取张量的形状。                                             |
145| [OH_AI_TensorSetFormat](#oh_ai_tensorsetformat) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, [OH_AI_Format](#oh_ai_format) format) | 设置张量数据的排列方式。                                     |
146| [OH_AI_TensorGetFormat](#oh_ai_tensorgetformat) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量数据的排列方式。                                     |
147| [OH_AI_TensorSetData](#oh_ai_tensorsetdata) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, void \*data) | 设置张量的数据。                                             |
148| [OH_AI_TensorGetData](#oh_ai_tensorgetdata) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量数据的指针。                                         |
149| [OH_AI_TensorGetMutableData](#oh_ai_tensorgetmutabledata) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取可变的张量数据指针。如果数据为空则会开辟内存。           |
150| [OH_AI_TensorGetElementNum](#oh_ai_tensorgetelementnum) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量元素数量。                                           |
151| [OH_AI_TensorGetDataSize](#oh_ai_tensorgetdatasize) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量中的数据的字节数大小。                               |
152| [OH_AI_TensorSetUserData](#oh_ai_tensorsetuserdata) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, void \*data, size_t data_size) | 设置张量为用户自行管理的数据。此接口常用于复用用户数据作为模型输入,可减少一次数据拷贝。 |
153
154## 宏定义说明
155
156
157### OH_AI_MAX_SHAPE_NUM
158
159
160```
161#define OH_AI_MAX_SHAPE_NUM   32
162```
163
164**描述:**
165
166张量维度的最大值。
167
168
169## 类型定义说明
170
171
172### NNRTDeviceDesc
173
174
175```
176typedef struct NNRTDeviceDesc NNRTDeviceDesc
177```
178
179**描述:**
180
181NNRT设备信息描述,包含设备ID,设备名称等信息。
182
183**起始版本:**
184
18510
186
187
188### OH_AI_CallBackParam
189
190
191```
192typedef struct OH_AI_CallBackParam OH_AI_CallBackParam
193```
194
195**描述:**
196
197回调函数中传入的算子信息。
198
199
200### OH_AI_ContextHandle
201
202
203```
204typedef void* OH_AI_ContextHandle
205```
206
207**描述:**
208
209Mindspore的上下文信息的指针,该指针会指向Context。
210
211
212### OH_AI_DataType
213
214
215```
216typedef enum OH_AI_DataType OH_AI_DataType
217```
218
219**描述:**
220
221MSTensor保存的数据支持的类型。
222
223
224### OH_AI_DeviceInfoHandle
225
226
227```
228typedef void* OH_AI_DeviceInfoHandle
229```
230
231**描述:**
232
233Mindspore的运行设备信息的指针。
234
235
236### OH_AI_DeviceType
237
238
239```
240typedef enum OH_AI_DeviceType OH_AI_DeviceType
241```
242
243**描述:**
244
245设备类型信息,包含了目前支持的设备类型。
246
247
248### OH_AI_Format
249
250
251```
252typedef enum OH_AI_Format OH_AI_Format
253```
254
255**描述:**
256
257MSTensor保存的数据支持的排列格式。
258
259
260### OH_AI_KernelCallBack
261
262
263```
264typedef bool(* OH_AI_KernelCallBack) (const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs, const OH_AI_CallBackParam kernel_Info)
265```
266
267**描述:**
268
269回调函数指针。
270
271该函数指针是用于设置[OH_AI_ModelPredict](#oh_ai_modelpredict)函数参数中的两个回调函数。 该指针指向的函数需要包含三个参数,其中inputs和outputs对应了算子的输入和输出张量,kernel_Info表示当前算子的信息。 可以通过回调函数监控算子执行的情况,例如统计算子的执行时间,校验算子的正确性等等。
272
273
274### OH_AI_ModelHandle
275
276
277```
278typedef void* OH_AI_ModelHandle
279```
280
281**描述:**
282
283指向模型对象的指针。
284
285
286### OH_AI_ModelType
287
288
289```
290typedef enum OH_AI_ModelType OH_AI_ModelType
291```
292
293**描述:**
294
295模型文件的类型。
296
297
298### OH_AI_NNRTDeviceType
299
300
301```
302typedef enum OH_AI_NNRTDeviceType OH_AI_NNRTDeviceType
303```
304
305**描述:**
306
307NNRT管理的硬件设备类型。
308
309**起始版本:**
310
31110
312
313
314### OH_AI_PerformanceMode
315
316
317```
318typedef enum OH_AI_PerformanceMode OH_AI_PerformanceMode
319```
320
321**描述:**
322
323NNRT硬件的工作性能模式。
324
325**起始版本:**
326
32710
328
329
330### OH_AI_Priority
331
332
333```
334typedef enum OH_AI_Priority OH_AI_Priority
335```
336
337**描述:**
338
339NNRT推理任务优先级。
340
341**起始版本:**
342
34310
344
345
346### OH_AI_Status
347
348
349```
350typedef enum OH_AI_Status OH_AI_Status
351```
352
353**描述:**
354
355Minspore的状态码。
356
357
358### OH_AI_TensorHandle
359
360
361```
362typedef void* OH_AI_TensorHandle
363```
364
365**描述:**
366
367指向张量对象句柄。
368
369
370### OH_AI_TensorHandleArray
371
372
373```
374typedef struct OH_AI_TensorHandleArray OH_AI_TensorHandleArray
375```
376
377**描述:**
378
379张量数组结构体,用于存储张量数组指针和张量数组长度。
380
381
382## 枚举类型说明
383
384
385### OH_AI_CompCode
386
387
388```
389enum OH_AI_CompCode
390```
391
392**描述:**
393
394Minspore不同组件的代码。
395
396| 枚举值              | 描述                  |
397| ------------------- | --------------------- |
398| OH_AI_COMPCODE_CORE | Minspore Core的代码。 |
399| OH_AI_COMPCODE_MD   | MindSpore MindData的代码。 |
400| OH_AI_COMPCODE_ME   | MindSpore MindExpression的代码。 |
401| OH_AI_COMPCODE_MC   | MindSpore的代码。 |
402| OH_AI_COMPCODE_LITE | Minspore Lite的代码。 |
403
404
405### OH_AI_DataType
406
407
408```
409enum OH_AI_DataType
410```
411
412**描述:**
413
414MSTensor保存的数据支持的类型。
415
416| 枚举值                            | 描述                   |
417| --------------------------------- | ---------------------- |
418| OH_AI_DATATYPE_UNKNOWN            | 未知的数据类型。       |
419| OH_AI_DATATYPE_OBJECTTYPE_STRING  | String数据类型。       |
420| OH_AI_DATATYPE_OBJECTTYPE_LIST    | List数据类型。         |
421| OH_AI_DATATYPE_OBJECTTYPE_TUPLE   | Tuple数据类型。        |
422| OH_AI_DATATYPE_OBJECTTYPE_TENSOR  | TensorList数据类型。   |
423| OH_AI_DATATYPE_NUMBERTYPE_BEGIN   | Number类型的起始。     |
424| OH_AI_DATATYPE_NUMBERTYPE_BOOL    | Bool数据类型。         |
425| OH_AI_DATATYPE_NUMBERTYPE_INT8    | Int8数据类型。         |
426| OH_AI_DATATYPE_NUMBERTYPE_INT16   | 表示Int16数据类型。    |
427| OH_AI_DATATYPE_NUMBERTYPE_INT32   | 表示Int32数据类型。    |
428| OH_AI_DATATYPE_NUMBERTYPE_INT64   | 表示Int64数据类型。    |
429| OH_AI_DATATYPE_NUMBERTYPE_UINT8   | 表示UInt8数据类型。    |
430| OH_AI_DATATYPE_NUMBERTYPE_UINT16  | 表示UInt16数据类型。   |
431| OH_AI_DATATYPE_NUMBERTYPE_UINT32  | 表示UInt32数据类型。   |
432| OH_AI_DATATYPE_NUMBERTYPE_UINT64  | 表示UInt64数据类型。   |
433| OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 | 表示Float16数据类型。  |
434| OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 | 表示Float32数据类型。  |
435| OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 | 表示Float64数据类型。  |
436| OH_AI_DATATYPE_NUMBERTYPE_END     | 表示Number类型的结尾。 |
437| OH_AI_DataTypeInvalid             | 表示无效的数据类型。   |
438
439
440### OH_AI_DeviceType
441
442
443```
444enum OH_AI_DeviceType
445```
446
447**描述:**
448
449设备类型信息,包含了目前支持的设备类型。
450
451| 枚举值                     | 描述                                    |
452| -------------------------- | --------------------------------------- |
453| OH_AI_DEVICETYPE_CPU       | 设备类型是CPU。                         |
454| OH_AI_DEVICETYPE_GPU       | 设备类型是GPU。预留选项, 暂不支持。    |
455| OH_AI_DEVICETYPE_KIRIN_NPU | 设备类型是麒麟NPU。预留选项,暂不支持。 |
456| OH_AI_DEVICETYPE_NNRT      | 设备类型是NNRt。OHOS设备范围是[60,80)。 |
457| OH_AI_DEVICETYPE_INVALID   | 设备类型无效。                          |
458
459
460### OH_AI_Format
461
462
463```
464enum OH_AI_Format
465```
466
467**描述:**
468
469MSTensor保存的数据支持的排列格式。
470
471| 枚举值              | 描述             |
472| ------------------- | ---------------- |
473| OH_AI_FORMAT_NCHW   | 按批次N、通道C、高度H和宽度W的顺序存储张量数据。   |
474| OH_AI_FORMAT_NHWC   | 按批次N、高度H、宽度W和通道C的顺序存储张量数据。   |
475| OH_AI_FORMAT_NHWC4  | 按批次N、高度H、宽度W和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。   |
476| OH_AI_FORMAT_HWKC   | 按高度H、宽度W、核数K和通道C的顺序存储张量数据。    |
477| OH_AI_FORMAT_HWCK   | 按高度H、宽度W、通道C和核数K的顺序存储张量数据。   |
478| OH_AI_FORMAT_KCHW   | 按核数K、通道C、高度H和宽度W的顺序存储张量数据。   |
479| OH_AI_FORMAT_CKHW   | 按通道C、核数K、高度H和宽度W的顺序存储张量数据。   |
480| OH_AI_FORMAT_KHWC   | 按核数K、高度H、宽度W和通道C的顺序存储张量数据。    |
481| OH_AI_FORMAT_CHWK   | 按通道C、高度H、宽度W和核数K的顺序存储张量数据。   |
482| OH_AI_FORMAT_HW     | 按高度H和宽度W的顺序存储张量数据。     |
483| OH_AI_FORMAT_HW4    | 按高度H和宽度W的顺序存储张量数据,其中W轴是4字节对齐格式。    |
484| OH_AI_FORMAT_NC     | 按批次N和通道C的顺序存储张量数据。     |
485| OH_AI_FORMAT_NC4    | 按批次N和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。     |
486| OH_AI_FORMAT_NC4HW4 | 按批次N、通道C、高度H和宽度W的顺序存储张量数据,其中C轴和W轴是4字节对齐格式。 |
487| OH_AI_FORMAT_NCDHW  | 按批次N、通道C、深度D、高度H和宽度W的顺序存储张量数据。  |
488| OH_AI_FORMAT_NWC    | 按批次N、宽度W和通道C的顺序存储张量数据。    |
489| OH_AI_FORMAT_NCW    | 按批次N、通道C和宽度W的顺序存储张量数据。    |
490
491
492### OH_AI_ModelType
493
494
495```
496enum OH_AI_ModelType
497```
498
499**描述:**
500
501模型文件的类型。
502
503| 枚举值                  | 描述               |
504| ----------------------- | ------------------ |
505| OH_AI_MODELTYPE_MINDIR  | 模型类型是MindIR,对应的模型文件后缀为.ms。 |
506| OH_AI_MODELTYPE_INVALID | 模型类型无效。     |
507
508
509### OH_AI_NNRTDeviceType
510
511
512```
513enum OH_AI_NNRTDeviceType
514```
515
516**描述:**
517
518NNRT管理的硬件设备类型。
519
520**起始版本**:
521
52210
523
524| 枚举值                       | 描述                                |
525| ---------------------------- | ----------------------------------- |
526| OH_AI_NNRTDEVICE_OTHERS      | 设备类型不属于以下3种,则属于其它。 |
527| OH_AI_NNRTDEVICE_CPU         | CPU设备。                           |
528| OH_AI_NNRTDEVICE_GPU         | GPU设备。                           |
529| OH_AI_NNRTDEVICE_ACCELERATOR | 特定的加速设备。                    |
530
531
532### OH_AI_PerformanceMode
533
534
535```
536enum OH_AI_PerformanceMode
537```
538
539**描述:**
540
541NNRT硬件的工作性能模式。
542
543**起始版本**:
544
54510
546
547| 枚举值                    | 描述                |
548| ------------------------- | ------------------- |
549| OH_AI_PERFORMANCE_NONE    | 无特殊设置。        |
550| OH_AI_PERFORMANCE_LOW     | 低功耗模式。        |
551| OH_AI_PERFORMANCE_MEDIUM  | 功耗-性能均衡模式。 |
552| OH_AI_PERFORMANCE_HIGH    | 高性能模式。        |
553| OH_AI_PERFORMANCE_EXTREME | 极致性能模式。      |
554
555
556### OH_AI_Priority
557
558
559```
560enum OH_AI_Priority
561```
562
563**描述:**
564
565NNRT推理任务优先级。
566
567**起始版本**:
568
56910
570
571| 枚举值                | 描述           |
572| --------------------- | -------------- |
573| OH_AI_PRIORITY_NONE   | 无优先级偏好。 |
574| OH_AI_PRIORITY_LOW    | 低优先级任务。 |
575| OH_AI_PRIORITY_MEDIUM | 中优先级任务。 |
576| OH_AI_PRIORITY_HIGH   | 高优先级。     |
577
578
579### OH_AI_Status
580
581
582```
583enum OH_AI_Status
584```
585
586**描述:**
587
588Minspore的状态码。
589
590| 枚举值                                | 描述                                      |
591| ------------------------------------- | ----------------------------------------- |
592| OH_AI_STATUS_SUCCESS                  | 通用的成功状态码。                        |
593| OH_AI_STATUS_CORE_FAILED              | Mindspore Core 失败状态码。               |
594| OH_AI_STATUS_LITE_ERROR               | Mindspore Lite 异常状态码。               |
595| OH_AI_STATUS_LITE_NULLPTR             | Mindspore Lite 空指针状态码。             |
596| OH_AI_STATUS_LITE_PARAM_INVALID       | Mindspore Lite 参数异常状态码。           |
597| OH_AI_STATUS_LITE_NO_CHANGE           | Mindspore Lite 未改变状态码。             |
598| OH_AI_STATUS_LITE_SUCCESS_EXIT        | Mindspore Lite 没有错误但是退出的状态码。 |
599| OH_AI_STATUS_LITE_MEMORY_FAILED       | Mindspore Lite 内存分配失败的状态码。     |
600| OH_AI_STATUS_LITE_NOT_SUPPORT         | Mindspore Lite 功能未支持的状态码。       |
601| OH_AI_STATUS_LITE_THREADPOOL_ERROR    | Mindspore Lite 线程池异常状态码。         |
602| OH_AI_STATUS_LITE_UNINITIALIZED_OBJ   | Mindspore Lite 未初始化状态码。           |
603| OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE | Mindspore Lite 张量溢出错误的状态码。     |
604| OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR  | Mindspore Lite 输入张量异常的状态码。     |
605| OH_AI_STATUS_LITE_REENTRANT_ERROR     | Mindspore Lite 重入异常的状态码。         |
606| OH_AI_STATUS_LITE_GRAPH_FILE_ERROR    | Mindspore Lite 文件异常状态码。           |
607| OH_AI_STATUS_LITE_NOT_FIND_OP         | Mindspore Lite 未找到算子的状态码。       |
608| OH_AI_STATUS_LITE_INVALID_OP_NAME     | Mindspore Lite 无效算子状态码。           |
609| OH_AI_STATUS_LITE_INVALID_OP_ATTR     | Mindspore Lite 无效算子超参数状态码。     |
610| OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE  | Mindspore Lite 算子执行失败的状态码。     |
611| OH_AI_STATUS_LITE_FORMAT_ERROR        | Mindspore Lite 张量格式异常状态码。       |
612| OH_AI_STATUS_LITE_INFER_ERROR         | Mindspore Lite 形状推理异常状态码。       |
613| OH_AI_STATUS_LITE_INFER_INVALID       | Mindspore Lite 无效的形状推理的状态码。   |
614| OH_AI_STATUS_LITE_INPUT_PARAM_INVALID | Mindspore Lite 用户输入的参数无效状态码。 |
615
616## 函数说明
617
618
619### OH_AI_ContextAddDeviceInfo()
620
621
622```
623OH_AI_API void OH_AI_ContextAddDeviceInfo (OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info )
624```
625
626**描述:**
627
628将一个用户定义的运行设备信息附加到推理上下文中。
629
630**参数:**
631
632| 名称        | 描述                                                         |
633| ----------- | ------------------------------------------------------------ |
634| context     | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
635| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
636
637
638### OH_AI_ContextCreate()
639
640
641```
642OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate ()
643```
644
645**描述:**
646
647创建一个上下文的对象。
648
649**返回:**
650
651指向上下文信息的[OH_AI_ContextHandle](#oh_ai_contexthandle)。
652
653
654### OH_AI_ContextDestroy()
655
656
657```
658OH_AI_API void OH_AI_ContextDestroy (OH_AI_ContextHandle * context)
659```
660
661**描述:**
662
663释放上下文对象。
664
665**参数:**
666
667| 名称    | 描述                                                         |
668| ------- | ------------------------------------------------------------ |
669| context | 指向[OH_AI_ContextHandle](#oh_ai_contexthandle)的二级指针,上下文销毁后会对context置为空指针。 |
670
671
672### OH_AI_ContextGetEnableParallel()
673
674
675```
676OH_AI_API bool OH_AI_ContextGetEnableParallel (const OH_AI_ContextHandle context)
677```
678
679**描述:**
680
681获取是否支持算子间并行。
682
683**参数:**
684
685| 名称    | 描述                                                         |
686| ------- | ------------------------------------------------------------ |
687| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
688
689**返回:**
690
691是否支持并行。true 为支持并行, false 为不支持并行。
692
693
694### OH_AI_ContextGetThreadAffinityCoreList()
695
696
697```
698OH_AI_API const int32_t* OH_AI_ContextGetThreadAffinityCoreList (const OH_AI_ContextHandle context, size_t * core_num )
699```
700
701**描述:**
702
703获取CPU绑核列表。
704
705**参数:**
706
707| 名称     | 描述                                                         |
708| -------- | ------------------------------------------------------------ |
709| context  | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
710| core_num | 该参数是输出参数,表示核的数量。                             |
711
712**返回:**
713
714CPU绑核列表。此列表对象由[OH_AI_ContextHandle](#oh_ai_contexthandle)管理,调用者无须手动释放。
715
716
717### OH_AI_ContextGetThreadAffinityMode()
718
719
720```
721OH_AI_API int OH_AI_ContextGetThreadAffinityMode (const OH_AI_ContextHandle context)
722```
723
724**描述:**
725
726获取运行时线程绑定CPU核心的策略。
727
728**参数:**
729
730| 名称    | 描述                                                         |
731| ------- | ------------------------------------------------------------ |
732| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
733
734**返回:**
735
736绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为中核优先。
737
738
739### OH_AI_ContextGetThreadNum()
740
741
742```
743OH_AI_API int32_t OH_AI_ContextGetThreadNum (const OH_AI_ContextHandle context)
744```
745
746**描述:**
747
748获取线程数量。
749
750**参数:**
751
752| 名称    | 描述                                                         |
753| ------- | ------------------------------------------------------------ |
754| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
755
756**返回:**
757
758当前的线程数量。
759
760
761### OH_AI_ContextSetEnableParallel()
762
763
764```
765OH_AI_API void OH_AI_ContextSetEnableParallel (OH_AI_ContextHandle context, bool is_parallel )
766```
767
768**描述:**
769
770设置运行时是否支持并行。此接口特性当前未开启,设置无效。
771
772**参数:**
773
774| 名称        | 描述                                                         |
775| ----------- | ------------------------------------------------------------ |
776| context     | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
777| is_parallel | 是否支持并行。true 为支持并行, false 为不支持并行。          |
778
779
780### OH_AI_ContextSetThreadAffinityCoreList()
781
782
783```
784OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList (OH_AI_ContextHandle context, const int32_t * core_list, size_t core_num )
785```
786
787**描述:**
788
789设置运行时线程绑定CPU核心的列表。
790
791例如:当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参数不生效。
792
793**参数:**
794
795| 名称      | 描述                                                         |
796| --------- | ------------------------------------------------------------ |
797| context   | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
798| core_list | CPU绑核的列表。                                              |
799| core_num  | 核的数量,它就代表**core_list**的长度。                      |
800
801
802### OH_AI_ContextSetThreadAffinityMode()
803
804
805```
806OH_AI_API void OH_AI_ContextSetThreadAffinityMode (OH_AI_ContextHandle context, int mode )
807```
808
809**描述:**
810
811设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。
812
813**参数:**
814
815| 名称    | 描述                                                         |
816| ------- | ------------------------------------------------------------ |
817| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
818| mode    | 绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为中核优先。 |
819
820
821### OH_AI_ContextSetThreadNum()
822
823
824```
825OH_AI_API void OH_AI_ContextSetThreadNum (OH_AI_ContextHandle context, int32_t thread_num )
826```
827
828**描述:**
829
830设置运行时的线程数量。
831
832**参数:**
833
834| 名称       | 描述                                                         |
835| ---------- | ------------------------------------------------------------ |
836| context    | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle) |
837| thread_num | 运行时的线程数量。                                           |
838
839
840### OH_AI_CreateNNRTDeviceInfoByName()
841
842
843```
844OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByName (const char * name)
845```
846
847**描述:**
848
849查找指定名称的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。
850
851**参数:**
852
853| 名称 | 描述             |
854| ---- | ---------------- |
855| name | 目标NNRT设备名。 |
856
857**返回:**
858
859指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。
860
861**起始版本:**
862
86310
864
865
866### OH_AI_CreateNNRTDeviceInfoByType()
867
868
869```
870OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByType (OH_AI_NNRTDeviceType type)
871```
872
873**描述:**
874
875查找指定类型的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。
876
877**参数:**
878
879| 名称 | 描述                                                         |
880| ---- | ------------------------------------------------------------ |
881| type | [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) 目标NNRT设备类型。 |
882
883**返回:**
884
885指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。
886
887**起始版本:**
888
88910
890
891
892### OH_AI_DestroyAllNNRTDeviceDescs()
893
894
895```
896OH_AI_API void OH_AI_DestroyAllNNRTDeviceDescs (NNRTDeviceDesc ** desc)
897```
898
899**描述:**
900
901销毁从[OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs)获取的NNRT描写信息实例数组。
902
903**参数:**
904
905| 名称 | 描述                                                         |
906| ---- | ------------------------------------------------------------ |
907| desc | 指向NNRT设备描述信息实例数组的二重指针。销毁结束,desc指向内容会被置为NULL。 |
908
909**起始版本:**
910
91110
912
913
914### OH_AI_DeviceInfoCreate()
915
916
917```
918OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate (OH_AI_DeviceType device_type)
919```
920
921**描述:**
922
923创建一个设备信息对象。
924
925**参数:**
926
927| 名称        | 描述                                                    |
928| ----------- | ------------------------------------------------------- |
929| device_type | 设备类型, 具体见[OH_AI_DeviceType](#oh_ai_devicetype)。 |
930
931**返回:**
932
933指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。
934
935
936### OH_AI_DeviceInfoDestroy()
937
938
939```
940OH_AI_API void OH_AI_DeviceInfoDestroy (OH_AI_DeviceInfoHandle * device_info)
941```
942
943**描述:**
944
945释放设备信息实例。注意:设备信息实例被添加到context后,无需调用者手动释放。
946
947**参数:**
948
949| 名称        | 描述                                                         |
950| ----------- | ------------------------------------------------------------ |
951| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
952
953
954### OH_AI_DeviceInfoGetDeviceId()
955
956
957```
958OH_AI_API size_t OH_AI_DeviceInfoGetDeviceId (const OH_AI_DeviceInfoHandle device_info)
959```
960
961**描述:**
962
963获取NNRT设备ID,仅NNRT设备可用。
964
965**参数:**
966
967| 名称        | 描述                                                         |
968| ----------- | ------------------------------------------------------------ |
969| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
970
971**返回:**
972
973NNRT设备ID。
974
975**起始版本:**
976
97710
978
979
980### OH_AI_DeviceInfoGetDeviceType()
981
982
983```
984OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType (const OH_AI_DeviceInfoHandle device_info)
985```
986
987**描述:**
988
989获取设备的类型。
990
991**参数:**
992
993| 名称        | 描述                                                         |
994| ----------- | ------------------------------------------------------------ |
995| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
996
997**返回:**
998
999生产商设备类型。
1000
1001
1002### OH_AI_DeviceInfoGetEnableFP16()
1003
1004
1005```
1006OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16 (const OH_AI_DeviceInfoHandle device_info)
1007```
1008
1009**描述:**
1010
1011获取是否开启float16推理模式, 仅CPU/GPU设备可用。
1012
1013**参数:**
1014
1015| 名称        | 描述                                                         |
1016| ----------- | ------------------------------------------------------------ |
1017| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1018
1019**返回:**
1020
1021设置是否开启float16推理模式。
1022
1023
1024### OH_AI_DeviceInfoGetFrequency()
1025
1026
1027```
1028OH_AI_API int OH_AI_DeviceInfoGetFrequency (const OH_AI_DeviceInfoHandle device_info)
1029```
1030
1031**描述:**
1032
1033获取NPU的频率类型,仅NPU设备可用。
1034
1035**参数:**
1036
1037| 名称        | 描述                                                         |
1038| ----------- | ------------------------------------------------------------ |
1039| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1040
1041**返回:**
1042
1043NPU的频率类型。取值范围为0-4,1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。
1044
1045
1046### OH_AI_DeviceInfoGetPerformanceMode()
1047
1048
1049```
1050OH_AI_API OH_AI_PerformanceMode OH_AI_DeviceInfoGetPerformanceMode (const OH_AI_DeviceInfoHandle device_info)
1051```
1052
1053**描述:**
1054
1055获取NNRT性能模式,仅NNRT设备可用。
1056
1057**参数:**
1058
1059| 名称        | 描述                                                         |
1060| ----------- | ------------------------------------------------------------ |
1061| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1062
1063**返回:**
1064
1065[OH_AI_PerformanceMode](#oh_ai_performancemode) NNRT性能模式。
1066
1067**起始版本:**
1068
106910
1070
1071
1072### OH_AI_DeviceInfoGetPriority()
1073
1074
1075```
1076OH_AI_API OH_AI_Priority OH_AI_DeviceInfoGetPriority (const OH_AI_DeviceInfoHandle device_info)
1077```
1078
1079**描述:**
1080
1081获取NNRT任务优先级,仅NNRT设备可用。
1082
1083**参数:**
1084
1085| 名称        | 描述                                                         |
1086| ----------- | ------------------------------------------------------------ |
1087| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1088
1089**返回:**
1090
1091[OH_AI_Priority](#oh_ai_priority) NNRT任务优先级。
1092
1093**起始版本:**
1094
109510
1096
1097
1098### OH_AI_DeviceInfoGetProvider()
1099
1100
1101```
1102OH_AI_API const char* OH_AI_DeviceInfoGetProvider (const OH_AI_DeviceInfoHandle device_info)
1103```
1104
1105**描述:**
1106
1107获取生产商的名称。
1108
1109**参数:**
1110
1111| 名称        | 描述                                                         |
1112| ----------- | ------------------------------------------------------------ |
1113| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1114
1115**返回:**
1116
1117生产商的名称。
1118
1119
1120### OH_AI_DeviceInfoGetProviderDevice()
1121
1122
1123```
1124OH_AI_API const char* OH_AI_DeviceInfoGetProviderDevice (const OH_AI_DeviceInfoHandle device_info)
1125```
1126
1127**描述:**
1128
1129获取生产商设备的名称。
1130
1131**参数:**
1132
1133| 名称        | 描述                                                         |
1134| ----------- | ------------------------------------------------------------ |
1135| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1136
1137**返回:**
1138
1139生产商设备的名称。
1140
1141
1142### OH_AI_DeviceInfoSetDeviceId()
1143
1144
1145```
1146OH_AI_API void OH_AI_DeviceInfoSetDeviceId (OH_AI_DeviceInfoHandle device_info, size_t device_id )
1147```
1148
1149**描述:**
1150
1151设置NNRT设备ID,仅NNRT设备可用。
1152
1153**参数:**
1154
1155| 名称        | 描述                                                         |
1156| ----------- | ------------------------------------------------------------ |
1157| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1158| device_id   | NNRT设备ID。                                                 |
1159
1160**起始版本:**
1161
116210
1163
1164
1165### OH_AI_DeviceInfoSetEnableFP16()
1166
1167
1168```
1169OH_AI_API void OH_AI_DeviceInfoSetEnableFP16 (OH_AI_DeviceInfoHandle device_info, bool is_fp16 )
1170```
1171
1172**描述:**
1173
1174设置是否开启float16推理模式,仅CPU/GPU设备可用。
1175
1176**参数:**
1177
1178| 名称        | 描述                                                         |
1179| ----------- | ------------------------------------------------------------ |
1180| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1181| is_fp16     | 是否开启float16推理模式。                                    |
1182
1183
1184### OH_AI_DeviceInfoSetFrequency()
1185
1186
1187```
1188OH_AI_API void OH_AI_DeviceInfoSetFrequency (OH_AI_DeviceInfoHandle device_info, int frequency )
1189```
1190
1191**描述:**
1192
1193设置NPU的频率,仅NPU设备可用。
1194
1195**参数:**
1196
1197| 名称        | 描述                                                         |
1198| ----------- | ------------------------------------------------------------ |
1199| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1200| frequency   | 频率类型,取值范围为0-4,默认是3。1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 |
1201
1202
1203### OH_AI_DeviceInfoSetPerformanceMode()
1204
1205
1206```
1207OH_AI_API void OH_AI_DeviceInfoSetPerformanceMode (OH_AI_DeviceInfoHandle device_info, OH_AI_PerformanceMode mode )
1208```
1209
1210**描述:**
1211
1212设置NNRT性能模式,仅NNRT设备可用。
1213
1214**参数:**
1215
1216| 名称        | 描述                                                         |
1217| ----------- | ------------------------------------------------------------ |
1218| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1219| mode        | [OH_AI_PerformanceMode](#oh_ai_performancemode) NNRT性能模式。 |
1220
1221**起始版本**:
1222
122310
1224
1225
1226### OH_AI_DeviceInfoSetPriority()
1227
1228
1229```
1230OH_AI_API void OH_AI_DeviceInfoSetPriority (OH_AI_DeviceInfoHandle device_info, OH_AI_Priority priority )
1231```
1232
1233**描述:**
1234
1235设置NNRT任务优先级,仅NNRT设备可用。
1236
1237**参数:**
1238
1239| 名称        | 描述                                                         |
1240| ----------- | ------------------------------------------------------------ |
1241| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1242| priority    | [OH_AI_Priority](#oh_ai_priority) NNRT任务优先级。           |
1243
1244**起始版本:**
1245
124610
1247
1248
1249### OH_AI_DeviceInfoSetProvider()
1250
1251
1252```
1253OH_AI_API void OH_AI_DeviceInfoSetProvider (OH_AI_DeviceInfoHandle device_info, const char * provider )
1254```
1255
1256**描述:**
1257
1258设置生产商的名称。
1259
1260**参数:**
1261
1262| 名称        | 描述                                                         |
1263| ----------- | ------------------------------------------------------------ |
1264| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1265| provider    | 生产商的名称。                                               |
1266
1267
1268### OH_AI_DeviceInfoSetProviderDevice()
1269
1270
1271```
1272OH_AI_API void OH_AI_DeviceInfoSetProviderDevice (OH_AI_DeviceInfoHandle device_info, const char * device )
1273```
1274
1275**描述:**
1276
1277设置生产商设备的名称。
1278
1279**参数:**
1280
1281| 名称        | 描述                                                         |
1282| ----------- | ------------------------------------------------------------ |
1283| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
1284| device      | 生产商设备名称。例如: CPU。                                  |
1285
1286
1287### OH_AI_GetAllNNRTDeviceDescs()
1288
1289
1290```
1291OH_AI_API NNRTDeviceDesc* OH_AI_GetAllNNRTDeviceDescs (size_t * num)
1292```
1293
1294**描述:**
1295
1296获取系统中所有NNRT硬件设备的描述信息。
1297
1298**参数:**
1299
1300| 名称 | 描述                     |
1301| ---- | ------------------------ |
1302| num  | 输出参数,返回设备数量。 |
1303
1304**返回:**
1305
1306指向NNRT设备描述信息实例数组的指针。当获取失败时,返回NULL。
1307
1308**起始版本:**
1309
131010
1311
1312
1313### OH_AI_GetDeviceIdFromNNRTDeviceDesc()
1314
1315
1316```
1317OH_AI_API size_t OH_AI_GetDeviceIdFromNNRTDeviceDesc (const NNRTDeviceDesc * desc)
1318```
1319
1320**描述:**
1321
1322从特定的NNRT设备描述信息实例获取NNRT设备ID。注意,此ID只对NNRT有效。
1323
1324**参数:**
1325
1326| 名称 | 描述                             |
1327| ---- | -------------------------------- |
1328| desc | 指向NNRT设备描述信息实例的指针。 |
1329
1330**返回:**
1331
1332NNRT设备ID。
1333
1334**起始版本:**
1335
133610
1337
1338
1339### OH_AI_GetNameFromNNRTDeviceDesc()
1340
1341
1342```
1343OH_AI_API const char* OH_AI_GetNameFromNNRTDeviceDesc (const NNRTDeviceDesc * desc)
1344```
1345
1346**描述:**
1347
1348从特定的NNRT设备描述信息实例获取NNRT设备名称。
1349
1350**参数:**
1351
1352| 名称 | 描述                             |
1353| ---- | -------------------------------- |
1354| desc | 指向NNRT设备描述信息实例的指针。 |
1355
1356**返回:**
1357
1358NNRT设备名称,指向一个常量字符串的指针,该常量字符串由desc持有,调用者无需单独释放此指针。
1359
1360**起始版本:**
1361
136210
1363
1364
1365### OH_AI_GetTypeFromNNRTDeviceDesc()
1366
1367
1368```
1369OH_AI_API OH_AI_NNRTDeviceType OH_AI_GetTypeFromNNRTDeviceDesc (const NNRTDeviceDesc * desc)
1370```
1371
1372**描述:**
1373
1374从特定的NNRT设备描述信息实例获取NNRT设备类型。
1375
1376**参数:**
1377
1378| 名称 | 描述                             |
1379| ---- | -------------------------------- |
1380| desc | 指向NNRT设备描述信息实例的指针。 |
1381
1382**返回:**
1383
1384[OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) NNRT设备类型。
1385
1386**起始版本:**
1387
138810
1389
1390
1391### OH_AI_ModelBuild()
1392
1393
1394```
1395OH_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 )
1396```
1397
1398**描述:**
1399
1400从内存缓冲区加载并编译MindSpore模型。
1401
1402注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuild](#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)一次, 如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。
1403
1404**参数:**
1405
1406| 名称          | 描述                                                         |
1407| ------------- | ------------------------------------------------------------ |
1408| model         | 模型对象指针。                                               |
1409| model_data    | 内存中已经加载的模型数据地址。                               |
1410| data_size     | 模型数据的长度。                                             |
1411| model_type    | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。    |
1412| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
1413
1414**返回:**
1415
1416枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。
1417
1418
1419### OH_AI_ModelBuildFromFile()
1420
1421
1422```
1423OH_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 )
1424```
1425
1426**描述:**
1427
1428通过模型文件加载并编译MindSpore模型。
1429
1430注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuild](#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)一次, 如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。
1431
1432**参数:**
1433
1434| 名称          | 描述                                                         |
1435| ------------- | ------------------------------------------------------------ |
1436| model         | 模型对象指针。                                               |
1437| model_path    | 模型文件路径。                                               |
1438| model_type    | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。    |
1439| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 |
1440
1441**返回:**
1442
1443枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。
1444
1445
1446### OH_AI_ModelCreate()
1447
1448
1449```
1450OH_AI_API OH_AI_ModelHandle OH_AI_ModelCreate ()
1451```
1452
1453**描述:**
1454
1455创建一个模型对象。
1456
1457**返回:**
1458
1459模型对象指针。
1460
1461
1462### OH_AI_ModelDestroy()
1463
1464
1465```
1466OH_AI_API void OH_AI_ModelDestroy (OH_AI_ModelHandle * model)
1467```
1468
1469**描述:**
1470
1471释放一个模型对象。
1472
1473**参数:**
1474
1475| 名称  | 描述           |
1476| ----- | -------------- |
1477| model | 模型对象指针。 |
1478
1479
1480### OH_AI_ModelGetInputByTensorName()
1481
1482
1483```
1484OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetInputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name )
1485```
1486
1487**描述:**
1488
1489通过张量名获取模型的输入张量。
1490
1491**参数:**
1492
1493| 名称        | 描述           |
1494| ----------- | -------------- |
1495| model       | 模型对象指针。 |
1496| tensor_name | 张量名称。     |
1497
1498**返回:**
1499
1500tensor_name所对应的输入张量的张量指针,如果输入中没有该张量则返回空。
1501
1502
1503### OH_AI_ModelGetInputs()
1504
1505
1506```
1507OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetInputs (const OH_AI_ModelHandle model)
1508```
1509
1510**描述:**
1511
1512获取模型的输入张量数组结构体。
1513
1514**参数:**
1515
1516| 名称  | 描述           |
1517| ----- | -------------- |
1518| model | 模型对象指针。 |
1519
1520**返回:**
1521
1522模型输入对应的张量数组结构体。
1523
1524
1525### OH_AI_ModelGetOutputByTensorName()
1526
1527
1528```
1529OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetOutputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name )
1530```
1531
1532**描述:**
1533
1534通过张量名获取模型的输出张量。
1535
1536**参数:**
1537
1538| 名称        | 描述           |
1539| ----------- | -------------- |
1540| model       | 模型对象指针。 |
1541| tensor_name | 张量名称。     |
1542
1543**返回:**
1544
1545tensor_name所对应的输入张量的张量指针,如果输出中没有该张量则返回空。
1546
1547
1548### OH_AI_ModelGetOutputs()
1549
1550
1551```
1552OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetOutputs (const OH_AI_ModelHandle model)
1553```
1554
1555**描述:**
1556
1557获取模型的输出张量数组结构体。
1558
1559**参数:**
1560
1561| 名称  | 描述           |
1562| ----- | -------------- |
1563| model | 模型对象指针。 |
1564
1565**返回:**
1566
1567模型输出对应的张量数组结构体。
1568
1569
1570### OH_AI_ModelPredict()
1571
1572
1573```
1574OH_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 )
1575```
1576
1577**描述:**
1578
1579执行模型推理。
1580
1581**参数:**
1582
1583| 名称    | 描述                                 |
1584| ------- | ------------------------------------ |
1585| model   | 模型对象指针。                       |
1586| inputs  | 模型输入对应的张量数组结构体。       |
1587| outputs | 模型输出对应的张量数组结构体的指针。 |
1588| before  | 模型推理前执行的回调函数。           |
1589| after   | 模型推理后执行的回调函数。           |
1590
1591**返回:**
1592
1593枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。
1594
1595
1596### OH_AI_ModelResize()
1597
1598
1599```
1600OH_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 )
1601```
1602
1603**描述:**
1604
1605调整已编译模型的输入形状。
1606
1607**参数:**
1608
1609| 名称           | 描述                                                         |
1610| -------------- | ------------------------------------------------------------ |
1611| model          | 模型对象指针。                                               |
1612| inputs         | 模型输入对应的张量数组结构体。                               |
1613| shape_infos    | 输入形状信息数组,按模型输入顺序排列的由形状信息组成的数组,模型会按顺序依次调整张量形状。 |
1614| shape_info_num | 形状信息数组的长度。                                         |
1615
1616**返回:**
1617
1618枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。
1619
1620
1621### OH_AI_TensorClone()
1622
1623
1624```
1625OH_AI_API OH_AI_TensorHandle OH_AI_TensorClone (OH_AI_TensorHandle tensor)
1626```
1627
1628**描述:**
1629
1630深拷贝一个张量。
1631
1632**参数:**
1633
1634| 名称   | 描述               |
1635| ------ | ------------------ |
1636| tensor | 待拷贝张量的指针。 |
1637
1638**返回:**
1639
1640指向新张量对象句柄。
1641
1642
1643### OH_AI_TensorCreate()
1644
1645
1646```
1647OH_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 )
1648```
1649
1650**描述:**
1651
1652创建一个张量对象。
1653
1654**参数:**
1655
1656| 名称      | 描述               |
1657| --------- | ------------------ |
1658| name      | 张量名称           |
1659| type      | 张量的数据类型     |
1660| shape     | 张量的维度数组。   |
1661| shape_num | 张量维度数组长度。 |
1662| data      | 指向数据的指针。   |
1663| data_len  | 数据的长度。       |
1664
1665**返回:**
1666
1667指向张量对象句柄。
1668
1669
1670### OH_AI_TensorDestroy()
1671
1672
1673```
1674OH_AI_API void OH_AI_TensorDestroy (OH_AI_TensorHandle * tensor)
1675```
1676
1677**描述:**
1678
1679释放张量对象。
1680
1681**参数:**
1682
1683| 名称   | 描述                     |
1684| ------ | ------------------------ |
1685| tensor | 指向张量句柄的二级指针。 |
1686
1687
1688### OH_AI_TensorGetData()
1689
1690
1691```
1692OH_AI_API const void* OH_AI_TensorGetData (const OH_AI_TensorHandle tensor)
1693```
1694
1695**描述:**
1696
1697获取张量数据的指针。
1698
1699**参数:**
1700
1701| 名称   | 描述           |
1702| ------ | -------------- |
1703| tensor | 张量对象句柄。 |
1704
1705**返回:**
1706
1707张量数据的指针。
1708
1709
1710### OH_AI_TensorGetDataSize()
1711
1712
1713```
1714OH_AI_API size_t OH_AI_TensorGetDataSize (const OH_AI_TensorHandle tensor)
1715```
1716
1717**描述:**
1718
1719获取张量中的数据的字节数大小。
1720
1721**参数:**
1722
1723| 名称   | 描述           |
1724| ------ | -------------- |
1725| tensor | 张量对象句柄。 |
1726
1727**返回:**
1728
1729张量数据的字节数大小。
1730
1731
1732### OH_AI_TensorGetDataType()
1733
1734
1735```
1736OH_AI_API OH_AI_DataType OH_AI_TensorGetDataType (const OH_AI_TensorHandle tensor)
1737```
1738
1739**描述:**
1740
1741获取张量类型。
1742
1743**参数:**
1744
1745| 名称   | 描述           |
1746| ------ | -------------- |
1747| tensor | 张量对象句柄。 |
1748
1749**返回:**
1750
1751张量的数据类型。
1752
1753
1754### OH_AI_TensorGetElementNum()
1755
1756
1757```
1758OH_AI_API int64_t OH_AI_TensorGetElementNum (const OH_AI_TensorHandle tensor)
1759```
1760
1761**描述:**
1762
1763获取张量元素数量。
1764
1765**参数:**
1766
1767| 名称   | 描述           |
1768| ------ | -------------- |
1769| tensor | 张量对象句柄。 |
1770
1771**返回:**
1772
1773张量的元素数量。
1774
1775
1776### OH_AI_TensorGetFormat()
1777
1778
1779```
1780OH_AI_API OH_AI_Format OH_AI_TensorGetFormat (const OH_AI_TensorHandle tensor)
1781```
1782
1783**描述:**
1784
1785获取张量数据的排列方式。
1786
1787**参数:**
1788
1789| 名称   | 描述           |
1790| ------ | -------------- |
1791| tensor | 张量对象句柄。 |
1792
1793**返回:**
1794
1795张量数据的排列方式。
1796
1797
1798### OH_AI_TensorGetMutableData()
1799
1800
1801```
1802OH_AI_API void* OH_AI_TensorGetMutableData (const OH_AI_TensorHandle tensor)
1803```
1804
1805**描述:**
1806
1807获取可变的张量数据指针。如果数据为空则会开辟内存。
1808
1809**参数:**
1810
1811| 名称   | 描述           |
1812| ------ | -------------- |
1813| tensor | 张量对象句柄。 |
1814
1815**返回:**
1816
1817张量数据的指针。
1818
1819
1820### OH_AI_TensorGetName()
1821
1822
1823```
1824OH_AI_API const char* OH_AI_TensorGetName (const OH_AI_TensorHandle tensor)
1825```
1826
1827**描述:**
1828
1829获取张量的名称。
1830
1831**参数:**
1832
1833| 名称   | 描述           |
1834| ------ | -------------- |
1835| tensor | 张量对象句柄。 |
1836
1837**返回:**
1838
1839张量的名称。
1840
1841
1842### OH_AI_TensorGetShape()
1843
1844
1845```
1846OH_AI_API const int64_t* OH_AI_TensorGetShape (const OH_AI_TensorHandle tensor, size_t * shape_num )
1847```
1848
1849**描述:**
1850
1851获取张量的形状。
1852
1853**参数:**
1854
1855| 名称      | 描述                                           |
1856| --------- | ---------------------------------------------- |
1857| tensor    | 张量对象句柄。                                 |
1858| shape_num | 该参数是输出参数,形状数组的长度会写入该变量。 |
1859
1860**返回:**
1861
1862形状数组。
1863
1864
1865### OH_AI_TensorSetData()
1866
1867
1868```
1869OH_AI_API void OH_AI_TensorSetData (OH_AI_TensorHandle tensor, void * data )
1870```
1871
1872**描述:**
1873
1874设置张量的数据。
1875
1876**参数:**
1877
1878| 名称   | 描述             |
1879| ------ | ---------------- |
1880| tensor | 张量对象句柄。   |
1881| data   | 指向数据的指针。 |
1882
1883
1884### OH_AI_TensorSetDataType()
1885
1886
1887```
1888OH_AI_API void OH_AI_TensorSetDataType (OH_AI_TensorHandle tensor, OH_AI_DataType type )
1889```
1890
1891**描述:**
1892
1893设置张量的数据类型。
1894
1895**参数:**
1896
1897| 名称   | 描述                                                |
1898| ------ | --------------------------------------------------- |
1899| tensor | 张量对象句柄。                                      |
1900| type   | 数据类型,具体见[OH_AI_DataType](#oh_ai_datatype)。 |
1901
1902
1903### OH_AI_TensorSetFormat()
1904
1905
1906```
1907OH_AI_API void OH_AI_TensorSetFormat (OH_AI_TensorHandle tensor, OH_AI_Format format )
1908```
1909
1910**描述:**
1911
1912设置张量数据的排列方式。
1913
1914**参数:**
1915
1916| 名称   | 描述               |
1917| ------ | ------------------ |
1918| tensor | 张量对象句柄。     |
1919| format | 张量数据排列方式。 |
1920
1921
1922### OH_AI_TensorSetName()
1923
1924
1925```
1926OH_AI_API void OH_AI_TensorSetName (OH_AI_TensorHandle tensor, const char *name )
1927```
1928
1929**描述:**
1930
1931设置张量的名称。
1932
1933**参数:**
1934
1935| 名称   | 描述           |
1936| ------ | -------------- |
1937| tensor | 张量对象句柄。 |
1938| name   | 张量名称。     |
1939
1940
1941### OH_AI_TensorSetShape()
1942
1943
1944```
1945OH_AI_API void OH_AI_TensorSetShape (OH_AI_TensorHandle tensor, const int64_t * shape, size_t shape_num )
1946```
1947
1948**描述:**
1949
1950设置张量的形状。
1951
1952**参数:**
1953
1954| 名称      | 描述               |
1955| --------- | ------------------ |
1956| tensor    | 张量对象句柄。     |
1957| shape     | 形状数组。         |
1958| shape_num | 张量形状数组长度。 |
1959
1960
1961### OH_AI_TensorSetUserData()
1962
1963```
1964OH_AI_API OH_AI_Status OH_AI_TensorSetUserData (OH_AI_TensorHandle tensor, void * data, size_t data_size )
1965```
1966
1967**描述:**
1968
1969设置张量为用户自行管理的数据。
1970
1971此接口常用于复用用户数据作为模型输入,可减少一次数据拷贝。
1972
1973注意:此数据对于张量来说是外部数据,张量销毁时不会主动释放,由调用者负责释放。另外,在此张量使用过程中,调用者须确保此数据有效。
1974
1975**参数:**
1976
1977| 名称 | 描述 |
1978| -------- | -------- |
1979| tensor | 张量对象句柄。 |
1980| data | 用户数据首地址。 |
1981| data_size | 用户数据长度。 |
1982
1983**返回:**
1984
1985执行状态码。若成功返回OH_AI_STATUS_SUCCESS,否则返回具体错误码。
1986
1987**起始版本:**
1988
198910
1990
1991
1992### OH_AI_DeviceInfoAddExtension()
1993
1994```
1995OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension (OH_AI_DeviceInfoHandle device_info, const char * name, const char * value, size_t value_size )
1996```
1997
1998**描述:**
1999
2000向设备信息中添加键/值对形式的扩展配置。只对NNRT设备信息有效。
2001
2002注意:当前仅支持{"CachePath": "YourCachePath"},{"CacheVersion": "YouCacheVersion"}, {"QuantParam": "YourQuantConfig"} 三种键值对配置,用户根据使用情况替换具体的值。
2003
2004**参数:**
2005
2006| 名称 | 描述 |
2007| -------- | -------- |
2008| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 |
2009| name | 单个扩展项的键,格式为C字符串。 |
2010| value | 单个扩展项的值内容首地址。 |
2011| value_size | 单个扩展项的值内容长度。 |
2012
2013**返回:**
2014
2015**OH_AI_Status** 执行状态码,若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。
2016
2017**起始版本:**
2018
201910
2020
2021
2022### OH_AI_GetElementOfNNRTDeviceDescs()
2023
2024```
2025OH_AI_API NNRTDeviceDesc* OH_AI_GetElementOfNNRTDeviceDescs (NNRTDeviceDesc * descs, size_t index )
2026```
2027
2028**描述:**
2029
2030获取NNRT设备描述信息数组中的元素指针。
2031
2032**参数:**
2033
2034| 名称 | 描述 |
2035| -------- | -------- |
2036| descs | NNRT设备描述信息数组。 |
2037| index | 数组元素索引。 |
2038
2039**返回:**
2040
2041NNRT设备描述信息类型指针。
2042
2043**起始版本:**
2044
204510
2046