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