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