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