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_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 & -1), OH_AI_STATUS_LITE_NULLPTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -2),<br/>OH_AI_STATUS_LITE_PARAM_INVALID = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -3), OH_AI_STATUS_LITE_NO_CHANGE = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -4), OH_AI_STATUS_LITE_SUCCESS_EXIT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -5), 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), OH_AI_STATUS_LITE_THREADPOOL_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -8), OH_AI_STATUS_LITE_UNINITIALIZED_OBJ = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -9), OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -100),<br/>OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR, OH_AI_STATUS_LITE_REENTRANT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -102), OH_AI_STATUS_LITE_GRAPH_FILE_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -200), OH_AI_STATUS_LITE_NOT_FIND_OP = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -300),<br/>OH_AI_STATUS_LITE_INVALID_OP_NAME = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -301), OH_AI_STATUS_LITE_INVALID_OP_ATTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -302), OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE, 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), 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_LITE | Minspore Lite的代码。 | 400 401 402### OH_AI_DataType 403 404 405``` 406enum OH_AI_DataType 407``` 408 409**描述:** 410 411MSTensor保存的数据支持的类型。 412 413| 枚举值 | 描述 | 414| --------------------------------- | ---------------------- | 415| OH_AI_DATATYPE_UNKNOWN | 未知的数据类型。 | 416| OH_AI_DATATYPE_OBJECTTYPE_STRING | String数据类型。 | 417| OH_AI_DATATYPE_OBJECTTYPE_LIST | List数据类型。 | 418| OH_AI_DATATYPE_OBJECTTYPE_TUPLE | Tuple数据类型。 | 419| OH_AI_DATATYPE_OBJECTTYPE_TENSOR | TensorList数据类型。 | 420| OH_AI_DATATYPE_NUMBERTYPE_BEGIN | Number类型的起始。 | 421| OH_AI_DATATYPE_NUMBERTYPE_BOOL | Bool数据类型。 | 422| OH_AI_DATATYPE_NUMBERTYPE_INT8 | Int8数据类型。 | 423| OH_AI_DATATYPE_NUMBERTYPE_INT16 | 表示Int16数据类型。 | 424| OH_AI_DATATYPE_NUMBERTYPE_INT32 | 表示Int32数据类型。 | 425| OH_AI_DATATYPE_NUMBERTYPE_INT64 | 表示Int64数据类型。 | 426| OH_AI_DATATYPE_NUMBERTYPE_UINT8 | 表示UInt8数据类型。 | 427| OH_AI_DATATYPE_NUMBERTYPE_UINT16 | 表示UInt16数据类型。 | 428| OH_AI_DATATYPE_NUMBERTYPE_UINT32 | 表示UInt32数据类型。 | 429| OH_AI_DATATYPE_NUMBERTYPE_UINT64 | 表示UInt64数据类型。 | 430| OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 | 表示Float16数据类型。 | 431| OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 | 表示Float32数据类型。 | 432| OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 | 表示Float64数据类型。 | 433| OH_AI_DATATYPE_NUMBERTYPE_END | 表示Number类型的结尾。 | 434| OH_AI_DataTypeInvalid | 表示无效的数据类型。 | 435 436 437### OH_AI_DeviceType 438 439 440``` 441enum OH_AI_DeviceType 442``` 443 444**描述:** 445 446设备类型信息,包含了目前支持的设备类型。 447 448| 枚举值 | 描述 | 449| -------------------------- | --------------------------------------- | 450| OH_AI_DEVICETYPE_CPU | 设备类型是CPU。 | 451| OH_AI_DEVICETYPE_GPU | 设备类型是GPU。预留选项, 暂不支持。 | 452| OH_AI_DEVICETYPE_KIRIN_NPU | 设备类型是麒麟NPU。预留选项,暂不支持。 | 453| OH_AI_DEVICETYPE_NNRT | 设备类型是NNRt。OHOS设备范围是[60,80)。 | 454| OH_AI_DEVICETYPE_INVALID | 设备类型无效。 | 455 456 457### OH_AI_Format 458 459 460``` 461enum OH_AI_Format 462``` 463 464**描述:** 465 466MSTensor保存的数据支持的排列格式。 467 468| 枚举值 | 描述 | 469| ------------------- | ---------------- | 470| OH_AI_FORMAT_NCHW | 按批次N、通道C、高度H和宽度W的顺序存储张量数据。 | 471| OH_AI_FORMAT_NHWC | 按批次N、高度H、宽度W和通道C的顺序存储张量数据。 | 472| OH_AI_FORMAT_NHWC4 | 按批次N、高度H、宽度W和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。 | 473| OH_AI_FORMAT_HWKC | 按高度H、宽度W、核数K和通道C的顺序存储张量数据。 | 474| OH_AI_FORMAT_HWCK | 按高度H、宽度W、通道C和核数K的顺序存储张量数据。 | 475| OH_AI_FORMAT_KCHW | 按核数K、通道C、高度H和宽度W的顺序存储张量数据。 | 476| OH_AI_FORMAT_CKHW | 按通道C、核数K、高度H和宽度W的顺序存储张量数据。 | 477| OH_AI_FORMAT_KHWC | 按核数K、高度H、宽度W和通道C的顺序存储张量数据。 | 478| OH_AI_FORMAT_CHWK | 按通道C、高度H、宽度W和核数K的顺序存储张量数据。 | 479| OH_AI_FORMAT_HW | 按高度H和宽度W的顺序存储张量数据。 | 480| OH_AI_FORMAT_HW4 | 按高度H和宽度W的顺序存储张量数据,其中W轴是4字节对齐格式。 | 481| OH_AI_FORMAT_NC | 按批次N和通道C的顺序存储张量数据。 | 482| OH_AI_FORMAT_NC4 | 按批次N和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。 | 483| OH_AI_FORMAT_NC4HW4 | 按批次N、通道C、高度H和宽度W的顺序存储张量数据,其中C轴和W轴是4字节对齐格式。 | 484| OH_AI_FORMAT_NCDHW | 按批次N、通道C、深度D、高度H和宽度W的顺序存储张量数据。 | 485| OH_AI_FORMAT_NWC | 按批次N、宽度W和通道C的顺序存储张量数据。 | 486| OH_AI_FORMAT_NCW | 按批次N、通道C和宽度W的顺序存储张量数据。 | 487 488 489### OH_AI_ModelType 490 491 492``` 493enum OH_AI_ModelType 494``` 495 496**描述:** 497 498模型文件的类型。 499 500| 枚举值 | 描述 | 501| ----------------------- | ------------------ | 502| OH_AI_MODELTYPE_MINDIR | 模型类型是MindIR,对应的模型文件后缀为.ms。 | 503| OH_AI_MODELTYPE_INVALID | 模型类型无效。 | 504 505 506### OH_AI_NNRTDeviceType 507 508 509``` 510enum OH_AI_NNRTDeviceType 511``` 512 513**描述:** 514 515NNRT管理的硬件设备类型。 516 517**起始版本**: 518 51910 520 521| 枚举值 | 描述 | 522| ---------------------------- | ----------------------------------- | 523| OH_AI_NNRTDEVICE_OTHERS | 设备类型不属于以下3种,则属于其它。 | 524| OH_AI_NNRTDEVICE_CPU | CPU设备。 | 525| OH_AI_NNRTDEVICE_GPU | GPU设备。 | 526| OH_AI_NNRTDEVICE_ACCELERATOR | 特定的加速设备。 | 527 528 529### OH_AI_PerformanceMode 530 531 532``` 533enum OH_AI_PerformanceMode 534``` 535 536**描述:** 537 538NNRT硬件的工作性能模式。 539 540**起始版本**: 541 54210 543 544| 枚举值 | 描述 | 545| ------------------------- | ------------------- | 546| OH_AI_PERFORMANCE_NONE | 无特殊设置。 | 547| OH_AI_PERFORMANCE_LOW | 低功耗模式。 | 548| OH_AI_PERFORMANCE_MEDIUM | 功耗-性能均衡模式。 | 549| OH_AI_PERFORMANCE_HIGH | 高性能模式。 | 550| OH_AI_PERFORMANCE_EXTREME | 极致性能模式。 | 551 552 553### OH_AI_Priority 554 555 556``` 557enum OH_AI_Priority 558``` 559 560**描述:** 561 562NNRT推理任务优先级。 563 564**起始版本**: 565 56610 567 568| 枚举值 | 描述 | 569| --------------------- | -------------- | 570| OH_AI_PRIORITY_NONE | 无优先级偏好。 | 571| OH_AI_PRIORITY_LOW | 低优先级任务。 | 572| OH_AI_PRIORITY_MEDIUM | 中优先级任务。 | 573| OH_AI_PRIORITY_HIGH | 高优先级。 | 574 575 576### OH_AI_Status 577 578 579``` 580enum OH_AI_Status 581``` 582 583**描述:** 584 585Minspore的状态码。 586 587| 枚举值 | 描述 | 588| ------------------------------------- | ----------------------------------------- | 589| OH_AI_STATUS_SUCCESS | 通用的成功状态码。 | 590| OH_AI_STATUS_CORE_FAILED | Mindspore Core 失败状态码。 | 591| OH_AI_STATUS_LITE_ERROR | Mindspore Lite 异常状态码。 | 592| OH_AI_STATUS_LITE_NULLPTR | Mindspore Lite 空指针状态码。 | 593| OH_AI_STATUS_LITE_PARAM_INVALID | Mindspore Lite 参数异常状态码。 | 594| OH_AI_STATUS_LITE_NO_CHANGE | Mindspore Lite 未改变状态码。 | 595| OH_AI_STATUS_LITE_SUCCESS_EXIT | Mindspore Lite 没有错误但是退出的状态码。 | 596| OH_AI_STATUS_LITE_MEMORY_FAILED | Mindspore Lite 内存分配失败的状态码。 | 597| OH_AI_STATUS_LITE_NOT_SUPPORT | Mindspore Lite 功能未支持的状态码。 | 598| OH_AI_STATUS_LITE_THREADPOOL_ERROR | Mindspore Lite 线程池异常状态码。 | 599| OH_AI_STATUS_LITE_UNINITIALIZED_OBJ | Mindspore Lite 未初始化状态码。 | 600| OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE | Mindspore Lite 张量溢出错误的状态码。 | 601| OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR | Mindspore Lite 输入张量异常的状态码。 | 602| OH_AI_STATUS_LITE_REENTRANT_ERROR | Mindspore Lite 重入异常的状态码。 | 603| OH_AI_STATUS_LITE_GRAPH_FILE_ERROR | Mindspore Lite 文件异常状态码。 | 604| OH_AI_STATUS_LITE_NOT_FIND_OP | Mindspore Lite 未找到算子的状态码。 | 605| OH_AI_STATUS_LITE_INVALID_OP_NAME | Mindspore Lite 无效算子状态码。 | 606| OH_AI_STATUS_LITE_INVALID_OP_ATTR | Mindspore Lite 无效算子超参数状态码。 | 607| OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE | Mindspore Lite 算子执行失败的状态码。 | 608| OH_AI_STATUS_LITE_FORMAT_ERROR | Mindspore Lite 张量格式异常状态码。 | 609| OH_AI_STATUS_LITE_INFER_ERROR | Mindspore Lite 形状推理异常状态码。 | 610| OH_AI_STATUS_LITE_INFER_INVALID | Mindspore Lite 无效的形状推理的状态码。 | 611| OH_AI_STATUS_LITE_INPUT_PARAM_INVALID | Mindspore Lite 用户输入的参数无效状态码。 | 612 613## 函数说明 614 615 616### OH_AI_ContextAddDeviceInfo() 617 618 619``` 620OH_AI_API void OH_AI_ContextAddDeviceInfo (OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info ) 621``` 622 623**描述:** 624 625将一个用户定义的运行设备信息附加到推理上下文中。 626 627**参数:** 628 629| 名称 | 描述 | 630| ----------- | ------------------------------------------------------------ | 631| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 632| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 633 634 635### OH_AI_ContextCreate() 636 637 638``` 639OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate () 640``` 641 642**描述:** 643 644创建一个上下文的对象。 645 646**返回:** 647 648指向上下文信息的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 649 650 651### OH_AI_ContextDestroy() 652 653 654``` 655OH_AI_API void OH_AI_ContextDestroy (OH_AI_ContextHandle * context) 656``` 657 658**描述:** 659 660释放上下文对象。 661 662**参数:** 663 664| 名称 | 描述 | 665| ------- | ------------------------------------------------------------ | 666| context | 指向[OH_AI_ContextHandle](#oh_ai_contexthandle)的二级指针,上下文销毁后会对context置为空指针。 | 667 668 669### OH_AI_ContextGetEnableParallel() 670 671 672``` 673OH_AI_API bool OH_AI_ContextGetEnableParallel (const OH_AI_ContextHandle context) 674``` 675 676**描述:** 677 678获取是否支持算子间并行。 679 680**参数:** 681 682| 名称 | 描述 | 683| ------- | ------------------------------------------------------------ | 684| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 685 686**返回:** 687 688是否支持并行。true 为支持并行, false 为不支持并行。 689 690 691### OH_AI_ContextGetThreadAffinityCoreList() 692 693 694``` 695OH_AI_API const int32_t* OH_AI_ContextGetThreadAffinityCoreList (const OH_AI_ContextHandle context, size_t * core_num ) 696``` 697 698**描述:** 699 700获取CPU绑核列表。 701 702**参数:** 703 704| 名称 | 描述 | 705| -------- | ------------------------------------------------------------ | 706| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 707| core_num | 该参数是输出参数,表示核的数量。 | 708 709**返回:** 710 711CPU绑核列表。此列表对象由[OH_AI_ContextHandle](#oh_ai_contexthandle)管理,调用者无须手动释放。 712 713 714### OH_AI_ContextGetThreadAffinityMode() 715 716 717``` 718OH_AI_API int OH_AI_ContextGetThreadAffinityMode (const OH_AI_ContextHandle context) 719``` 720 721**描述:** 722 723获取运行时线程绑定CPU核心的策略。 724 725**参数:** 726 727| 名称 | 描述 | 728| ------- | ------------------------------------------------------------ | 729| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 730 731**返回:** 732 733绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为中核优先。 734 735 736### OH_AI_ContextGetThreadNum() 737 738 739``` 740OH_AI_API int32_t OH_AI_ContextGetThreadNum (const OH_AI_ContextHandle context) 741``` 742 743**描述:** 744 745获取线程数量。 746 747**参数:** 748 749| 名称 | 描述 | 750| ------- | ------------------------------------------------------------ | 751| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 752 753**返回:** 754 755当前的线程数量。 756 757 758### OH_AI_ContextSetEnableParallel() 759 760 761``` 762OH_AI_API void OH_AI_ContextSetEnableParallel (OH_AI_ContextHandle context, bool is_parallel ) 763``` 764 765**描述:** 766 767设置运行时是否支持并行。此接口特性当前未开启,设置无效。 768 769**参数:** 770 771| 名称 | 描述 | 772| ----------- | ------------------------------------------------------------ | 773| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 774| is_parallel | 是否支持并行。true 为支持并行, false 为不支持并行。 | 775 776 777### OH_AI_ContextSetThreadAffinityCoreList() 778 779 780``` 781OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList (OH_AI_ContextHandle context, const int32_t * core_list, size_t core_num ) 782``` 783 784**描述:** 785 786设置运行时线程绑定CPU核心的列表。 787 788例如:当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参数不生效。 789 790**参数:** 791 792| 名称 | 描述 | 793| --------- | ------------------------------------------------------------ | 794| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 795| core_list | CPU绑核的列表。 | 796| core_num | 核的数量,它就代表**core_list**的长度。 | 797 798 799### OH_AI_ContextSetThreadAffinityMode() 800 801 802``` 803OH_AI_API void OH_AI_ContextSetThreadAffinityMode (OH_AI_ContextHandle context, int mode ) 804``` 805 806**描述:** 807 808设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。 809 810**参数:** 811 812| 名称 | 描述 | 813| ------- | ------------------------------------------------------------ | 814| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 815| mode | 绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为中核优先。 | 816 817 818### OH_AI_ContextSetThreadNum() 819 820 821``` 822OH_AI_API void OH_AI_ContextSetThreadNum (OH_AI_ContextHandle context, int32_t thread_num ) 823``` 824 825**描述:** 826 827设置运行时的线程数量。 828 829**参数:** 830 831| 名称 | 描述 | 832| ---------- | ------------------------------------------------------------ | 833| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle) | 834| thread_num | 运行时的线程数量。 | 835 836 837### OH_AI_CreateNNRTDeviceInfoByName() 838 839 840``` 841OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByName (const char * name) 842``` 843 844**描述:** 845 846查找指定名称的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。 847 848**参数:** 849 850| 名称 | 描述 | 851| ---- | ---------------- | 852| name | 目标NNRT设备名。 | 853 854**返回:** 855 856指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 857 858**起始版本:** 859 86010 861 862 863### OH_AI_CreateNNRTDeviceInfoByType() 864 865 866``` 867OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByType (OH_AI_NNRTDeviceType type) 868``` 869 870**描述:** 871 872查找指定类型的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。 873 874**参数:** 875 876| 名称 | 描述 | 877| ---- | ------------------------------------------------------------ | 878| type | [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) 目标NNRT设备类型。 | 879 880**返回:** 881 882指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 883 884**起始版本:** 885 88610 887 888 889### OH_AI_DestroyAllNNRTDeviceDescs() 890 891 892``` 893OH_AI_API void OH_AI_DestroyAllNNRTDeviceDescs (NNRTDeviceDesc ** desc) 894``` 895 896**描述:** 897 898销毁从[OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs)获取的NNRT描写信息实例数组。 899 900**参数:** 901 902| 名称 | 描述 | 903| ---- | ------------------------------------------------------------ | 904| desc | 指向NNRT设备描述信息实例数组的二重指针。销毁结束,desc指向内容会被置为NULL。 | 905 906**起始版本:** 907 90810 909 910 911### OH_AI_DeviceInfoCreate() 912 913 914``` 915OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate (OH_AI_DeviceType device_type) 916``` 917 918**描述:** 919 920创建一个设备信息对象。 921 922**参数:** 923 924| 名称 | 描述 | 925| ----------- | ------------------------------------------------------- | 926| device_type | 设备类型, 具体见[OH_AI_DeviceType](#oh_ai_devicetype)。 | 927 928**返回:** 929 930指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 931 932 933### OH_AI_DeviceInfoDestroy() 934 935 936``` 937OH_AI_API void OH_AI_DeviceInfoDestroy (OH_AI_DeviceInfoHandle * device_info) 938``` 939 940**描述:** 941 942释放设备信息实例。注意:设备信息实例被添加到context后,无需调用者手动释放。 943 944**参数:** 945 946| 名称 | 描述 | 947| ----------- | ------------------------------------------------------------ | 948| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 949 950 951### OH_AI_DeviceInfoGetDeviceId() 952 953 954``` 955OH_AI_API size_t OH_AI_DeviceInfoGetDeviceId (const OH_AI_DeviceInfoHandle device_info) 956``` 957 958**描述:** 959 960获取NNRT设备ID,仅NNRT设备可用。 961 962**参数:** 963 964| 名称 | 描述 | 965| ----------- | ------------------------------------------------------------ | 966| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 967 968**返回:** 969 970NNRT设备ID。 971 972**起始版本:** 973 97410 975 976 977### OH_AI_DeviceInfoGetDeviceType() 978 979 980``` 981OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType (const OH_AI_DeviceInfoHandle device_info) 982``` 983 984**描述:** 985 986获取设备的类型。 987 988**参数:** 989 990| 名称 | 描述 | 991| ----------- | ------------------------------------------------------------ | 992| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 993 994**返回:** 995 996生产商设备类型。 997 998 999### OH_AI_DeviceInfoGetEnableFP16() 1000 1001 1002``` 1003OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16 (const OH_AI_DeviceInfoHandle device_info) 1004``` 1005 1006**描述:** 1007 1008获取是否开启float16推理模式, 仅CPU/GPU设备可用。 1009 1010**参数:** 1011 1012| 名称 | 描述 | 1013| ----------- | ------------------------------------------------------------ | 1014| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1015 1016**返回:** 1017 1018设置是否开启float16推理模式。 1019 1020 1021### OH_AI_DeviceInfoGetFrequency() 1022 1023 1024``` 1025OH_AI_API int OH_AI_DeviceInfoGetFrequency (const OH_AI_DeviceInfoHandle device_info) 1026``` 1027 1028**描述:** 1029 1030获取NPU的频率类型,仅NPU设备可用。 1031 1032**参数:** 1033 1034| 名称 | 描述 | 1035| ----------- | ------------------------------------------------------------ | 1036| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1037 1038**返回:** 1039 1040NPU的频率类型。取值范围为0-4,1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 1041 1042 1043### OH_AI_DeviceInfoGetPerformanceMode() 1044 1045 1046``` 1047OH_AI_API OH_AI_PerformanceMode OH_AI_DeviceInfoGetPerformanceMode (const OH_AI_DeviceInfoHandle device_info) 1048``` 1049 1050**描述:** 1051 1052获取NNRT性能模式,仅NNRT设备可用。 1053 1054**参数:** 1055 1056| 名称 | 描述 | 1057| ----------- | ------------------------------------------------------------ | 1058| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1059 1060**返回:** 1061 1062[OH_AI_PerformanceMode](#oh_ai_performancemode) NNRT性能模式。 1063 1064**起始版本:** 1065 106610 1067 1068 1069### OH_AI_DeviceInfoGetPriority() 1070 1071 1072``` 1073OH_AI_API OH_AI_Priority OH_AI_DeviceInfoGetPriority (const OH_AI_DeviceInfoHandle device_info) 1074``` 1075 1076**描述:** 1077 1078获取NNRT任务优先级,仅NNRT设备可用。 1079 1080**参数:** 1081 1082| 名称 | 描述 | 1083| ----------- | ------------------------------------------------------------ | 1084| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1085 1086**返回:** 1087 1088[OH_AI_Priority](#oh_ai_priority) NNRT任务优先级。 1089 1090**起始版本:** 1091 109210 1093 1094 1095### OH_AI_DeviceInfoGetProvider() 1096 1097 1098``` 1099OH_AI_API const char* OH_AI_DeviceInfoGetProvider (const OH_AI_DeviceInfoHandle device_info) 1100``` 1101 1102**描述:** 1103 1104获取生产商的名称。 1105 1106**参数:** 1107 1108| 名称 | 描述 | 1109| ----------- | ------------------------------------------------------------ | 1110| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1111 1112**返回:** 1113 1114生产商的名称。 1115 1116 1117### OH_AI_DeviceInfoGetProviderDevice() 1118 1119 1120``` 1121OH_AI_API const char* OH_AI_DeviceInfoGetProviderDevice (const OH_AI_DeviceInfoHandle device_info) 1122``` 1123 1124**描述:** 1125 1126获取生产商设备的名称。 1127 1128**参数:** 1129 1130| 名称 | 描述 | 1131| ----------- | ------------------------------------------------------------ | 1132| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1133 1134**返回:** 1135 1136生产商设备的名称。 1137 1138 1139### OH_AI_DeviceInfoSetDeviceId() 1140 1141 1142``` 1143OH_AI_API void OH_AI_DeviceInfoSetDeviceId (OH_AI_DeviceInfoHandle device_info, size_t device_id ) 1144``` 1145 1146**描述:** 1147 1148设置NNRT设备ID,仅NNRT设备可用。 1149 1150**参数:** 1151 1152| 名称 | 描述 | 1153| ----------- | ------------------------------------------------------------ | 1154| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1155| device_id | NNRT设备ID。 | 1156 1157**起始版本:** 1158 115910 1160 1161 1162### OH_AI_DeviceInfoSetEnableFP16() 1163 1164 1165``` 1166OH_AI_API void OH_AI_DeviceInfoSetEnableFP16 (OH_AI_DeviceInfoHandle device_info, bool is_fp16 ) 1167``` 1168 1169**描述:** 1170 1171设置是否开启float16推理模式,仅CPU/GPU设备可用。 1172 1173**参数:** 1174 1175| 名称 | 描述 | 1176| ----------- | ------------------------------------------------------------ | 1177| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1178| is_fp16 | 是否开启float16推理模式。 | 1179 1180 1181### OH_AI_DeviceInfoSetFrequency() 1182 1183 1184``` 1185OH_AI_API void OH_AI_DeviceInfoSetFrequency (OH_AI_DeviceInfoHandle device_info, int frequency ) 1186``` 1187 1188**描述:** 1189 1190设置NPU的频率,仅NPU设备可用。 1191 1192**参数:** 1193 1194| 名称 | 描述 | 1195| ----------- | ------------------------------------------------------------ | 1196| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1197| frequency | 频率类型,取值范围为0-4,默认是3。1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 | 1198 1199 1200### OH_AI_DeviceInfoSetPerformanceMode() 1201 1202 1203``` 1204OH_AI_API void OH_AI_DeviceInfoSetPerformanceMode (OH_AI_DeviceInfoHandle device_info, OH_AI_PerformanceMode mode ) 1205``` 1206 1207**描述:** 1208 1209设置NNRT性能模式,仅NNRT设备可用。 1210 1211**参数:** 1212 1213| 名称 | 描述 | 1214| ----------- | ------------------------------------------------------------ | 1215| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1216| mode | [OH_AI_PerformanceMode](#oh_ai_performancemode) NNRT性能模式。 | 1217 1218**起始版本**: 1219 122010 1221 1222 1223### OH_AI_DeviceInfoSetPriority() 1224 1225 1226``` 1227OH_AI_API void OH_AI_DeviceInfoSetPriority (OH_AI_DeviceInfoHandle device_info, OH_AI_Priority priority ) 1228``` 1229 1230**描述:** 1231 1232设置NNRT任务优先级,仅NNRT设备可用。 1233 1234**参数:** 1235 1236| 名称 | 描述 | 1237| ----------- | ------------------------------------------------------------ | 1238| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1239| priority | [OH_AI_Priority](#oh_ai_priority) NNRT任务优先级。 | 1240 1241**起始版本:** 1242 124310 1244 1245 1246### OH_AI_DeviceInfoSetProvider() 1247 1248 1249``` 1250OH_AI_API void OH_AI_DeviceInfoSetProvider (OH_AI_DeviceInfoHandle device_info, const char * provider ) 1251``` 1252 1253**描述:** 1254 1255设置供应商的名称。 1256 1257**参数:** 1258 1259| 名称 | 描述 | 1260| ----------- | ------------------------------------------------------------ | 1261| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1262| provider | 供应商的名称。 | 1263 1264 1265### OH_AI_DeviceInfoSetProviderDevice() 1266 1267 1268``` 1269OH_AI_API void OH_AI_DeviceInfoSetProviderDevice (OH_AI_DeviceInfoHandle device_info, const char * device ) 1270``` 1271 1272**描述:** 1273 1274设置生产商设备的名称。 1275 1276**参数:** 1277 1278| 名称 | 描述 | 1279| ----------- | ------------------------------------------------------------ | 1280| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1281| device | 生产商设备名称。例如: CPU。 | 1282 1283 1284### OH_AI_GetAllNNRTDeviceDescs() 1285 1286 1287``` 1288OH_AI_API NNRTDeviceDesc* OH_AI_GetAllNNRTDeviceDescs (size_t * num) 1289``` 1290 1291**描述:** 1292 1293获取系统中所有NNRT硬件设备的描述信息。 1294 1295**参数:** 1296 1297| 名称 | 描述 | 1298| ---- | ------------------------ | 1299| num | 输出参数,返回设备数量。 | 1300 1301**返回:** 1302 1303指向NNRT设备描述信息实例数组的指针。当获取失败时,返回NULL。 1304 1305**起始版本:** 1306 130710 1308 1309 1310### OH_AI_GetDeviceIdFromNNRTDeviceDesc() 1311 1312 1313``` 1314OH_AI_API size_t OH_AI_GetDeviceIdFromNNRTDeviceDesc (const NNRTDeviceDesc * desc) 1315``` 1316 1317**描述:** 1318 1319从特定的NNRT设备描述信息实例获取NNRT设备ID。注意,此ID只对NNRT有效。 1320 1321**参数:** 1322 1323| 名称 | 描述 | 1324| ---- | -------------------------------- | 1325| desc | 指向NNRT设备描述信息实例的指针。 | 1326 1327**返回:** 1328 1329NNRT设备ID。 1330 1331**起始版本:** 1332 133310 1334 1335 1336### OH_AI_GetNameFromNNRTDeviceDesc() 1337 1338 1339``` 1340OH_AI_API const char* OH_AI_GetNameFromNNRTDeviceDesc (const NNRTDeviceDesc * desc) 1341``` 1342 1343**描述:** 1344 1345从特定的NNRT设备描述信息实例获取NNRT设备名称。 1346 1347**参数:** 1348 1349| 名称 | 描述 | 1350| ---- | -------------------------------- | 1351| desc | 指向NNRT设备描述信息实例的指针。 | 1352 1353**返回:** 1354 1355NNRT设备名称,指向一个常量字符串的指针,该常量字符串由desc持有,调用者无需单独释放此指针。 1356 1357**起始版本:** 1358 135910 1360 1361 1362### OH_AI_GetTypeFromNNRTDeviceDesc() 1363 1364 1365``` 1366OH_AI_API OH_AI_NNRTDeviceType OH_AI_GetTypeFromNNRTDeviceDesc (const NNRTDeviceDesc * desc) 1367``` 1368 1369**描述:** 1370 1371从特定的NNRT设备描述信息实例获取NNRT设备类型。 1372 1373**参数:** 1374 1375| 名称 | 描述 | 1376| ---- | -------------------------------- | 1377| desc | 指向NNRT设备描述信息实例的指针。 | 1378 1379**返回:** 1380 1381[OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) NNRT设备类型。 1382 1383**起始版本:** 1384 138510 1386 1387 1388### OH_AI_ModelBuild() 1389 1390 1391``` 1392OH_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 ) 1393``` 1394 1395**描述:** 1396 1397从内存缓冲区加载并编译MindSpore模型。 1398 1399注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuild](#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)一次, 如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 1400 1401**参数:** 1402 1403| 名称 | 描述 | 1404| ------------- | ------------------------------------------------------------ | 1405| model | 模型对象指针。 | 1406| model_data | 内存中已经加载的模型数据地址。 | 1407| data_size | 模型数据的长度。 | 1408| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 | 1409| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 1410 1411**返回:** 1412 1413枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1414 1415 1416### OH_AI_ModelBuildFromFile() 1417 1418 1419``` 1420OH_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 ) 1421``` 1422 1423**描述:** 1424 1425通过模型文件加载并编译MindSpore模型。 1426 1427注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuild](#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)一次, 如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 1428 1429**参数:** 1430 1431| 名称 | 描述 | 1432| ------------- | ------------------------------------------------------------ | 1433| model | 模型对象指针。 | 1434| model_path | 模型文件路径。 | 1435| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 | 1436| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 1437 1438**返回:** 1439 1440枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1441 1442 1443### OH_AI_ModelCreate() 1444 1445 1446``` 1447OH_AI_API OH_AI_ModelHandle OH_AI_ModelCreate () 1448``` 1449 1450**描述:** 1451 1452创建一个模型对象。 1453 1454**返回:** 1455 1456模型对象指针。 1457 1458 1459### OH_AI_ModelDestroy() 1460 1461 1462``` 1463OH_AI_API void OH_AI_ModelDestroy (OH_AI_ModelHandle * model) 1464``` 1465 1466**描述:** 1467 1468释放一个模型对象。 1469 1470**参数:** 1471 1472| 名称 | 描述 | 1473| ----- | -------------- | 1474| model | 模型对象指针。 | 1475 1476 1477### OH_AI_ModelGetInputByTensorName() 1478 1479 1480``` 1481OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetInputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name ) 1482``` 1483 1484**描述:** 1485 1486通过张量名获取模型的输入张量。 1487 1488**参数:** 1489 1490| 名称 | 描述 | 1491| ----------- | -------------- | 1492| model | 模型对象指针。 | 1493| tensor_name | 张量名称。 | 1494 1495**返回:** 1496 1497tensor_name所对应的输入张量的张量指针,如果输入中没有该张量则返回空。 1498 1499 1500### OH_AI_ModelGetInputs() 1501 1502 1503``` 1504OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetInputs (const OH_AI_ModelHandle model) 1505``` 1506 1507**描述:** 1508 1509获取模型的输入张量数组结构体。 1510 1511**参数:** 1512 1513| 名称 | 描述 | 1514| ----- | -------------- | 1515| model | 模型对象指针。 | 1516 1517**返回:** 1518 1519模型输入对应的张量数组结构体。 1520 1521 1522### OH_AI_ModelGetOutputByTensorName() 1523 1524 1525``` 1526OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetOutputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name ) 1527``` 1528 1529**描述:** 1530 1531通过张量名获取模型的输出张量。 1532 1533**参数:** 1534 1535| 名称 | 描述 | 1536| ----------- | -------------- | 1537| model | 模型对象指针。 | 1538| tensor_name | 张量名称。 | 1539 1540**返回:** 1541 1542tensor_name所对应的输入张量的张量指针,如果输出中没有该张量则返回空。 1543 1544 1545### OH_AI_ModelGetOutputs() 1546 1547 1548``` 1549OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetOutputs (const OH_AI_ModelHandle model) 1550``` 1551 1552**描述:** 1553 1554获取模型的输出张量数组结构体。 1555 1556**参数:** 1557 1558| 名称 | 描述 | 1559| ----- | -------------- | 1560| model | 模型对象指针。 | 1561 1562**返回:** 1563 1564模型输出对应的张量数组结构体。 1565 1566 1567### OH_AI_ModelPredict() 1568 1569 1570``` 1571OH_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 ) 1572``` 1573 1574**描述:** 1575 1576执行模型推理。 1577 1578**参数:** 1579 1580| 名称 | 描述 | 1581| ------- | ------------------------------------ | 1582| model | 模型对象指针。 | 1583| inputs | 模型输入对应的张量数组结构体。 | 1584| outputs | 模型输出对应的张量数组结构体的指针。 | 1585| before | 模型推理前执行的回调函数。 | 1586| after | 模型推理后执行的回调函数。 | 1587 1588**返回:** 1589 1590枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1591 1592 1593### OH_AI_ModelResize() 1594 1595 1596``` 1597OH_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 ) 1598``` 1599 1600**描述:** 1601 1602调整已编译模型的输入形状。 1603 1604**参数:** 1605 1606| 名称 | 描述 | 1607| -------------- | ------------------------------------------------------------ | 1608| model | 模型对象指针。 | 1609| inputs | 模型输入对应的张量数组结构体。 | 1610| shape_infos | 输入形状信息数组,按模型输入顺序排列的由形状信息组成的数组,模型会按顺序依次调整张量形状。 | 1611| shape_info_num | 形状信息数组的长度。 | 1612 1613**返回:** 1614 1615枚举类型的状态码[OH_AI_Status](#oh_ai_status-1),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1616 1617 1618### OH_AI_TensorClone() 1619 1620 1621``` 1622OH_AI_API OH_AI_TensorHandle OH_AI_TensorClone (OH_AI_TensorHandle tensor) 1623``` 1624 1625**描述:** 1626 1627深拷贝一个张量。 1628 1629**参数:** 1630 1631| 名称 | 描述 | 1632| ------ | ------------------ | 1633| tensor | 待拷贝张量的指针。 | 1634 1635**返回:** 1636 1637指向新张量对象句柄。 1638 1639 1640### OH_AI_TensorCreate() 1641 1642 1643``` 1644OH_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 ) 1645``` 1646 1647**描述:** 1648 1649创建一个张量对象。 1650 1651**参数:** 1652 1653| 名称 | 描述 | 1654| --------- | ------------------ | 1655| name | 张量名称 | 1656| type | 张量的数据类型 | 1657| shape | 张量的维度数组。 | 1658| shape_num | 张量维度数组长度。 | 1659| data | 指向数据的指针。 | 1660| data_len | 数据的长度。 | 1661 1662**返回:** 1663 1664指向张量对象句柄。 1665 1666 1667### OH_AI_TensorDestroy() 1668 1669 1670``` 1671OH_AI_API void OH_AI_TensorDestroy (OH_AI_TensorHandle * tensor) 1672``` 1673 1674**描述:** 1675 1676释放张量对象。 1677 1678**参数:** 1679 1680| 名称 | 描述 | 1681| ------ | ------------------------ | 1682| tensor | 指向张量句柄的二级指针。 | 1683 1684 1685### OH_AI_TensorGetData() 1686 1687 1688``` 1689OH_AI_API const void* OH_AI_TensorGetData (const OH_AI_TensorHandle tensor) 1690``` 1691 1692**描述:** 1693 1694获取张量数据的指针。 1695 1696**参数:** 1697 1698| 名称 | 描述 | 1699| ------ | -------------- | 1700| tensor | 张量对象句柄。 | 1701 1702**返回:** 1703 1704张量数据的指针。 1705 1706 1707### OH_AI_TensorGetDataSize() 1708 1709 1710``` 1711OH_AI_API size_t OH_AI_TensorGetDataSize (const OH_AI_TensorHandle tensor) 1712``` 1713 1714**描述:** 1715 1716获取张量中的数据的字节数大小。 1717 1718**参数:** 1719 1720| 名称 | 描述 | 1721| ------ | -------------- | 1722| tensor | 张量对象句柄。 | 1723 1724**返回:** 1725 1726张量数据的字节数大小。 1727 1728 1729### OH_AI_TensorGetDataType() 1730 1731 1732``` 1733OH_AI_API OH_AI_DataType OH_AI_TensorGetDataType (const OH_AI_TensorHandle tensor) 1734``` 1735 1736**描述:** 1737 1738获取张量类型。 1739 1740**参数:** 1741 1742| 名称 | 描述 | 1743| ------ | -------------- | 1744| tensor | 张量对象句柄。 | 1745 1746**返回:** 1747 1748张量的数据类型。 1749 1750 1751### OH_AI_TensorGetElementNum() 1752 1753 1754``` 1755OH_AI_API int64_t OH_AI_TensorGetElementNum (const OH_AI_TensorHandle tensor) 1756``` 1757 1758**描述:** 1759 1760获取张量元素数量。 1761 1762**参数:** 1763 1764| 名称 | 描述 | 1765| ------ | -------------- | 1766| tensor | 张量对象句柄。 | 1767 1768**返回:** 1769 1770张量的元素数量。 1771 1772 1773### OH_AI_TensorGetFormat() 1774 1775 1776``` 1777OH_AI_API OH_AI_Format OH_AI_TensorGetFormat (const OH_AI_TensorHandle tensor) 1778``` 1779 1780**描述:** 1781 1782获取张量数据的排列方式。 1783 1784**参数:** 1785 1786| 名称 | 描述 | 1787| ------ | -------------- | 1788| tensor | 张量对象句柄。 | 1789 1790**返回:** 1791 1792张量数据的排列方式。 1793 1794 1795### OH_AI_TensorGetMutableData() 1796 1797 1798``` 1799OH_AI_API void* OH_AI_TensorGetMutableData (const OH_AI_TensorHandle tensor) 1800``` 1801 1802**描述:** 1803 1804获取可变的张量数据指针。如果数据为空则会开辟内存。 1805 1806**参数:** 1807 1808| 名称 | 描述 | 1809| ------ | -------------- | 1810| tensor | 张量对象句柄。 | 1811 1812**返回:** 1813 1814张量数据的指针。 1815 1816 1817### OH_AI_TensorGetName() 1818 1819 1820``` 1821OH_AI_API const char* OH_AI_TensorGetName (const OH_AI_TensorHandle tensor) 1822``` 1823 1824**描述:** 1825 1826获取张量的名称。 1827 1828**参数:** 1829 1830| 名称 | 描述 | 1831| ------ | -------------- | 1832| tensor | 张量对象句柄。 | 1833 1834**返回:** 1835 1836张量的名称。 1837 1838 1839### OH_AI_TensorGetShape() 1840 1841 1842``` 1843OH_AI_API const int64_t* OH_AI_TensorGetShape (const OH_AI_TensorHandle tensor, size_t * shape_num ) 1844``` 1845 1846**描述:** 1847 1848获取张量的形状。 1849 1850**参数:** 1851 1852| 名称 | 描述 | 1853| --------- | ---------------------------------------------- | 1854| tensor | 张量对象句柄。 | 1855| shape_num | 该参数是输出参数,形状数组的长度会写入该变量。 | 1856 1857**返回:** 1858 1859形状数组。 1860 1861 1862### OH_AI_TensorSetData() 1863 1864 1865``` 1866OH_AI_API void OH_AI_TensorSetData (OH_AI_TensorHandle tensor, void * data ) 1867``` 1868 1869**描述:** 1870 1871设置张量的数据。 1872 1873**参数:** 1874 1875| 名称 | 描述 | 1876| ------ | ---------------- | 1877| tensor | 张量对象句柄。 | 1878| data | 指向数据的指针。 | 1879 1880 1881### OH_AI_TensorSetDataType() 1882 1883 1884``` 1885OH_AI_API void OH_AI_TensorSetDataType (OH_AI_TensorHandle tensor, OH_AI_DataType type ) 1886``` 1887 1888**描述:** 1889 1890设置张量的数据类型。 1891 1892**参数:** 1893 1894| 名称 | 描述 | 1895| ------ | --------------------------------------------------- | 1896| tensor | 张量对象句柄。 | 1897| type | 数据类型,具体见[OH_AI_DataType](#oh_ai_datatype)。 | 1898 1899 1900### OH_AI_TensorSetFormat() 1901 1902 1903``` 1904OH_AI_API void OH_AI_TensorSetFormat (OH_AI_TensorHandle tensor, OH_AI_Format format ) 1905``` 1906 1907**描述:** 1908 1909设置张量数据的排列方式。 1910 1911**参数:** 1912 1913| 名称 | 描述 | 1914| ------ | ------------------ | 1915| tensor | 张量对象句柄。 | 1916| format | 张量数据排列方式。 | 1917 1918 1919### OH_AI_TensorSetName() 1920 1921 1922``` 1923OH_AI_API void OH_AI_TensorSetName (OH_AI_TensorHandle tensor, const char *name ) 1924``` 1925 1926**描述:** 1927 1928设置张量的名称。 1929 1930**参数:** 1931 1932| 名称 | 描述 | 1933| ------ | -------------- | 1934| tensor | 张量对象句柄。 | 1935| name | 张量名称。 | 1936 1937 1938### OH_AI_TensorSetShape() 1939 1940 1941``` 1942OH_AI_API void OH_AI_TensorSetShape (OH_AI_TensorHandle tensor, const int64_t * shape, size_t shape_num ) 1943``` 1944 1945**描述:** 1946 1947设置张量的形状。 1948 1949**参数:** 1950 1951| 名称 | 描述 | 1952| --------- | ------------------ | 1953| tensor | 张量对象句柄。 | 1954| shape | 形状数组。 | 1955| shape_num | 张量形状数组长度。 | 1956 1957 1958### OH_AI_TensorSetUserData() 1959 1960``` 1961OH_AI_API OH_AI_Status OH_AI_TensorSetUserData (OH_AI_TensorHandle tensor, void * data, size_t data_size ) 1962``` 1963 1964**描述:** 1965 1966设置张量为用户自行管理的数据。 1967 1968此接口常用于复用用户数据作为模型输入,可减少一次数据拷贝。 1969 1970注意:此数据对于张量来说是外部数据,张量销毁时不会主动释放,由调用者负责释放。另外,在此张量使用过程中,调用者须确保此数据有效。 1971 1972**参数:** 1973 1974| 名称 | 描述 | 1975| -------- | -------- | 1976| tensor | 张量对象句柄。 | 1977| data | 用户数据首地址。 | 1978| data_size | 用户数据长度。 | 1979 1980**返回:** 1981 1982执行状态码。若成功返回OH_AI_STATUS_SUCCESS,否则返回具体错误码。 1983 1984**起始版本:** 1985 198610 1987 1988 1989### OH_AI_DeviceInfoAddExtension() 1990 1991``` 1992OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension (OH_AI_DeviceInfoHandle device_info, const char * name, const char * value, size_t value_size ) 1993``` 1994 1995**描述:** 1996 1997向设备信息中添加键/值对形式的扩展配置。只对NNRT设备信息有效。 1998 1999注意:当前仅支持{"CachePath": "YourCachePath"},{"CacheVersion": "YouCacheVersion"}, {"QuantParam": "YourQuantConfig"} 三种键值对配置,用户根据使用情况替换具体的值。 2000 2001**参数:** 2002 2003| 名称 | 描述 | 2004| -------- | -------- | 2005| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 2006| name | 单个扩展项的键,格式为C字符串。 | 2007| value | 单个扩展项的值内容首地址。 | 2008| value_size | 单个扩展项的值内容长度。 | 2009 2010**返回:** 2011 2012**OH_AI_Status** 执行状态码,若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 2013 2014**起始版本:** 2015 201610 2017 2018 2019### OH_AI_GetElementOfNNRTDeviceDescs() 2020 2021``` 2022OH_AI_API NNRTDeviceDesc* OH_AI_GetElementOfNNRTDeviceDescs (NNRTDeviceDesc * descs, size_t index ) 2023``` 2024 2025**描述:** 2026 2027获取NNRT设备描述信息数组中的元素指针。 2028 2029**参数:** 2030 2031| 名称 | 描述 | 2032| -------- | -------- | 2033| descs | NNRT设备描述信息数组。 | 2034| index | 数组元素索引。 | 2035 2036**返回:** 2037 2038NNRT设备描述信息类型指针。 2039 2040**起始版本:** 2041 204210 2043