1# MindSpore 2 3 4提供MindSpore Lite的模型推理相关接口。 5 6 7@Syscap SystemCapability.Ai.MindSpore 8 9 10**起始版本:** 11 129 13 14 15## 汇总 16 17 18### 文件 19 20| 文件名称 | 描述 | 21| -------- | -------- | 22| [context.h](context_8h.md) | 提供了Context相关的接口,可以配置运行时信息。<br>引用文件:\<mindspore/context.h> | 23| [data_type.h](data__type_8h.md) | 声明了张量的数据的类型。<br>引用文件:\<mindspore/data_type.h> | 24| [format.h](format_8h.md) | 提供张量数据的排列格式。<br>引用文件:\<mindspore/format.h> | 25| [model.h](model_8h.md) | 提供了模型相关接口,可以用于模型创建、模型推理等。<br>引用文件:\<mindspore/model.h> | 26| [status.h](status_8h.md) | 提供了Mindspore Lite运行时的状态码。<br>引用文件:\<mindspore/status.h> | 27| [tensor.h](tensor_8h.md) | 提供了张量相关的接口,可用于创建和修改张量信息。<br>引用文件:\<mindspore/tensor.h> | 28| [types.h](types_8h.md) | 提供了MindSpore Lite支持的模型文件类型和设备类型。<br>引用文件:\<mindspore/types.h> | 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 | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。 | 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-1) | MSTensor保存的数据支持的类型。 | 54| [OH_AI_Format](#oh_ai_format-1) | 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)) (const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs, const OH_AI_CallBackParam kernel_Info) | 回调函数指针。 | 60| [OH_AI_Status](#oh_ai_status-1) | Minspore的状态码。 | 61| [OH_AI_TensorHandle](#oh_ai_tensorhandle) | 指向张量对象句柄。 | 62| [OH_AI_ModelType](#oh_ai_modeltype-1) | 模型文件的类型。 | 63| [OH_AI_DeviceType](#oh_ai_devicetype-1) | 设备类型,该信息。 | 64 65 66### 枚举 67 68| 枚举名称 | 描述 | 69| -------- | -------- | 70| [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 } | MSTensor保存的数据支持的类型。 | 71| [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 } | MSTensor保存的数据支持的排列格式。 | 72| [OH_AI_CompCode](#oh_ai_compcode) {<br/>OH_AI_COMPCODE_CORE = 0x00000000u,<br/>OH_AI_COMPCODE_LITE = 0xF0000000u } | Minspore不同组件的代码、 | 73| [OH_AI_Status](#oh_ai_status-1) {<br/>OH_AI_STATUS_SUCCESS = 0,<br/>OH_AI_STATUS_CORE_FAILED = OH_AI_COMPCODE_CORE \| 0x1, <br/>OH_AI_STATUS_LITE_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -1), <br/>OH_AI_STATUS_LITE_NULLPTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -2),<br/>OH_AI_STATUS_LITE_PARAM_INVALID = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -3),<br/>OH_AI_STATUS_LITE_NO_CHANGE = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -4),<br/>OH_AI_STATUS_LITE_SUCCESS_EXIT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -5),<br/>OH_AI_STATUS_LITE_MEMORY_FAILED = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -6),<br/>OH_AI_STATUS_LITE_NOT_SUPPORT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -7),<br/>OH_AI_STATUS_LITE_THREADPOOL_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -8),<br/>OH_AI_STATUS_LITE_UNINITIALIZED_OBJ = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -9),<br/>OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE, <br/>OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR,<br/>OH_AI_STATUS_LITE_REENTRANT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -102),<br/>OH_AI_STATUS_LITE_GRAPH_FILE_ERROR,<br/>OH_AI_STATUS_LITE_NOT_FIND_OP = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -300), OH_AI_STATUS_LITE_INVALID_OP_NAME = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -301),<br/>OH_AI_STATUS_LITE_INVALID_OP_ATTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -302),<br/>OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE,<br/>OH_AI_STATUS_LITE_FORMAT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -400),<br/>OH_AI_STATUS_LITE_INFER_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -500),<br/>OH_AI_STATUS_LITE_INFER_INVALID = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -501),<br/>OH_AI_STATUS_LITE_INPUT_PARAM_INVALID } | Minspore的状态码。 | 74| [OH_AI_ModelType](#oh_ai_modeltype-1) {<br/>OH_AI_MODELTYPE_MINDIR = 0,<br/>OH_AI_MODELTYPE_INVALID = 0xFFFFFFFF } | 模型文件的类型。 | 75| [OH_AI_DeviceType](#oh_ai_devicetype-1) {<br/>OH_AI_DEVICETYPE_CPU = 0,<br/>OH_AI_DEVICETYPE_KIRIN_GPU,<br/>OH_AI_DEVICETYPE_KIRIN_NPU,<br/>OH_AI_DEVICETYPE_NNRT = 60,<br/>OH_AI_DEVICETYPE_INVALID = 100 } | 设备类型信息,包含了目前支持的设备类型。 | 76 77 78### 函数 79 80| 函数名称 | 描述 | 81| -------- | -------- | 82| [OH_AI_ContextCreate](#oh_ai_contextcreate) () | 创建一个上下文的对象。 | 83| [OH_AI_ContextDestroy](#oh_ai_contextdestroy) (OH_AI_ContextHandle \*context) | 释放上下文对象。 | 84| [OH_AI_ContextSetThreadNum](#oh_ai_contextsetthreadnum) (OH_AI_ContextHandle context, int32_t thread_num) | 设置运行时的线程数量。 | 85| [OH_AI_ContextGetThreadNum](#oh_ai_contextgetthreadnum) (const OH_AI_ContextHandle context) | 获取线程数量。 | 86| [OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode) (OH_AI_ContextHandle context, int mode) | 设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。 | 87| [OH_AI_ContextGetThreadAffinityMode](#oh_ai_contextgetthreadaffinitymode) (const OH_AI_ContextHandle context) | 获取运行时线程绑定CPU核心的策略。 | 88| [OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist) (OH_AI_ContextHandle context, const int32_t \*core_list, <br/>size_t core_num) | 设置运行时线程绑定CPU核心的列表。 | 89| [OH_AI_ContextGetThreadAffinityCoreList](#oh_ai_contextgetthreadaffinitycorelist) (const OH_AI_ContextHandle context, size_t \*core_num) | 获取CPU绑核列表。 | 90| [OH_AI_ContextSetEnableParallel](#oh_ai_contextsetenableparallel) (OH_AI_ContextHandle context, bool is_parallel) | 设置运行时是否支持并行。 | 91| [OH_AI_ContextGetEnableParallel](#oh_ai_contextgetenableparallel) (const OH_AI_ContextHandle context) | 获取是否支持算子间并行。 | 92| [OH_AI_ContextAddDeviceInfo](#oh_ai_contextadddeviceinfo) (OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info) | 添加运行设备信息。 | 93| [OH_AI_DeviceInfoCreate](#oh_ai_deviceinfocreate) (OH_AI_DeviceType device_type) | 创建一个设备信息对象。 | 94| [OH_AI_DeviceInfoDestroy](#oh_ai_deviceinfodestroy) (OH_AI_DeviceInfoHandle \*device_info) | 释放设备信息实例。 | 95| [OH_AI_DeviceInfoSetProvider](#oh_ai_deviceinfosetprovider) (OH_AI_DeviceInfoHandle device_info, const char \*provider) | 设置供应商的名称。 | 96| [OH_AI_DeviceInfoGetProvider](#oh_ai_deviceinfogetprovider) (const OH_AI_DeviceInfoHandle device_info) | 获取生产商的名称。 | 97| [OH_AI_DeviceInfoSetProviderDevice](#oh_ai_deviceinfosetproviderdevice) (OH_AI_DeviceInfoHandle device_info, const char \*device) | 设置生产商设备的名称。 | 98| [OH_AI_DeviceInfoGetProviderDevice](#oh_ai_deviceinfogetproviderdevice) (const OH_AI_DeviceInfoHandle device_info) | 获取生产商设备的名称。 | 99| [OH_AI_DeviceInfoGetDeviceType](#oh_ai_deviceinfogetdevicetype) (const OH_AI_DeviceInfoHandle device_info) | 获取设备的类型。 | 100| [OH_AI_DeviceInfoSetEnableFP16](#oh_ai_deviceinfosetenablefp16) (OH_AI_DeviceInfoHandle device_info, bool is_fp16) | 设置是否开启float16推理模式,仅CPU/GPU设备可用。 | 101| [OH_AI_DeviceInfoGetEnableFP16](#oh_ai_deviceinfogetenablefp16) (const OH_AI_DeviceInfoHandle device_info) | 获取是否开启float16推理模式, 仅CPU/GPU设备可用。 | 102| [OH_AI_DeviceInfoSetFrequency](#oh_ai_deviceinfosetfrequency) (OH_AI_DeviceInfoHandle device_info, int frequency) | 设置NPU的频率,仅NPU设备可用。 | 103| [OH_AI_DeviceInfoGetFrequency](#oh_ai_deviceinfogetfrequency) (const OH_AI_DeviceInfoHandle device_info) | 获取NPU的频率类型,仅NPU设备可用。 | 104| [OH_AI_ModelCreate](#oh_ai_modelcreate) () | 创建一个模型对象。 | 105| [OH_AI_ModelDestroy](#oh_ai_modeldestroy) (OH_AI_ModelHandle \*model) | 释放一个模型对象。 | 106| [OH_AI_ModelBuild](#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) | 从内存缓冲区加载并编译MindSpore模型。 | 107| [OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile) (OH_AI_ModelHandle model, const char \*model_path, <br/>OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context) | 通过模型文件加载并编译MindSpore模型。 | 108| [OH_AI_ModelResize](#oh_ai_modelresize) (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs, OH_AI_ShapeInfo \*shape_infos, size_t shape_info_num) | 调整已编译模型的输入形状。 | 109| [OH_AI_ModelPredict](#oh_ai_modelpredict) (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs, OH_AI_TensorHandleArray \*outputs, const OH_AI_KernelCallBack before, <br/>const OH_AI_KernelCallBack after) | 执行模型推理。 | 110| [OH_AI_ModelGetInputs](#oh_ai_modelgetinputs) (const OH_AI_ModelHandle model) | 获取模型的输入张量数组结构体。 | 111| [OH_AI_ModelGetOutputs](#oh_ai_modelgetoutputs) (const OH_AI_ModelHandle model) | 获取模型的输出张量数组结构体。 | 112| [OH_AI_ModelGetInputByTensorName](#oh_ai_modelgetinputbytensorname) (const OH_AI_ModelHandle model, const char \*tensor_name) | 通过张量名获取模型的输入张量。 | 113| [OH_AI_ModelGetOutputByTensorName](#oh_ai_modelgetoutputbytensorname) (const OH_AI_ModelHandle model, const char \*tensor_name) | 通过张量名获取模型的输出张量。 | 114| [OH_AI_TensorCreate](#oh_ai_tensorcreate) (const char \*name, OH_AI_DataType type, const int64_t \*shape, <br/>size_t shape_num, const void \*data, size_t data_len) | 创建一个张量对象。 | 115| [OH_AI_TensorDestroy](#oh_ai_tensordestroy) (OH_AI_TensorHandle \*tensor) | 释放张量对象。 | 116| [OH_AI_TensorClone](#oh_ai_tensorclone) (OH_AI_TensorHandle tensor) | 深拷贝一个张量。 | 117| [OH_AI_TensorSetName](#oh_ai_tensorsetname) (OH_AI_TensorHandle tensor, const char \*name) | 设置张量的名称。 | 118| [OH_AI_TensorGetName](#oh_ai_tensorgetname) (const OH_AI_TensorHandle tensor) | 获取张量的名称。 | 119| [OH_AI_TensorSetDataType](#oh_ai_tensorsetdatatype) (OH_AI_TensorHandle tensor, OH_AI_DataType type) | 设置张量的数据类型。 | 120| [OH_AI_TensorGetDataType](#oh_ai_tensorgetdatatype) (const OH_AI_TensorHandle tensor) | 获取张量类型。 | 121| [OH_AI_TensorSetShape](#oh_ai_tensorsetshape) (OH_AI_TensorHandle tensor, const int64_t \*shape, size_t shape_num) | 设置张量的形状。 | 122| [OH_AI_TensorGetShape](#oh_ai_tensorgetshape) (const OH_AI_TensorHandle tensor, size_t \*shape_num) | 获取张量的形状。 | 123| [OH_AI_TensorSetFormat](#oh_ai_tensorsetformat) (OH_AI_TensorHandle tensor, OH_AI_Format format) | 设置张量数据的排列方式。 | 124| [OH_AI_TensorGetFormat](#oh_ai_tensorgetformat) (const OH_AI_TensorHandle tensor) | 获取张量数据的排列方式。 | 125| [OH_AI_TensorSetData](#oh_ai_tensorsetdata) (OH_AI_TensorHandle tensor, void \*data) | 设置张量的数据。 | 126| [OH_AI_TensorGetData](#oh_ai_tensorgetdata) (const OH_AI_TensorHandle tensor) | 获取张量数据的指针。 | 127| [OH_AI_TensorGetMutableData](#oh_ai_tensorgetmutabledata) (const OH_AI_TensorHandle tensor) | 获取可变的张量数据指针。如果数据为空则会开辟内存。 | 128| [OH_AI_TensorGetElementNum](#oh_ai_tensorgetelementnum) (const OH_AI_TensorHandle tensor) | 获取张量元素数量。 | 129| [OH_AI_TensorGetDataSize](#oh_ai_tensorgetdatasize) (const OH_AI_TensorHandle tensor) | 获取张量中的数据的字节数大小。 | 130 131 132## **宏定义说明** 133 134 135### OH_AI_MAX_SHAPE_NUM 136 137 138``` 139#define OH_AI_MAX_SHAPE_NUM 32 140``` 141 142**描述:** 143 144维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。 145 146 147## **类型定义说明** 148 149 150### OH_AI_CallBackParam 151 152 153``` 154typedef struct OH_AI_CallBackParam OH_AI_CallBackParam 155``` 156 157**描述:** 158 159回调函数中传入的算子信息。 160 161 162### OH_AI_ContextHandle 163 164 165``` 166typedef void* OH_AI_ContextHandle 167``` 168 169**描述:** 170 171Mindspore的上下文信息的指针,该指针会指向Context。 172 173 174### OH_AI_DataType 175 176 177``` 178typedef enum OH_AI_DataType OH_AI_DataType 179``` 180 181**描述:** 182 183MSTensor保存的数据支持的类型。 184 185 186### OH_AI_DeviceInfoHandle 187 188 189``` 190typedef void* OH_AI_DeviceInfoHandle 191``` 192 193**描述:** 194 195Mindspore的运行设备信息的指针。 196 197 198### OH_AI_DeviceType 199 200 201``` 202typedef enum OH_AI_DeviceType OH_AI_DeviceType 203``` 204 205**描述:** 206 207设备类型信息,包含了目前支持的设备类型。 208 209 210### OH_AI_Format 211 212 213``` 214typedef enum OH_AI_Format OH_AI_Format 215``` 216 217**描述:** 218 219MSTensor保存的数据支持的排列格式。 220 221 222### OH_AI_KernelCallBack 223 224 225``` 226typedef bool(* OH_AI_KernelCallBack) (const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs, const OH_AI_CallBackParam kernel_Info) 227``` 228 229**描述:** 230 231回调函数指针。 232 233该函数指针是用于设置[OH_AI_ModelPredict](#oh_ai_modelpredict)函数参数中的两个回调函数。 该指针指向的函数需要包含三个参数,其中inputs和outputs对应了算子的输入和输出张量,kernel_Info表示当前算子的信息。 可以通过回调函数监控算子执行的情况,例如统计算子的执行时间,校验算子的正确性等等。 234 235 236### OH_AI_ModelHandle 237 238 239``` 240typedef void* OH_AI_ModelHandle 241``` 242 243**描述:** 244 245指向模型对象的指针。 246 247 248### OH_AI_ModelType 249 250 251``` 252typedef enum OH_AI_ModelType OH_AI_ModelType 253``` 254 255**描述:** 256 257模型文件的类型 258 259 260### OH_AI_Status 261 262 263``` 264typedef enum OH_AI_Status OH_AI_Status 265``` 266 267**描述:** 268 269Minspore的状态码。 270 271 272### OH_AI_TensorHandle 273 274 275``` 276typedef void* OH_AI_TensorHandle 277``` 278 279**描述:** 280 281指向张量对象句柄。 282 283 284### OH_AI_TensorHandleArray 285 286 287``` 288typedef struct OH_AI_TensorHandleArray OH_AI_TensorHandleArray 289``` 290 291**描述:** 292 293张量数组结构体,用于存储张量数组指针和张量数组长度。 294 295 296## **枚举类型说明** 297 298 299### OH_AI_CompCode 300 301 302``` 303enum OH_AI_CompCode 304``` 305 306**描述:** 307 308Minspore不同组件的代码。 309 310| 枚举值 | 描述 | 311| -------- | -------- | 312| OH_AI_COMPCODE_CORE | Minspore Core的代码。 | 313| OH_AI_COMPCODE_LITE | Minspore Lite的代码。 | 314 315 316### OH_AI_DataType 317 318 319``` 320enum OH_AI_DataType 321``` 322 323**描述:** 324 325MSTensor保存的数据支持的类型。 326 327| 枚举值 | 描述 | 328| -------- | -------- | 329| OH_AI_DATATYPE_UNKNOWN | 未知的数据类型。 | 330| OH_AI_DATATYPE_OBJECTTYPE_STRING | String数据类型。 | 331| OH_AI_DATATYPE_OBJECTTYPE_LIST | List数据类型。 | 332| OH_AI_DATATYPE_OBJECTTYPE_TUPLE | Tuple数据类型。 | 333| OH_AI_DATATYPE_OBJECTTYPE_TENSOR | TensorList数据类型。 | 334| OH_AI_DATATYPE_NUMBERTYPE_BEGIN | Number类型的起始。 | 335| OH_AI_DATATYPE_NUMBERTYPE_BOOL | Bool数据类型。 | 336| OH_AI_DATATYPE_NUMBERTYPE_INT8 | Int8数据类型。 | 337| OH_AI_DATATYPE_NUMBERTYPE_INT16 | 表示Int16数据类型。 | 338| OH_AI_DATATYPE_NUMBERTYPE_INT32 | 表示Int32数据类型。 | 339| OH_AI_DATATYPE_NUMBERTYPE_INT64 | 表示Int64数据类型。 | 340| OH_AI_DATATYPE_NUMBERTYPE_UINT8 | 表示UInt8数据类型。 | 341| OH_AI_DATATYPE_NUMBERTYPE_UINT16 | 表示UInt16数据类型。 | 342| OH_AI_DATATYPE_NUMBERTYPE_UINT32 | 表示UInt32数据类型。 | 343| OH_AI_DATATYPE_NUMBERTYPE_UINT64 | 表示UInt64数据类型。 | 344| OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 | 表示Float16数据类型。 | 345| OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 | 表示Float32数据类型。 | 346| OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 | 表示Float64数据类型。 | 347| OH_AI_DATATYPE_NUMBERTYPE_END | 表示Number类型的结尾。 | 348| OH_AI_DataTypeInvalid | 表示无效的数据类型。 | 349 350 351### OH_AI_DeviceType 352 353 354``` 355enum OH_AI_DeviceType 356``` 357 358**描述:** 359 360设备类型信息,包含了目前支持的设备类型。 361 362| 枚举值 | 描述 | 363| -------- | -------- | 364| OH_AI_DEVICETYPE_CPU | 设备类型是CPU。 | 365| OH_AI_DEVICETYPE_GPU | 设备类型是GPU。预留选项,暂不支持。 | 366| OH_AI_DEVICETYPE_KIRIN_NPU | 设备类型是麒麟NPU。预留选项,暂不支持。 | 367| OH_AI_DEVICETYPE_NNRT | 设备类型是NNRt。OHOS设备范围是[60,80)。 | 368| OH_AI_DEVICETYPE_INVALID | 设备类型无效。 | 369 370 371### OH_AI_Format 372 373 374``` 375enum OH_AI_Format 376``` 377 378**描述:** 379 380MSTensor保存的数据支持的排列格式。 381 382| 枚举值 | 描述 | 383| -------- | -------- | 384| OH_AI_FORMAT_NCHW | 表示NCHW排列。 | 385| OH_AI_FORMAT_NHWC | 表示NHWC排列。 | 386| OH_AI_FORMAT_NHWC4 | 表示NHWC4排列。 | 387| OH_AI_FORMAT_HWKC | 表示HWKC排列。 | 388| OH_AI_FORMAT_HWCK | 表示HWCK排列。 | 389| OH_AI_FORMAT_KCHW | 表示KCHW排列。 | 390| OH_AI_FORMAT_CKHW | 表示CKHW排列。 | 391| OH_AI_FORMAT_KHWC | 表示KHWC排列。 | 392| OH_AI_FORMAT_CHWK | 表示CHWK排列。 | 393| OH_AI_FORMAT_HW | 表示HW排列。 | 394| OH_AI_FORMAT_HW4 | 表示HW4排列。 | 395| OH_AI_FORMAT_NC | 表示NC排列。 | 396| OH_AI_FORMAT_NC4 | 表示NC4排列。 | 397| OH_AI_FORMAT_NC4HW4 | 表示NC4HW4排列。 | 398| OH_AI_FORMAT_NCDHW | 表示NCDHW排列。 | 399| OH_AI_FORMAT_NWC | 表示NWC排列。 | 400| OH_AI_FORMAT_NCW | 表示NCW排列。 | 401 402 403### OH_AI_ModelType 404 405 406``` 407enum OH_AI_ModelType 408``` 409 410**描述:** 411 412模型文件的类型。 413 414| 枚举值 | 描述 | 415| -------- | -------- | 416| OH_AI_MODELTYPE_MINDIR | 模型类型是MindIR。 | 417| OH_AI_MODELTYPE_INVALID | 模型类型无效。 | 418 419 420### OH_AI_Status 421 422 423``` 424enum OH_AI_Status 425``` 426 427**描述:** 428 429Minspore的状态码。 430 431| 枚举值 | 描述 | 432| -------- | -------- | 433| OH_AI_STATUS_SUCCESS | 通用的成功状态码。 | 434| OH_AI_STATUS_CORE_FAILED | Mindspore Core 失败状态码。 | 435| OH_AI_STATUS_LITE_ERROR | Mindspore Lite 异常状态码。 | 436| OH_AI_STATUS_LITE_NULLPTR | Mindspore Lite 空指针状态码。 | 437| OH_AI_STATUS_LITE_PARAM_INVALID | Mindspore Lite 参数异常状态码。 | 438| OH_AI_STATUS_LITE_NO_CHANGE | Mindspore Lite 未改变状态码。 | 439| OH_AI_STATUS_LITE_SUCCESS_EXIT | Mindspore Lite 没有错误但是退出的状态码。 | 440| OH_AI_STATUS_LITE_MEMORY_FAILED | Mindspore Lite 内存分配失败的状态码。 | 441| OH_AI_STATUS_LITE_NOT_SUPPORT | Mindspore Lite 功能未支持的状态码。 | 442| OH_AI_STATUS_LITE_THREADPOOL_ERROR | Mindspore Lite 线程池异常状态码。 | 443| OH_AI_STATUS_LITE_UNINITIALIZED_OBJ | Mindspore Lite 未初始化状态码。 | 444| OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE | Mindspore Lite 张量溢出错误的状态码。 | 445| OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR | Mindspore Lite 输入张量异常的状态码。 | 446| OH_AI_STATUS_LITE_REENTRANT_ERROR | Mindspore Lite 重入异常的状态码。 | 447| OH_AI_STATUS_LITE_GRAPH_FILE_ERROR | Mindspore Lite 文件异常状态码。 | 448| OH_AI_STATUS_LITE_NOT_FIND_OP | Mindspore Lite 未找到算子的状态码。 | 449| OH_AI_STATUS_LITE_INVALID_OP_NAME | Mindspore Lite 无效算子状态码。 | 450| OH_AI_STATUS_LITE_INVALID_OP_ATTR | Mindspore Lite 无效算子超参数状态码。 | 451| OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE | Mindspore Lite 算子执行失败的状态码。 | 452| OH_AI_STATUS_LITE_FORMAT_ERROR | Mindspore Lite 张量格式异常状态码。 | 453| OH_AI_STATUS_LITE_INFER_ERROR | Mindspore Lite 形状推理异常状态码。 | 454| OH_AI_STATUS_LITE_INFER_INVALID | Mindspore Lite 无效的形状推理的状态码。 | 455| OH_AI_STATUS_LITE_INPUT_PARAM_INVALID | Mindspore Lite 用户输入的参数无效状态码。 | 456 457 458## **函数说明** 459 460 461### OH_AI_ContextAddDeviceInfo() 462 463 464``` 465OH_AI_API void OH_AI_ContextAddDeviceInfo (OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info ) 466``` 467 468**描述:** 469 470添加运行设备信息。 471 472**参数:** 473 474| 名称 | 描述 | 475| -------- | -------- | 476| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 477| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 478 479 480### OH_AI_ContextCreate() 481 482 483``` 484OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate () 485``` 486 487**描述:** 488 489创建一个上下文的对象。 490 491**返回:** 492 493指向上下文信息的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 494 495 496### OH_AI_ContextDestroy() 497 498 499``` 500OH_AI_API void OH_AI_ContextDestroy (OH_AI_ContextHandle * context) 501``` 502 503**描述:** 504 505释放上下文对象。 506 507**参数:** 508 509| 名称 | 描述 | 510| -------- | -------- | 511| context | 指向[OH_AI_ContextHandle](#oh_ai_contexthandle)的二级指针,上下文销毁后会对context置为空指针。 | 512 513 514### OH_AI_ContextGetEnableParallel() 515 516 517``` 518OH_AI_API bool OH_AI_ContextGetEnableParallel (const OH_AI_ContextHandle context) 519``` 520 521**描述:** 522 523获取是否支持算子间并行。 524 525**参数:** 526 527| 名称 | 描述 | 528| -------- | -------- | 529| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 530 531**返回:** 532 533是否支持并行。true 为支持并行, false 为不支持并行。 534 535 536### OH_AI_ContextGetThreadAffinityCoreList() 537 538 539``` 540OH_AI_API const int32_t* OH_AI_ContextGetThreadAffinityCoreList (const OH_AI_ContextHandle context, size_t * core_num ) 541``` 542 543**描述:** 544 545获取CPU绑核列表。 546 547**参数:** 548 549| 名称 | 描述 | 550| -------- | -------- | 551| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 552| core_num | 该参数是输出参数,表示核的数量。 | 553 554**返回:** 555 556CPU绑核列表。 557 558 559### OH_AI_ContextGetThreadAffinityMode() 560 561 562``` 563OH_AI_API int OH_AI_ContextGetThreadAffinityMode (const OH_AI_ContextHandle context) 564``` 565 566**描述:** 567 568获取运行时线程绑定CPU核心的策略。 569 570**参数:** 571 572| 名称 | 描述 | 573| -------- | -------- | 574| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 575 576**返回:** 577 578绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为小核优先。 579 580 581### OH_AI_ContextGetThreadNum() 582 583 584``` 585OH_AI_API int32_t OH_AI_ContextGetThreadNum (const OH_AI_ContextHandle context) 586``` 587 588**描述:** 589 590获取线程数量。 591 592**参数:** 593 594| 名称 | 描述 | 595| -------- | -------- | 596| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 597 598**返回:** 599 600当前的线程数量。 601 602 603### OH_AI_ContextSetEnableParallel() 604 605 606``` 607OH_AI_API void OH_AI_ContextSetEnableParallel (OH_AI_ContextHandle context, bool is_parallel ) 608``` 609 610**描述:** 611 612设置运行时是否支持并行。 613 614**参数:** 615 616| 名称 | 描述 | 617| -------- | -------- | 618| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 619| is_parallel | 是否支持并行。true 为支持并行, false 为不支持并行。 | 620 621 622### OH_AI_ContextSetThreadAffinityCoreList() 623 624 625``` 626OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList (OH_AI_ContextHandle context, const int32_t * core_list, size_t core_num ) 627``` 628 629**描述:** 630 631设置运行时线程绑定CPU核心的列表。 632 633例如:当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参数不生效。 634 635**参数:** 636 637| 名称 | 描述 | 638| -------- | -------- | 639| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 640| core_list | CPU绑核的列表。 | 641| core_num | 核的数量,它就代表**core_list**的长度。 | 642 643 644### OH_AI_ContextSetThreadAffinityMode() 645 646 647``` 648OH_AI_API void OH_AI_ContextSetThreadAffinityMode (OH_AI_ContextHandle context, int mode ) 649``` 650 651**描述:** 652 653设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。 654 655**参数:** 656 657| 名称 | 描述 | 658| -------- | -------- | 659| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 660| mode | 绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为中核优先。 | 661 662 663### OH_AI_ContextSetThreadNum() 664 665 666``` 667OH_AI_API void OH_AI_ContextSetThreadNum (OH_AI_ContextHandle context, int32_t thread_num ) 668``` 669 670**描述:** 671 672设置运行时的线程数量。 673 674**参数:** 675 676| 名称 | 描述 | 677| -------- | -------- | 678| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle) | 679| thread_num | 运行时的线程数量。 | 680 681 682### OH_AI_DeviceInfoCreate() 683 684 685``` 686OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate (OH_AI_DeviceType device_type) 687``` 688 689**描述:** 690 691创建一个设备信息对象。 692 693**参数:** 694 695| 名称 | 描述 | 696| -------- | -------- | 697| device_type | 设备类型, 具体见[OH_AI_DeviceType](#oh_ai_devicetype-1)。 | 698 699**返回:** 700 701指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 702 703 704### OH_AI_DeviceInfoDestroy() 705 706 707``` 708OH_AI_API void OH_AI_DeviceInfoDestroy (OH_AI_DeviceInfoHandle * device_info) 709``` 710 711**描述:** 712 713释放设备信息实例。 714 715**参数:** 716 717| 名称 | 描述 | 718| -------- | -------- | 719| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 720 721 722### OH_AI_DeviceInfoGetDeviceType() 723 724 725``` 726OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType (const OH_AI_DeviceInfoHandle device_info) 727``` 728 729**描述:** 730 731获取设备的类型。 732 733**参数:** 734 735| 名称 | 描述 | 736| -------- | -------- | 737| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 738 739**返回:** 740 741生产商设备类型。 742 743 744### OH_AI_DeviceInfoGetEnableFP16() 745 746 747``` 748OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16 (const OH_AI_DeviceInfoHandle device_info) 749``` 750 751**描述:** 752 753获取是否开启float16推理模式, 仅CPU/GPU设备可用。 754 755**参数:** 756 757| 名称 | 描述 | 758| -------- | -------- | 759| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 760 761**返回:** 762 763设置是否开启float16推理模式。 764 765 766### OH_AI_DeviceInfoGetFrequency() 767 768 769``` 770OH_AI_API int OH_AI_DeviceInfoGetFrequency (const OH_AI_DeviceInfoHandle device_info) 771``` 772 773**描述:** 774 775获取NPU的频率类型,仅NPU设备可用。 776 777**参数:** 778 779| 名称 | 描述 | 780| -------- | -------- | 781| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 782 783**返回:** 784 785NPU的频率类型。取值范围为0-4,1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 786 787 788### OH_AI_DeviceInfoGetProvider() 789 790 791``` 792OH_AI_API const char* OH_AI_DeviceInfoGetProvider (const OH_AI_DeviceInfoHandle device_info) 793``` 794 795**描述:** 796 797获取生产商的名称。 798 799**参数:** 800 801| 名称 | 描述 | 802| -------- | -------- | 803| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 804 805**返回:** 806 807生产商的名称。 808 809 810### OH_AI_DeviceInfoGetProviderDevice() 811 812 813``` 814OH_AI_API const char* OH_AI_DeviceInfoGetProviderDevice (const OH_AI_DeviceInfoHandle device_info) 815``` 816 817**描述:** 818 819获取生产商设备的名称。 820 821**参数:** 822 823| 名称 | 描述 | 824| -------- | -------- | 825| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 826 827**返回:** 828 829生产商设备的名称。 830 831 832### OH_AI_DeviceInfoSetEnableFP16() 833 834 835``` 836OH_AI_API void OH_AI_DeviceInfoSetEnableFP16 (OH_AI_DeviceInfoHandle device_info, bool is_fp16 ) 837``` 838 839**描述:** 840 841设置是否开启float16推理模式,仅CPU/GPU设备可用。 842 843**参数:** 844 845| 名称 | 描述 | 846| -------- | -------- | 847| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 848| is_fp16 | 是否开启float16推理模式。 | 849 850 851### OH_AI_DeviceInfoSetFrequency() 852 853 854``` 855OH_AI_API void OH_AI_DeviceInfoSetFrequency (OH_AI_DeviceInfoHandle device_info, int frequency ) 856``` 857 858**描述:** 859 860设置NPU的频率,仅NPU设备可用。 861 862**参数:** 863 864| 名称 | 描述 | 865| -------- | -------- | 866| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 867| frequency | 频率类型,取值范围为0-4,默认是3。1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 | 868 869 870### OH_AI_DeviceInfoSetProvider() 871 872 873``` 874OH_AI_API void OH_AI_DeviceInfoSetProvider (OH_AI_DeviceInfoHandle device_info, const char * provider ) 875``` 876 877**描述:** 878 879设置供应商的名称。 880 881**参数:** 882 883| 名称 | 描述 | 884| -------- | -------- | 885| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 886| provider | 供应商的名称。 | 887 888 889### OH_AI_DeviceInfoSetProviderDevice() 890 891 892``` 893OH_AI_API void OH_AI_DeviceInfoSetProviderDevice (OH_AI_DeviceInfoHandle device_info, const char * device ) 894``` 895 896**描述:** 897 898设置生产商设备的名称。 899 900**参数:** 901 902| 名称 | 描述 | 903| -------- | -------- | 904| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 905| device | 生产商设备名称。 例如: CPU。 | 906 907 908### OH_AI_ModelBuild() 909 910 911``` 912OH_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 ) 913``` 914 915**描述:** 916 917从内存缓冲区加载并编译MindSpore模型。 918注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)或者[OH_AI_ModelBuild](#oh_ai_modelbuild)一次,如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 919 920**参数:** 921 922| 名称 | 描述 | 923| -------- | -------- | 924| model | 模型对象指针。 | 925| model_data | 内存中已经加载的模型数据地址。 | 926| data_size | 模型数据的长度。 | 927| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype-1)。 | 928| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 929 930**返回:** 931 932枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。 933 934 935### OH_AI_ModelBuildFromFile() 936 937 938``` 939OH_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 ) 940``` 941 942**描述:** 943 944通过模型文件加载并编译MindSpore模型。 945注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)或者[OH_AI_ModelBuild](#oh_ai_modelbuild)一次,如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 946 947**参数:** 948 949| 名称 | 描述 | 950| -------- | -------- | 951| model | 模型对象指针。 | 952| model_path | 模型文件路径。 | 953| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype-1)。 | 954| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 955 956**返回:** 957 958枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。 959 960 961### OH_AI_ModelCreate() 962 963 964``` 965OH_AI_API OH_AI_ModelHandle OH_AI_ModelCreate () 966``` 967 968**描述:** 969 970创建一个模型对象。 971 972**返回:** 973 974模型对象指针。 975 976 977### OH_AI_ModelDestroy() 978 979 980``` 981OH_AI_API void OH_AI_ModelDestroy (OH_AI_ModelHandle * model) 982``` 983 984**描述:** 985 986释放一个模型对象。 987 988**参数:** 989 990| 名称 | 描述 | 991| -------- | -------- | 992| model | 模型对象指针。 | 993 994 995### OH_AI_ModelGetInputByTensorName() 996 997 998``` 999OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetInputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name ) 1000``` 1001 1002**描述:** 1003 1004通过张量名获取模型的输入张量。 1005 1006**参数:** 1007 1008| 名称 | 描述 | 1009| -------- | -------- | 1010| model | 模型对象指针。 | 1011| tensor_name | 张量名称。 | 1012 1013**返回:** 1014 1015tensor_name所对应的输入张量的张量指针,如果输入中没有该张量则返回空。 1016 1017 1018### OH_AI_ModelGetInputs() 1019 1020 1021``` 1022OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetInputs (const OH_AI_ModelHandle model) 1023``` 1024 1025**描述:** 1026 1027获取模型的输入张量数组结构体。 1028 1029**参数:** 1030 1031| 名称 | 描述 | 1032| -------- | -------- | 1033| model | 模型对象指针。 | 1034 1035**返回:** 1036 1037模型输入对应的张量数组结构体。 1038 1039 1040### OH_AI_ModelGetOutputByTensorName() 1041 1042 1043``` 1044OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetOutputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name ) 1045``` 1046 1047**描述:** 1048 1049通过张量名获取模型的输出张量。 1050 1051**参数:** 1052 1053| 名称 | 描述 | 1054| -------- | -------- | 1055| model | 模型对象指针。 | 1056| tensor_名称 | 张量名称。 | 1057 1058**返回:** 1059 1060tensor_name所对应的输入张量的张量指针,如果输出中没有该张量则返回空。 1061 1062 1063### OH_AI_ModelGetOutputs() 1064 1065 1066``` 1067OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetOutputs (const OH_AI_ModelHandle model) 1068``` 1069 1070**描述:** 1071 1072获取模型的输出张量数组结构体。 1073 1074**参数:** 1075 1076| 名称 | 描述 | 1077| -------- | -------- | 1078| model | 模型对象指针。 | 1079 1080**返回:** 1081 1082模型输出对应的张量数组结构体。 1083 1084 1085### OH_AI_ModelPredict() 1086 1087 1088``` 1089OH_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 ) 1090``` 1091 1092**描述:** 1093 1094执行模型推理。 1095 1096**参数:** 1097 1098| 名称 | 描述 | 1099| -------- | -------- | 1100| model | 模型对象指针。 | 1101| inputs | 模型输入对应的张量数组结构体。 | 1102| outputs | 模型输出对应的张量数组结构体的指针。 | 1103| before | 模型推理前执行的回调函数。 | 1104| after | 模型推理后执行的回调函数。 | 1105 1106**返回:** 1107 1108枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1109 1110 1111### OH_AI_ModelResize() 1112 1113 1114``` 1115OH_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 ) 1116``` 1117 1118**描述:** 1119 1120调整已编译模型的输入形状。 1121 1122**参数:** 1123 1124| 名称 | 描述 | 1125| -------- | -------- | 1126| model | 模型对象指针。 | 1127| inputs | 模型输入对应的张量数组结构体。 | 1128| shape_infos | 输入形状信息数组,按模型输入顺序排列的由形状信息组成的数组,模型会按顺序依次调整张量形状。 | 1129| shape_info_num | 形状信息数组的长度。 | 1130 1131**返回:** 1132 1133枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1134 1135 1136### OH_AI_TensorClone() 1137 1138 1139``` 1140OH_AI_API OH_AI_TensorHandle OH_AI_TensorClone (OH_AI_TensorHandle tensor) 1141``` 1142 1143**描述:** 1144 1145深拷贝一个张量。 1146 1147**参数:** 1148 1149| 名称 | 描述 | 1150| -------- | -------- | 1151| tensor | 待拷贝张量的指针。 | 1152 1153**返回:** 1154 1155指向新张量对象句柄。 1156 1157 1158### OH_AI_TensorCreate() 1159 1160 1161``` 1162OH_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 ) 1163``` 1164 1165**描述:** 1166 1167创建一个张量对象。 1168 1169**参数:** 1170 1171| 名称 | 描述 | 1172| -------- | -------- | 1173| 名称 | 张量名称 | 1174| type | 张量的数据类型 | 1175| shape | 张量的维度数组。 | 1176| shape_num | 张量维度数组长度。 | 1177| data | 指向数据的指针。 | 1178| data_len | 数据的长度。 | 1179 1180**返回:** 1181 1182指向张量对象句柄。 1183 1184 1185### OH_AI_TensorDestroy() 1186 1187 1188``` 1189OH_AI_API void OH_AI_TensorDestroy (OH_AI_TensorHandle * tensor) 1190``` 1191 1192**描述:** 1193 1194释放张量对象。 1195 1196**参数:** 1197 1198| 名称 | 描述 | 1199| -------- | -------- | 1200| tensor | 指向张量句柄的二级指针。 | 1201 1202 1203### OH_AI_TensorGetData() 1204 1205 1206``` 1207OH_AI_API const void* OH_AI_TensorGetData (const OH_AI_TensorHandle tensor) 1208``` 1209 1210**描述:** 1211 1212获取张量数据的指针。 1213 1214**参数:** 1215 1216| 名称 | 描述 | 1217| -------- | -------- | 1218| tensor | 张量对象句柄。 | 1219 1220**返回:** 1221 1222张量数据的指针。 1223 1224 1225### OH_AI_TensorGetDataSize() 1226 1227 1228``` 1229OH_AI_API size_t OH_AI_TensorGetDataSize (const OH_AI_TensorHandle tensor) 1230``` 1231 1232**描述:** 1233 1234获取张量中的数据的字节数大小。 1235 1236**参数:** 1237 1238| 名称 | 描述 | 1239| -------- | -------- | 1240| tensor | 张量对象句柄。 | 1241 1242**返回:** 1243 1244张量数据的字节数大小。 1245 1246 1247### OH_AI_TensorGetDataType() 1248 1249 1250``` 1251OH_AI_API OH_AI_DataType OH_AI_TensorGetDataType (const OH_AI_TensorHandle tensor) 1252``` 1253 1254**描述:** 1255 1256获取张量类型。 1257 1258**参数:** 1259 1260| 名称 | 描述 | 1261| -------- | -------- | 1262| tensor | 张量对象句柄。 | 1263 1264**返回:** 1265 1266张量的数据类型。 1267 1268 1269### OH_AI_TensorGetElementNum() 1270 1271 1272``` 1273OH_AI_API int64_t OH_AI_TensorGetElementNum (const OH_AI_TensorHandle tensor) 1274``` 1275 1276**描述:** 1277 1278获取张量元素数量。 1279 1280**参数:** 1281 1282| 名称 | 描述 | 1283| -------- | -------- | 1284| tensor | 张量对象句柄。 | 1285 1286**返回:** 1287 1288张量的元素数量。 1289 1290 1291### OH_AI_TensorGetFormat() 1292 1293 1294``` 1295OH_AI_API OH_AI_Format OH_AI_TensorGetFormat (const OH_AI_TensorHandle tensor) 1296``` 1297 1298**描述:** 1299 1300获取张量数据的排列方式。 1301 1302**参数:** 1303 1304| 名称 | 描述 | 1305| -------- | -------- | 1306| tensor | 张量对象句柄。 | 1307 1308**返回:** 1309 1310张量数据的排列方式。 1311 1312 1313### OH_AI_TensorGetMutableData() 1314 1315 1316``` 1317OH_AI_API void* OH_AI_TensorGetMutableData (const OH_AI_TensorHandle tensor) 1318``` 1319 1320**描述:** 1321 1322获取可变的张量数据指针。如果数据为空则会开辟内存。 1323 1324**参数:** 1325 1326| 名称 | 描述 | 1327| -------- | -------- | 1328| tensor | 张量对象句柄。 | 1329 1330**返回:** 1331 1332张量数据的指针。 1333 1334 1335### OH_AI_TensorGetName() 1336 1337 1338``` 1339OH_AI_API const char* OH_AI_TensorGetName (const OH_AI_TensorHandle tensor) 1340``` 1341 1342**描述:** 1343 1344获取张量的名称。 1345 1346**参数:** 1347 1348| 名称 | 描述 | 1349| -------- | -------- | 1350| tensor | 张量对象句柄。 | 1351 1352**返回:** 1353 1354张量的名称。 1355 1356 1357### OH_AI_TensorGetShape() 1358 1359 1360``` 1361OH_AI_API const int64_t* OH_AI_TensorGetShape (const OH_AI_TensorHandle tensor, size_t * shape_num ) 1362``` 1363 1364**描述:** 1365 1366获取张量的形状。 1367 1368**参数:** 1369 1370| 名称 | 描述 | 1371| -------- | -------- | 1372| tensor | 张量对象句柄。 | 1373| shape_num | 该参数是输出参数,形状数组的长度会写入该变量。 | 1374 1375**返回:** 1376 1377形状数组。 1378 1379 1380### OH_AI_TensorSetData() 1381 1382 1383``` 1384OH_AI_API void OH_AI_TensorSetData (OH_AI_TensorHandle tensor, void * data ) 1385``` 1386 1387**描述:** 1388 1389设置张量的数据。 1390 1391**参数:** 1392 1393| 名称 | 描述 | 1394| -------- | -------- | 1395| tensor | 张量对象句柄。 | 1396| data | 指向数据的指针。 | 1397 1398 1399### OH_AI_TensorSetDataType() 1400 1401 1402``` 1403OH_AI_API void OH_AI_TensorSetDataType (OH_AI_TensorHandle tensor, OH_AI_DataType type ) 1404``` 1405 1406**描述:** 1407 1408设置张量的数据类型。 1409 1410**参数:** 1411 1412| 名称 | 描述 | 1413| -------- | -------- | 1414| tensor | 张量对象句柄。 | 1415| type | 数据类型,具体见[OH_AI_DataType](#oh_ai_datatype-1)。 | 1416 1417 1418### OH_AI_TensorSetFormat() 1419 1420 1421``` 1422OH_AI_API void OH_AI_TensorSetFormat (OH_AI_TensorHandle tensor, OH_AI_Format format ) 1423``` 1424 1425**描述:** 1426 1427设置张量数据的排列方式。 1428 1429**参数:** 1430 1431| 名称 | 描述 | 1432| -------- | -------- | 1433| tensor | 张量对象句柄。 | 1434| format | 张量数据排列方式。 | 1435 1436 1437### OH_AI_TensorSetName() 1438 1439 1440``` 1441OH_AI_API void OH_AI_TensorSetName (OH_AI_TensorHandle tensor, const char *name ) 1442``` 1443 1444**描述:** 1445 1446设置张量的名称。 1447 1448**参数:** 1449 1450| 名称 | 描述 | 1451| -------- | -------- | 1452| tensor | 张量对象句柄。 | 1453| 名称 | 张量名称。 | 1454 1455 1456### OH_AI_TensorSetShape() 1457 1458 1459``` 1460OH_AI_API void OH_AI_TensorSetShape (OH_AI_TensorHandle tensor, const int64_t * shape, size_t shape_num ) 1461``` 1462 1463**描述:** 1464 1465设置张量的形状。 1466 1467**参数:** 1468 1469| 名称 | 描述 | 1470| -------- | -------- | 1471| tensor | 张量对象句柄。 | 1472| shape | 形状数组。 | 1473| shape_num | 张量形状数组长度。 | 1474