1# context.h 2 3<!--Kit: MindSpore Lite Kit--> 4<!--Subsystem: AI--> 5<!--Owner: @zhuguodong8--> 6<!--Designer: @zhuguodong8; @jjfeing--> 7<!--Tester: @principal87--> 8<!--Adviser: @ge-yafang--> 9 10## 概述 11 12提供了Context相关的接口,可以配置运行时信息,该接口是非线程安全的。 13 14**引用文件:** <mindspore/context.h> 15 16**库:** libmindspore_lite_ndk.so 17 18**系统能力:** SystemCapability.Ai.MindSpore 19 20**起始版本:** 9 21 22**相关模块:** [MindSpore](capi-mindspore.md) 23 24## 汇总 25 26### 结构体 27 28| 名称 | typedef关键字 | 描述 | 29|--------------------------------------------------------------|------------|-----------------------------------| 30| [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) | void* | MindSpore的上下文信息的指针,该指针会指向Context。 | 31| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) | void* | MindSpore的运行设备信息的指针。 | 32 33### 函数 34 35| 名称 | 描述 | 36| -- | -- | 37| [OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate()](#oh_ai_contextcreate) | 创建一个上下文的对象。注意:此接口需跟OH_AI_ContextDestroy配套使用。 | 38| [OH_AI_API void OH_AI_ContextDestroy(OH_AI_ContextHandle *context)](#oh_ai_contextdestroy) | 释放上下文对象。 | 39| [OH_AI_API void OH_AI_ContextSetThreadNum(OH_AI_ContextHandle context, int32_t thread_num)](#oh_ai_contextsetthreadnum) | 设置运行时的线程数量。 | 40| [OH_AI_API int32_t OH_AI_ContextGetThreadNum(const OH_AI_ContextHandle context)](#oh_ai_contextgetthreadnum) | 获取线程数量。 | 41| [OH_AI_API void OH_AI_ContextSetThreadAffinityMode(OH_AI_ContextHandle context, int mode)](#oh_ai_contextsetthreadaffinitymode) | 设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。 | 42| [OH_AI_API int OH_AI_ContextGetThreadAffinityMode(const OH_AI_ContextHandle context)](#oh_ai_contextgetthreadaffinitymode) | 获取运行时线程绑定CPU核心的策略。 | 43| [OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList(OH_AI_ContextHandle context, const int32_t *core_list,size_t core_num)](#oh_ai_contextsetthreadaffinitycorelist) | 设置运行时线程绑定CPU核心的列表。<br> 例如:当core_list=[2,6,8]时,则线程会在CPU的第2,6,8个核心上运行。<br> 如果对于同一个上下文对象,调用了[OH_AI_ContextSetThreadAffinityMode](capi-context-h.md#oh_ai_contextsetthreadaffinitymode)和[OH_AI_ContextSetThreadAffinityCoreList](capi-context-h.md#oh_ai_contextsetthreadaffinitycorelist)。<br> 这两个函数,则仅[OH_AI_ContextSetThreadAffinityCoreList](capi-context-h.md#oh_ai_contextsetthreadaffinitycorelist)的core_list参数生效,而[OH_AI_ContextSetThreadAffinityMode](capi-context-h.md#oh_ai_contextsetthreadaffinitymode)的mode参数不生效。 | 44| [OH_AI_API const int32_t *OH_AI_ContextGetThreadAffinityCoreList(const OH_AI_ContextHandle context, size_t *core_num)](#oh_ai_contextgetthreadaffinitycorelist) | 获取CPU绑核列表。 | 45| [OH_AI_API void OH_AI_ContextSetEnableParallel(OH_AI_ContextHandle context, bool is_parallel)](#oh_ai_contextsetenableparallel) | 设置运行时是否支持并行。此接口特性当前未开启,设置无效。 | 46| [OH_AI_API bool OH_AI_ContextGetEnableParallel(const OH_AI_ContextHandle context)](#oh_ai_contextgetenableparallel) | 获取是否支持算子间并行。 | 47| [OH_AI_API void OH_AI_ContextAddDeviceInfo(OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info)](#oh_ai_contextadddeviceinfo) | 将一个用户定义的运行设备信息附加到推理上下文中。 | 48| [OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate(OH_AI_DeviceType device_type)](#oh_ai_deviceinfocreate) | 创建一个设备信息对象。 | 49| [OH_AI_API void OH_AI_DeviceInfoDestroy(OH_AI_DeviceInfoHandle *device_info)](#oh_ai_deviceinfodestroy) | 释放设备信息实例。注意:设备信息实例被添加到context后,无须调用者手动释放。 | 50| [OH_AI_API void OH_AI_DeviceInfoSetProvider(OH_AI_DeviceInfoHandle device_info, const char *provider)](#oh_ai_deviceinfosetprovider) | 设置生产商的名称。 | 51| [OH_AI_API const char *OH_AI_DeviceInfoGetProvider(const OH_AI_DeviceInfoHandle device_info)](#oh_ai_deviceinfogetprovider) | 获取生产商的名称。 | 52| [OH_AI_API void OH_AI_DeviceInfoSetProviderDevice(OH_AI_DeviceInfoHandle device_info, const char *device)](#oh_ai_deviceinfosetproviderdevice) | 设置生产商设备的名称。 | 53| [OH_AI_API const char *OH_AI_DeviceInfoGetProviderDevice(const OH_AI_DeviceInfoHandle device_info)](#oh_ai_deviceinfogetproviderdevice) | 获取生产商设备的名称。 | 54| [OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType(const OH_AI_DeviceInfoHandle device_info)](#oh_ai_deviceinfogetdevicetype) | 获取设备的类型。 | 55| [OH_AI_API void OH_AI_DeviceInfoSetEnableFP16(OH_AI_DeviceInfoHandle device_info, bool is_fp16)](#oh_ai_deviceinfosetenablefp16) | 设置是否开启float16推理模式,仅CPU/GPU设备可用。 | 56| [OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16(const OH_AI_DeviceInfoHandle device_info)](#oh_ai_deviceinfogetenablefp16) | 获取是否开启float16推理模式,仅CPU/GPU设备可用。 | 57| [OH_AI_API void OH_AI_DeviceInfoSetFrequency(OH_AI_DeviceInfoHandle device_info, int frequency)](#oh_ai_deviceinfosetfrequency) | 设置NPU的频率,仅NPU设备可用。 | 58| [OH_AI_API int OH_AI_DeviceInfoGetFrequency(const OH_AI_DeviceInfoHandle device_info)](#oh_ai_deviceinfogetfrequency) | 获取NPU的频率类型,仅NPU设备可用。 | 59| [OH_AI_API NNRTDeviceDesc *OH_AI_GetAllNNRTDeviceDescs(size_t *num)](#oh_ai_getallnnrtdevicedescs) | 获取系统中所有NNRt硬件设备的描述信息。 | 60| [OH_AI_API NNRTDeviceDesc *OH_AI_GetElementOfNNRTDeviceDescs(NNRTDeviceDesc *descs, size_t index)](#oh_ai_getelementofnnrtdevicedescs) | 获取NNRt设备描述信息数组中的元素指针。 | 61| [OH_AI_API void OH_AI_DestroyAllNNRTDeviceDescs(NNRTDeviceDesc **desc)](#oh_ai_destroyallnnrtdevicedescs) | 销毁从[OH_AI_GetAllNNRTDeviceDescs](capi-context-h.md#oh_ai_getallnnrtdevicedescs)获取的NNRt描写信息实例数组。 | 62| [OH_AI_API size_t OH_AI_GetDeviceIdFromNNRTDeviceDesc(const NNRTDeviceDesc *desc)](#oh_ai_getdeviceidfromnnrtdevicedesc) | 从特定的NNRt设备描述信息实例获取NNRt设备ID。注意,此ID只对NNRt有效。 | 63| [OH_AI_API const char *OH_AI_GetNameFromNNRTDeviceDesc(const NNRTDeviceDesc *desc)](#oh_ai_getnamefromnnrtdevicedesc) | 从特定的NNRt设备描述信息实例获取NNRt设备名称。 | 64| [OH_AI_API OH_AI_NNRTDeviceType OH_AI_GetTypeFromNNRTDeviceDesc(const NNRTDeviceDesc *desc)](#oh_ai_gettypefromnnrtdevicedesc) | 从特定的NNRt设备描述信息实例获取NNRt设备类型。 | 65| [OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByName(const char *name)](#oh_ai_creatennrtdeviceinfobyname) | 查找指定名称的NNRt设备,根据找到的第一个设备信息,创建NNRt设备信息。 | 66| [OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByType(OH_AI_NNRTDeviceType type)](#oh_ai_creatennrtdeviceinfobytype) | 查找指定类型的NNRt设备,根据找到的第一个设备信息,创建NNRt设备信息。 | 67| [OH_AI_API void OH_AI_DeviceInfoSetDeviceId(OH_AI_DeviceInfoHandle device_info, size_t device_id)](#oh_ai_deviceinfosetdeviceid) | 设置NNRt设备ID,仅NNRt设备可用。 | 68| [OH_AI_API size_t OH_AI_DeviceInfoGetDeviceId(const OH_AI_DeviceInfoHandle device_info)](#oh_ai_deviceinfogetdeviceid) | 获取NNRt设备ID,仅NNRt设备可用。 | 69| [OH_AI_API void OH_AI_DeviceInfoSetPerformanceMode(OH_AI_DeviceInfoHandle device_info, OH_AI_PerformanceMode mode)](#oh_ai_deviceinfosetperformancemode) | 设置NNRt性能模式,仅NNRt设备可用。 | 70| [OH_AI_API OH_AI_PerformanceMode OH_AI_DeviceInfoGetPerformanceMode(const OH_AI_DeviceInfoHandle device_info)](#oh_ai_deviceinfogetperformancemode) | 获取NNRt性能模式,仅NNRt设备可用。 | 71| [OH_AI_API void OH_AI_DeviceInfoSetPriority(OH_AI_DeviceInfoHandle device_info, OH_AI_Priority priority)](#oh_ai_deviceinfosetpriority) | 设置NNRt任务优先级,仅NNRt设备可用。 | 72| [OH_AI_API OH_AI_Priority OH_AI_DeviceInfoGetPriority(const OH_AI_DeviceInfoHandle device_info)](#oh_ai_deviceinfogetpriority) | 获取NNRt任务优先级,仅NNRt设备可用。 | 73| [OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension(OH_AI_DeviceInfoHandle device_info, const char *name,const char *value, size_t value_size)](#oh_ai_deviceinfoaddextension) | 向设备信息中添加键/值对形式的扩展配置。只对NNRt设备信息有效。<br> 注意:当前仅支持{"CachePath": "YourCachePath"},{"CacheVersion": "YouCacheVersion"},<br> {"QuantBuffer": "YourQuantBuffer"},{"ModelName": "YourModelName"},<br> {"isProfiling": "YourisProfiling"},{"opLayout": "YouropLayout"},<br> {"InputDims": "YourInputDims"},{"DynamicDims": "YourDynamicDims"},<br> {"QuantConfigData": "YourQuantConfigData"},{"BandMode": "YourBandMode"},<br> {"NPU_FM_SHARED": "YourNPU_FM_SHARED"}11种键值对配置,用户根据使用情况替换具体的值。 | 74 75## 函数说明 76 77### OH_AI_ContextCreate() 78 79``` 80OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate() 81``` 82 83**描述** 84 85创建一个上下文的对象。注意:此接口需跟OH_AI_ContextDestroy配套使用。 86 87**起始版本:** 9 88 89**返回:** 90 91| 类型 | 说明 | 92| -- | -- | 93| OH_AI_API [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) | 指向上下文信息的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 94 95### OH_AI_ContextDestroy() 96 97``` 98OH_AI_API void OH_AI_ContextDestroy(OH_AI_ContextHandle *context) 99``` 100 101**描述** 102 103释放上下文对象。 104 105**起始版本:** 9 106 107 108**参数:** 109 110| 参数项 | 描述 | 111| -- | -- | 112| [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) *context | 指向[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)的二级指针,上下文销毁后会对context置为空指针。 | 113 114### OH_AI_ContextSetThreadNum() 115 116``` 117OH_AI_API void OH_AI_ContextSetThreadNum(OH_AI_ContextHandle context, int32_t thread_num) 118``` 119 120**描述** 121 122设置运行时的线程数量。 123 124**起始版本:** 9 125 126 127**参数:** 128 129| 参数项 | 描述 | 130| -- | -- | 131| [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) context | 指向上下文信息实例的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 132| int32_t thread_num | 运行时的线程数量。长度跟随系统限制。 | 133 134### OH_AI_ContextGetThreadNum() 135 136``` 137OH_AI_API int32_t OH_AI_ContextGetThreadNum(const OH_AI_ContextHandle context) 138``` 139 140**描述** 141 142获取线程数量。 143 144**起始版本:** 9 145 146 147**参数:** 148 149| 参数项 | 描述 | 150| -- | -- | 151| const [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) context | 指向上下文信息实例的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 152 153**返回:** 154 155| 类型 | 说明 | 156| -- | -- | 157| OH_AI_API int32_t | 当前的线程数量。 | 158 159### OH_AI_ContextSetThreadAffinityMode() 160 161``` 162OH_AI_API void OH_AI_ContextSetThreadAffinityMode(OH_AI_ContextHandle context, int mode) 163``` 164 165**描述** 166 167设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。 168 169**起始版本:** 9 170 171 172**参数:** 173 174| 参数项 | 描述 | 175| -- | -- | 176| [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) context | 指向上下文信息实例的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 177| int mode | 绑核策略。一共有三种策略,0为不绑核,1为大核优先,2为中核优先。 | 178 179### OH_AI_ContextGetThreadAffinityMode() 180 181``` 182OH_AI_API int OH_AI_ContextGetThreadAffinityMode(const OH_AI_ContextHandle context) 183``` 184 185**描述** 186 187获取运行时线程绑定CPU核心的策略。 188 189**起始版本:** 9 190 191 192**参数:** 193 194| 参数项 | 描述 | 195| -- | -- | 196| const [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) context | 指向上下文信息实例的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 197 198**返回:** 199 200| 类型 | 说明 | 201| -- | -- | 202| OH_AI_API int | 绑核策略。一共有三种策略,0为不绑核,1为大核优先,2为中核优先。 | 203 204### OH_AI_ContextSetThreadAffinityCoreList() 205 206``` 207OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList(OH_AI_ContextHandle context, const int32_t *core_list,size_t core_num) 208``` 209 210**描述** 211 212设置运行时线程绑定CPU核心的列表。<br> 例如:当core_list=[2,6,8]时,则线程会在CPU的第2,6,8个核心上运行。<br> 如果对于同一个上下文对象,调用了[OH_AI_ContextSetThreadAffinityMode](capi-context-h.md#oh_ai_contextsetthreadaffinitymode)和[OH_AI_ContextSetThreadAffinityCoreList](capi-context-h.md#oh_ai_contextsetthreadaffinitycorelist)。<br> 这两个函数,则仅[OH_AI_ContextSetThreadAffinityCoreList](capi-context-h.md#oh_ai_contextsetthreadaffinitycorelist)的core_list参数生效,而[OH_AI_ContextSetThreadAffinityMode](capi-context-h.md#oh_ai_contextsetthreadaffinitymode)的mode参数不生效。 213 214**起始版本:** 9 215 216 217**参数:** 218 219| 参数项 | 描述 | 220| -- | -- | 221| [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) context | 指向上下文信息实例的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 222| const int32_t *core_list | CPU绑核的列表。 | 223| size_t core_num | 核的数量,它就代表core_list的长度。 | 224 225### OH_AI_ContextGetThreadAffinityCoreList() 226 227``` 228OH_AI_API const int32_t *OH_AI_ContextGetThreadAffinityCoreList(const OH_AI_ContextHandle context, size_t *core_num) 229``` 230 231**描述** 232 233获取CPU绑核列表。 234 235**起始版本:** 9 236 237 238**参数:** 239 240| 参数项 | 描述 | 241| -- | -- | 242| const [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) context | 指向上下文信息实例的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 243| size_t *core_num | 该参数是输出参数,表示核的数量。 | 244 245**返回:** 246 247| 类型 | 说明 | 248| -- | -- | 249| OH_AI_API const int32_t * | CPU绑核列表。此列表对象由[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)管理,调用者无须手动释放。 | 250 251### OH_AI_ContextSetEnableParallel() 252 253``` 254OH_AI_API void OH_AI_ContextSetEnableParallel(OH_AI_ContextHandle context, bool is_parallel) 255``` 256 257**描述** 258 259设置运行时是否支持并行。此接口特性当前未开启,设置无效。 260 261**起始版本:** 9 262 263 264**参数:** 265 266| 参数项 | 描述 | 267| -- | -- | 268| [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) context | 指向上下文信息实例的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 269| bool is_parallel | 是否支持并行。true为支持并行,false为不支持并行。 | 270 271### OH_AI_ContextGetEnableParallel() 272 273``` 274OH_AI_API bool OH_AI_ContextGetEnableParallel(const OH_AI_ContextHandle context) 275``` 276 277**描述** 278 279获取是否支持算子间并行。 280 281**起始版本:** 9 282 283 284**参数:** 285 286| 参数项 | 描述 | 287| -- | -- | 288| const [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) context | 指向上下文信息实例的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 289 290**返回:** 291 292| 类型 | 说明 | 293| -- | -- | 294| OH_AI_API bool | 是否支持并行。true为支持并行,false为不支持并行。 | 295 296### OH_AI_ContextAddDeviceInfo() 297 298``` 299OH_AI_API void OH_AI_ContextAddDeviceInfo(OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info) 300``` 301 302**描述** 303 304将一个用户定义的运行设备信息附加到推理上下文中。 305 306**起始版本:** 9 307 308 309**参数:** 310 311| 参数项 | 描述 | 312| -- | -- | 313| [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) context | 指向上下文信息实例的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 | 314| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 315 316### OH_AI_DeviceInfoCreate() 317 318``` 319OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate(OH_AI_DeviceType device_type) 320``` 321 322**描述** 323 324创建一个设备信息对象。 325 326**起始版本:** 9 327 328 329**参数:** 330 331| 参数项 | 描述 | 332| -- | -- | 333| [OH_AI_DeviceType](capi-types-h.md#oh_ai_devicetype) device_type | 设备类型,具体见[OH_AI_DeviceType](capi-types-h.md#oh_ai_devicetype)。 | 334 335**返回:** 336 337| 类型 | 说明 | 338| -- | -- | 339| OH_AI_API [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 340 341### OH_AI_DeviceInfoDestroy() 342 343``` 344OH_AI_API void OH_AI_DeviceInfoDestroy(OH_AI_DeviceInfoHandle *device_info) 345``` 346 347**描述** 348 349释放设备信息实例。注意:设备信息实例被添加到context后,无须调用者手动释放。 350 351**起始版本:** 9 352 353 354**参数:** 355 356| 参数项 | 描述 | 357| -- | -- | 358| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) *device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 359 360### OH_AI_DeviceInfoSetProvider() 361 362``` 363OH_AI_API void OH_AI_DeviceInfoSetProvider(OH_AI_DeviceInfoHandle device_info, const char *provider) 364``` 365 366**描述** 367 368设置生产商的名称。 369 370**起始版本:** 9 371 372 373**参数:** 374 375| 参数项 | 描述 | 376| -- | -- | 377| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 378| const char *provider | 生产商的名称。字符串长度跟随系统限制。 | 379 380### OH_AI_DeviceInfoGetProvider() 381 382``` 383OH_AI_API const char *OH_AI_DeviceInfoGetProvider(const OH_AI_DeviceInfoHandle device_info) 384``` 385 386**描述** 387 388获取生产商的名称。 389 390**起始版本:** 9 391 392 393**参数:** 394 395| 参数项 | 描述 | 396| -- | -- | 397| const [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 398 399**返回:** 400 401| 类型 | 说明 | 402| -- | -- | 403| OH_AI_API const char * | 生产商的名称。 | 404 405### OH_AI_DeviceInfoSetProviderDevice() 406 407``` 408OH_AI_API void OH_AI_DeviceInfoSetProviderDevice(OH_AI_DeviceInfoHandle device_info, const char *device) 409``` 410 411**描述** 412 413设置生产商设备的名称。 414 415**起始版本:** 9 416 417 418**参数:** 419 420| 参数项 | 描述 | 421| -- | -- | 422| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 423| const char *device | 生产商设备名称。例如: CPU。字符串长度跟随系统限制。 | 424 425### OH_AI_DeviceInfoGetProviderDevice() 426 427``` 428OH_AI_API const char *OH_AI_DeviceInfoGetProviderDevice(const OH_AI_DeviceInfoHandle device_info) 429``` 430 431**描述** 432 433获取生产商设备的名称。 434 435**起始版本:** 9 436 437 438**参数:** 439 440| 参数项 | 描述 | 441| -- | -- | 442| const [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 443 444**返回:** 445 446| 类型 | 说明 | 447| -- | -- | 448| OH_AI_API const char * | 生产商设备的名称。 | 449 450### OH_AI_DeviceInfoGetDeviceType() 451 452``` 453OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType(const OH_AI_DeviceInfoHandle device_info) 454``` 455 456**描述** 457 458获取设备的类型。 459 460**起始版本:** 9 461 462 463**参数:** 464 465| 参数项 | 描述 | 466| -- | -- | 467| const [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 468 469**返回:** 470 471| 类型 | 说明 | 472|----------------------------------------------------------------| -- | 473| OH_AI_API [OH_AI_DeviceType](capi-types-h.md#oh_ai_devicetype) | 生产商设备类型。 | 474 475### OH_AI_DeviceInfoSetEnableFP16() 476 477``` 478OH_AI_API void OH_AI_DeviceInfoSetEnableFP16(OH_AI_DeviceInfoHandle device_info, bool is_fp16) 479``` 480 481**描述** 482 483设置是否开启float16推理模式,仅CPU/GPU设备可用。 484 485**起始版本:** 9 486 487 488**参数:** 489 490| 参数项 | 描述 | 491| -- | -- | 492| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 493| bool is_fp16 | 是否开启float16推理模式。true为开启float16推理模式,false为不开启float16推理模式。 | 494 495### OH_AI_DeviceInfoGetEnableFP16() 496 497``` 498OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16(const OH_AI_DeviceInfoHandle device_info) 499``` 500 501**描述** 502 503获取是否开启float16推理模式,仅CPU/GPU设备可用。 504 505**起始版本:** 9 506 507 508**参数:** 509 510| 参数项 | 描述 | 511| -- | -- | 512| const [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 513 514**返回:** 515 516| 类型 | 说明 | 517| -- | -- | 518| OH_AI_API bool | 是否开启float16推理模式。true为开启float16推理模式,false为不开启float16推理模式。 | 519 520### OH_AI_DeviceInfoSetFrequency() 521 522``` 523OH_AI_API void OH_AI_DeviceInfoSetFrequency(OH_AI_DeviceInfoHandle device_info, int frequency) 524``` 525 526**描述** 527 528设置NPU的频率,仅NPU设备可用。 529 530**起始版本:** 9 531 532 533**参数:** 534 535| 参数项 | 描述 | 536| -- | -- | 537| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 538| int frequency | 频率类型,取值范围为0-4,默认是3。0表示不设置,由系统调节;1表示低功耗;2表示平衡;3表示高性能;4表示超高性能。 | 539 540### OH_AI_DeviceInfoGetFrequency() 541 542``` 543OH_AI_API int OH_AI_DeviceInfoGetFrequency(const OH_AI_DeviceInfoHandle device_info) 544``` 545 546**描述** 547 548获取NPU的频率类型,仅NPU设备可用。 549 550**起始版本:** 9 551 552 553**参数:** 554 555| 参数项 | 描述 | 556| -- | -- | 557| const [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 558 559**返回:** 560 561| 类型 | 说明 | 562| -- | -- | 563| OH_AI_API int | NPU的频率类型。取值范围为0-4,0表示不设置,由系统调节;1表示低功耗;2表示平衡;3表示高性能;4表示超高性能。 | 564 565### OH_AI_GetAllNNRTDeviceDescs() 566 567``` 568OH_AI_API NNRTDeviceDesc *OH_AI_GetAllNNRTDeviceDescs(size_t *num) 569``` 570 571**描述** 572 573获取系统中所有NNRt硬件设备的描述信息。 574 575**起始版本:** 10 576 577 578**参数:** 579 580| 参数项 | 描述 | 581| -- | -- | 582| size_t *num | 输出参数,返回设备数量。 | 583 584**返回:** 585 586| 类型 | 说明 | 587|--------------------------------| -- | 588| OH_AI_API [NNRTDeviceDesc](capi-mindspore-nnrtdevicedesc.md) * | 指向NNRt设备描述信息实例数组的指针。当获取失败时,返回NULL。 | 589 590### OH_AI_GetElementOfNNRTDeviceDescs() 591 592``` 593OH_AI_API NNRTDeviceDesc *OH_AI_GetElementOfNNRTDeviceDescs(NNRTDeviceDesc *descs, size_t index) 594``` 595 596**描述** 597 598获取NNRt设备描述信息数组中的元素指针。 599 600**起始版本:** 10 601 602 603**参数:** 604 605| 参数项 | 描述 | 606| -- | -- | 607| [NNRTDeviceDesc](capi-mindspore-nnrtdevicedesc.md) *descs | NNRt设备描述信息数组。 | 608| size_t index | 数组元素索引。 | 609 610**返回:** 611 612| 类型 | 说明 | 613| -- | -- | 614| OH_AI_API [NNRTDeviceDesc](capi-mindspore-nnrtdevicedesc.md) * | NNRt设备描述信息类型指针。 | 615 616### OH_AI_DestroyAllNNRTDeviceDescs() 617 618``` 619OH_AI_API void OH_AI_DestroyAllNNRTDeviceDescs(NNRTDeviceDesc **desc) 620``` 621 622**描述** 623 624销毁从[OH_AI_GetAllNNRTDeviceDescs](capi-context-h.md#oh_ai_getallnnrtdevicedescs)获取的NNRt描写信息实例数组。 625 626**起始版本:** 10 627 628 629**参数:** 630 631| 参数项 | 描述 | 632| -- | -- | 633| [NNRTDeviceDesc](capi-mindspore-nnrtdevicedesc.md) **desc | 指向NNRt设备描述信息实例数组的二重指针。销毁结束,desc指向内容会被置为NULL。 | 634 635### OH_AI_GetDeviceIdFromNNRTDeviceDesc() 636 637``` 638OH_AI_API size_t OH_AI_GetDeviceIdFromNNRTDeviceDesc(const NNRTDeviceDesc *desc) 639``` 640 641**描述** 642 643从特定的NNRt设备描述信息实例获取NNRt设备ID。注意,此ID只对NNRt有效。 644 645**起始版本:** 10 646 647 648**参数:** 649 650| 参数项 | 描述 | 651| -- | -- | 652| const [NNRTDeviceDesc](capi-mindspore-nnrtdevicedesc.md) *desc | 指向NNRt设备描述信息实例的指针。 | 653 654**返回:** 655 656| 类型 | 说明 | 657| -- | -- | 658| OH_AI_API size_t | NNRt设备ID。 | 659 660### OH_AI_GetNameFromNNRTDeviceDesc() 661 662``` 663OH_AI_API const char *OH_AI_GetNameFromNNRTDeviceDesc(const NNRTDeviceDesc *desc) 664``` 665 666**描述** 667 668从特定的NNRt设备描述信息实例获取NNRt设备名称。 669 670**起始版本:** 10 671 672 673**参数:** 674 675| 参数项 | 描述 | 676| -- | -- | 677| const [NNRTDeviceDesc](capi-mindspore-nnrtdevicedesc.md) *desc | 指向NNRt设备描述信息实例的指针。 | 678 679**返回:** 680 681| 类型 | 说明 | 682| -- | -- | 683| OH_AI_API const char * | NNRt设备名称,指向一个常量字符串的指针,该常量字符串由desc持有,调用者无需单独释放此指针。 | 684 685### OH_AI_GetTypeFromNNRTDeviceDesc() 686 687``` 688OH_AI_API OH_AI_NNRTDeviceType OH_AI_GetTypeFromNNRTDeviceDesc(const NNRTDeviceDesc *desc) 689``` 690 691**描述** 692 693从特定的NNRt设备描述信息实例获取NNRt设备类型。 694 695**起始版本:** 10 696 697 698**参数:** 699 700| 参数项 | 描述 | 701| -- | -- | 702| const [NNRTDeviceDesc](capi-mindspore-nnrtdevicedesc.md) *desc | 指向NNRt设备描述信息实例的指针。 | 703 704**返回:** 705 706| 类型 | 说明 | 707|------------------------------------------------------------------------| -- | 708| OH_AI_API [OH_AI_NNRTDeviceType](capi-types-h.md#oh_ai_nnrtdevicetype) | [OH_AI_NNRTDeviceType](capi-types-h.md#oh_ai_nnrtdevicetype) NNRt设备类型。 | 709 710### OH_AI_CreateNNRTDeviceInfoByName() 711 712``` 713OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByName(const char *name) 714``` 715 716**描述** 717 718查找指定名称的NNRt设备,根据找到的第一个设备信息,创建NNRt设备信息。 719 720**起始版本:** 10 721 722 723**参数:** 724 725| 参数项 | 描述 | 726| -- | -- | 727| const char *name | 目标NNRt设备名。字符串长度跟随系统限制。 | 728 729**返回:** 730 731| 类型 | 说明 | 732| -- | -- | 733| OH_AI_API [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 734 735### OH_AI_CreateNNRTDeviceInfoByType() 736 737``` 738OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByType(OH_AI_NNRTDeviceType type) 739``` 740 741**描述** 742 743查找指定类型的NNRt设备,根据找到的第一个设备信息,创建NNRt设备信息。 744 745**起始版本:** 10 746 747 748**参数:** 749 750| 参数项 | 描述 | 751| -- | -- | 752| [OH_AI_NNRTDeviceType](capi-types-h.md#oh_ai_nnrtdevicetype) type | [OH_AI_NNRTDeviceType](capi-types-h.md#oh_ai_nnrtdevicetype) 目标NNRt设备类型。 | 753 754**返回:** 755 756| 类型 | 说明 | 757| -- | -- | 758| OH_AI_API [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 759 760### OH_AI_DeviceInfoSetDeviceId() 761 762``` 763OH_AI_API void OH_AI_DeviceInfoSetDeviceId(OH_AI_DeviceInfoHandle device_info, size_t device_id) 764``` 765 766**描述** 767 768设置NNRt设备ID,仅NNRt设备可用。 769 770**起始版本:** 10 771 772 773**参数:** 774 775| 参数项 | 描述 | 776| -- | -- | 777| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 778| size_t device_id | NNRt设备ID。 | 779 780### OH_AI_DeviceInfoGetDeviceId() 781 782``` 783OH_AI_API size_t OH_AI_DeviceInfoGetDeviceId(const OH_AI_DeviceInfoHandle device_info) 784``` 785 786**描述** 787 788获取NNRt设备ID,仅NNRt设备可用。 789 790**起始版本:** 10 791 792 793**参数:** 794 795| 参数项 | 描述 | 796| -- | -- | 797| const [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 798 799**返回:** 800 801| 类型 | 说明 | 802| -- | -- | 803| OH_AI_API size_t | NNRt设备ID。 | 804 805### OH_AI_DeviceInfoSetPerformanceMode() 806 807``` 808OH_AI_API void OH_AI_DeviceInfoSetPerformanceMode(OH_AI_DeviceInfoHandle device_info, OH_AI_PerformanceMode mode) 809``` 810 811**描述** 812 813设置NNRt性能模式,仅NNRt设备可用。 814 815**起始版本:** 10 816 817 818**参数:** 819 820| 参数项 | 描述 | 821| -- | -- | 822| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 823| [OH_AI_PerformanceMode](capi-types-h.md#oh_ai_performancemode) mode | [OH_AI_PerformanceMode](capi-types-h.md#oh_ai_performancemode) NNRt性能模式。 | 824 825### OH_AI_DeviceInfoGetPerformanceMode() 826 827``` 828OH_AI_API OH_AI_PerformanceMode OH_AI_DeviceInfoGetPerformanceMode(const OH_AI_DeviceInfoHandle device_info) 829``` 830 831**描述** 832 833获取NNRt性能模式,仅NNRt设备可用。 834 835**起始版本:** 10 836 837 838**参数:** 839 840| 参数项 | 描述 | 841| -- | -- | 842| const [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 843 844**返回:** 845 846| 类型 | 说明 | 847|--------------------------------------------------------------------------| -- | 848| OH_AI_API [OH_AI_PerformanceMode](capi-types-h.md#oh_ai_performancemode) | [OH_AI_PerformanceMode](capi-types-h.md#oh_ai_performancemode) NNRt性能模式。 | 849 850### OH_AI_DeviceInfoSetPriority() 851 852``` 853OH_AI_API void OH_AI_DeviceInfoSetPriority(OH_AI_DeviceInfoHandle device_info, OH_AI_Priority priority) 854``` 855 856**描述** 857 858设置NNRt任务优先级,仅NNRt设备可用。 859 860**起始版本:** 10 861 862 863**参数:** 864 865| 参数项 | 描述 | 866| -- | -- | 867| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 868| [OH_AI_Priority](capi-types-h.md#oh_ai_priority) priority | [OH_AI_Priority](capi-types-h.md#oh_ai_priority) NNRt任务优先级。 | 869 870### OH_AI_DeviceInfoGetPriority() 871 872``` 873OH_AI_API OH_AI_Priority OH_AI_DeviceInfoGetPriority(const OH_AI_DeviceInfoHandle device_info) 874``` 875 876**描述** 877 878获取NNRt任务优先级,仅NNRt设备可用。 879 880**起始版本:** 10 881 882 883**参数:** 884 885| 参数项 | 描述 | 886| -- | -- | 887| const [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 888 889**返回:** 890 891| 类型 | 说明 | 892| -- | -- | 893| OH_AI_API [OH_AI_Priority](capi-types-h.md#oh_ai_priority) | [OH_AI_Priority](capi-types-h.md#oh_ai_priority) NNRt任务优先级。 | 894 895### OH_AI_DeviceInfoAddExtension() 896 897``` 898OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension(OH_AI_DeviceInfoHandle device_info, const char *name,const char *value, size_t value_size) 899``` 900 901**描述** 902 903向设备信息中添加键/值对形式的扩展配置。只对NNRt设备信息有效。<br> 注意:当前仅支持{"CachePath": "YourCachePath"},{"CacheVersion": "YouCacheVersion"},<br> {"QuantBuffer": "YourQuantBuffer"},{"ModelName": "YourModelName"},<br> {"isProfiling": "YourisProfiling"},{"opLayout": "YouropLayout"},<br> {"InputDims": "YourInputDims"},{"DynamicDims": "YourDynamicDims"},<br> {"QuantConfigData": "YourQuantConfigData"},{"BandMode": "YourBandMode"},<br> {"NPU_FM_SHARED": "YourNPU_FM_SHARED"}11种键值对配置,用户根据使用情况替换具体的值。 904 905**起始版本:** 10 906 907 908**参数:** 909 910| 参数项 | 描述 | 911| -- | -- | 912| [OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md) device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](capi-mindspore-oh-ai-DeviceInfoHandle.md)。 | 913| const char *name | 单个扩展项的键,格式为C字符串。字符串长度限制为128。 | 914| const char *value | 单个扩展项的值内容首地址。字符串长度跟随系统限制。 | 915| size_t value_size | 单个扩展项的值内容长度。 | 916 917**返回:** 918 919| 类型 | 说明 | 920|---------------------------------------------------------| -- | 921| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | [OH_AI_Status](capi-status-h.md#oh_ai_status) 执行状态码,若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 | 922 923 924