# context.h

#### 概述

提供了Context相关的接口，可以配置运行时信息，该接口是非线程安全的。

**引用文件：** <mindspore/context.h>

**库：** libmindspore\_lite\_ndk.so

**系统能力：** SystemCapability.Ai.MindSpore

**起始版本：** 9

**相关模块：** MindSpore

#### 汇总

#### 结构体

| 名称 | typedef关键字 | 描述 |
| --- | --- | --- |
| OH_AI_ContextHandle | void* | MindSpore Lite上下文信息的指针，该指针会指向Context。 |
| OH_AI_DeviceInfoHandle | void* | MindSpore Lite运行设备信息的指针。 |

#### 函数

| 名称 | 描述 |
| --- | --- |
| OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate() | 创建一个上下文的对象。注意：此接口需跟OH_AI_ContextDestroy配套使用。 |
| OH_AI_API void OH_AI_ContextDestroy(OH_AI_ContextHandle *context) | 释放上下文对象。 |
| OH_AI_API void OH_AI_ContextSetThreadNum(OH_AI_ContextHandle context, int32_t thread_num) | 设置运行时的线程数量。 |
| OH_AI_API int32_t OH_AI_ContextGetThreadNum(const OH_AI_ContextHandle context) | 获取线程数量。 |
| OH_AI_API void OH_AI_ContextSetThreadAffinityMode(OH_AI_ContextHandle context, int mode) | 设置运行时线程绑定CPU核心的策略，按照CPU物理核频率分为大、中、小三种类型的核心，并且仅需绑大核或者绑中核，不需要绑小核。 |
| OH_AI_API int OH_AI_ContextGetThreadAffinityMode(const OH_AI_ContextHandle context) | 获取运行时线程绑定CPU核心的策略。 |
| OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList(OH_AI_ContextHandle context, const int32_t *core_list,size_t core_num) | 设置运行时线程绑定CPU核心的列表。 例如：当core_list=[2,6,8]时，则线程会在CPU的第2，6，8个核心上运行。 如果对于同一个上下文对象，调用了OH_AI_ContextSetThreadAffinityMode和OH_AI_ContextSetThreadAffinityCoreList。 这两个函数，则仅OH_AI_ContextSetThreadAffinityCoreList的core_list参数生效，而OH_AI_ContextSetThreadAffinityMode的mode参数不生效。 |
| OH_AI_API const int32_t *OH_AI_ContextGetThreadAffinityCoreList(const OH_AI_ContextHandle context, size_t *core_num) | 获取CPU绑核列表。 |
| OH_AI_API void OH_AI_ContextSetEnableParallel(OH_AI_ContextHandle context, bool is_parallel) | 设置运行时是否支持并行。此接口特性当前未开启，设置无效。 |
| OH_AI_API bool OH_AI_ContextGetEnableParallel(const OH_AI_ContextHandle context) | 获取是否支持算子间并行。 |
| OH_AI_API void OH_AI_ContextAddDeviceInfo(OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info) | 将一个用户定义的运行设备信息附加到推理上下文中。 |
| OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate(OH_AI_DeviceType device_type) | 创建一个设备信息对象。 |
| OH_AI_API void OH_AI_DeviceInfoDestroy(OH_AI_DeviceInfoHandle *device_info) | 释放设备信息实例。注意：设备信息实例被添加到context后，无须调用者手动释放。 |
| OH_AI_API void OH_AI_DeviceInfoSetProvider(OH_AI_DeviceInfoHandle device_info, const char *provider) | 设置生产商的名称。 |
| OH_AI_API const char *OH_AI_DeviceInfoGetProvider(const OH_AI_DeviceInfoHandle device_info) | 获取生产商的名称。 |
| OH_AI_API void OH_AI_DeviceInfoSetProviderDevice(OH_AI_DeviceInfoHandle device_info, const char *device) | 设置生产商设备的名称。 |
| OH_AI_API const char *OH_AI_DeviceInfoGetProviderDevice(const OH_AI_DeviceInfoHandle device_info) | 获取生产商设备的名称。 |
| OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType(const OH_AI_DeviceInfoHandle device_info) | 获取设备的类型。 |
| OH_AI_API void OH_AI_DeviceInfoSetEnableFP16(OH_AI_DeviceInfoHandle device_info, bool is_fp16) | 设置是否开启float16推理模式，仅CPU/GPU设备可用。 |
| OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16(const OH_AI_DeviceInfoHandle device_info) | 获取是否开启float16推理模式，仅CPU/GPU设备可用。 |
| OH_AI_API void OH_AI_DeviceInfoSetFrequency(OH_AI_DeviceInfoHandle device_info, int frequency) | 设置NPU的频率，仅NPU设备可用。 |
| OH_AI_API int OH_AI_DeviceInfoGetFrequency(const OH_AI_DeviceInfoHandle device_info) | 获取NPU的频率类型，仅NPU设备可用。 |
| OH_AI_API NNRTDeviceDesc *OH_AI_GetAllNNRTDeviceDescs(size_t *num) | 获取系统中所有NNRt硬件设备的描述信息。 |
| OH_AI_API NNRTDeviceDesc *OH_AI_GetElementOfNNRTDeviceDescs(NNRTDeviceDesc *descs, size_t index) | 获取NNRt设备描述信息数组中的元素指针。 |
| OH_AI_API void OH_AI_DestroyAllNNRTDeviceDescs(NNRTDeviceDesc **desc) | 销毁从OH_AI_GetAllNNRTDeviceDescs获取的NNRt描述信息实例数组。 |
| OH_AI_API size_t OH_AI_GetDeviceIdFromNNRTDeviceDesc(const NNRTDeviceDesc *desc) | 从特定的NNRt设备描述信息实例获取NNRt设备ID。注意，此ID只对NNRt有效。 |
| OH_AI_API const char *OH_AI_GetNameFromNNRTDeviceDesc(const NNRTDeviceDesc *desc) | 从特定的NNRt设备描述信息实例获取NNRt设备名称。 |
| OH_AI_API OH_AI_NNRTDeviceType OH_AI_GetTypeFromNNRTDeviceDesc(const NNRTDeviceDesc *desc) | 从特定的NNRt设备描述信息实例获取NNRt设备类型。 |
| OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByName(const char *name) | 查找指定名称的NNRt设备，根据找到的第一个设备信息，创建NNRt设备信息。 |
| OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByType(OH_AI_NNRTDeviceType type) | 查找指定类型的NNRt设备，根据找到的第一个设备信息，创建NNRt设备信息。 |
| OH_AI_API void OH_AI_DeviceInfoSetDeviceId(OH_AI_DeviceInfoHandle device_info, size_t device_id) | 设置NNRt设备ID，仅NNRt设备可用。 |
| OH_AI_API size_t OH_AI_DeviceInfoGetDeviceId(const OH_AI_DeviceInfoHandle device_info) | 获取NNRt设备ID，仅NNRt设备可用。 |
| OH_AI_API void OH_AI_DeviceInfoSetPerformanceMode(OH_AI_DeviceInfoHandle device_info, OH_AI_PerformanceMode mode) | 设置NNRt性能模式，仅NNRt设备可用。 |
| OH_AI_API OH_AI_PerformanceMode OH_AI_DeviceInfoGetPerformanceMode(const OH_AI_DeviceInfoHandle device_info) | 获取NNRt性能模式，仅NNRt设备可用。 |
| OH_AI_API void OH_AI_DeviceInfoSetPriority(OH_AI_DeviceInfoHandle device_info, OH_AI_Priority priority) | 设置NNRt任务优先级，仅NNRt设备可用。 |
| OH_AI_API OH_AI_Priority OH_AI_DeviceInfoGetPriority(const OH_AI_DeviceInfoHandle device_info) | 获取NNRt任务优先级，仅NNRt设备可用。 |
| OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension(OH_AI_DeviceInfoHandle device_info, const char *name,const char *value, size_t value_size) | 向设备信息中添加键/值对形式的扩展配置。只对NNRt设备信息有效。 当前仅支持配置以下11种键：{"CachePath": "YourCachePath"}，{"CacheVersion": "YourCacheVersion"}， {"QuantBuffer": "YourQuantBuffer"}，{"ModelName": "YourModelName"}， {"isProfiling": "YourProfilingSwitch"}，{"opLayout": "YourOpLayout"}， {"InputDims": "YourInputDims"}，{"DynamicDims": "YourDynamicDims"}， {"QuantConfigData": "YourQuantConfigData"}，{"BandMode": "YourBandMode"}， {"NPU_FM_SHARED": "YourNPU_FM_SHARED"}，用户可根据使用情况配置各个键对应的值。 |

#### 函数说明

#### OH\_AI\_ContextCreate()

```
OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate()
```

**描述**

创建一个上下文的对象。注意：此接口需跟OH\_AI\_ContextDestroy配套使用。

**起始版本：** 9

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API OH_AI_ContextHandle | 指向上下文信息的OH_AI_ContextHandle。 |

#### OH\_AI\_ContextDestroy()

```
OH_AI_API void OH_AI_ContextDestroy(OH_AI_ContextHandle *context)
```

**描述**

释放上下文对象。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_ContextHandle *context | 指向OH_AI_ContextHandle的二级指针，上下文销毁后会对context置为空指针。 |

#### OH\_AI\_ContextSetThreadNum()

```
OH_AI_API void OH_AI_ContextSetThreadNum(OH_AI_ContextHandle context, int32_t thread_num)
```

**描述**

设置运行时的线程数量。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_ContextHandle context | 指向上下文信息实例的OH_AI_ContextHandle。 |
| int32_t thread_num | 运行时的线程数量。长度跟随系统限制。 |

#### OH\_AI\_ContextGetThreadNum()

```
OH_AI_API int32_t OH_AI_ContextGetThreadNum(const OH_AI_ContextHandle context)
```

**描述**

获取线程数量。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_ContextHandle context | 指向上下文信息实例的OH_AI_ContextHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API int32_t | 当前的线程数量。 |

#### OH\_AI\_ContextSetThreadAffinityMode()

```
OH_AI_API void OH_AI_ContextSetThreadAffinityMode(OH_AI_ContextHandle context, int mode)
```

**描述**

设置运行时线程绑定CPU核心的策略，按照CPU物理核频率分为大、中、小三种类型的核心，并且仅需绑大核或者绑中核，不需要绑小核。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_ContextHandle context | 指向上下文信息实例的OH_AI_ContextHandle。 |
| int mode | 绑核策略。一共有三种策略，0为不绑核，1为大核优先，2为中核优先。 |

#### OH\_AI\_ContextGetThreadAffinityMode()

```
OH_AI_API int OH_AI_ContextGetThreadAffinityMode(const OH_AI_ContextHandle context)
```

**描述**

获取运行时线程绑定CPU核心的策略。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_ContextHandle context | 指向上下文信息实例的OH_AI_ContextHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API int | 绑核策略。一共有三种策略，0为不绑核，1为大核优先，2为中核优先。 |

#### OH\_AI\_ContextSetThreadAffinityCoreList()

```
OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList(OH_AI_ContextHandle context, const int32_t *core_list,size_t core_num)
```

**描述**

设置运行时线程绑定CPU核心的列表。

例如：当core\_list=\[2,6,8\]时，则线程会在CPU的第2，6，8个核心上运行。

如果对于同一个上下文对象，调用了OH\_AI\_ContextSetThreadAffinityMode和OH\_AI\_ContextSetThreadAffinityCoreList。

这两个函数，则仅OH\_AI\_ContextSetThreadAffinityCoreList的core\_list参数生效，而OH\_AI\_ContextSetThreadAffinityMode的mode参数不生效。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_ContextHandle context | 指向上下文信息实例的OH_AI_ContextHandle。 |
| const int32_t *core_list | CPU绑核的列表。 |
| size_t core_num | 核的数量，它就代表core_list的长度。 |

#### OH\_AI\_ContextGetThreadAffinityCoreList()

```
OH_AI_API const int32_t *OH_AI_ContextGetThreadAffinityCoreList(const OH_AI_ContextHandle context, size_t *core_num)
```

**描述**

获取CPU绑核列表。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_ContextHandle context | 指向上下文信息实例的OH_AI_ContextHandle。 |
| size_t *core_num | 该参数是输出参数，表示核的数量。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API const int32_t * | CPU绑核列表。此列表对象由OH_AI_ContextHandle管理，调用者无须手动释放。 |

#### OH\_AI\_ContextSetEnableParallel()

```
OH_AI_API void OH_AI_ContextSetEnableParallel(OH_AI_ContextHandle context, bool is_parallel)
```

**描述**

设置运行时是否支持并行。此接口特性当前未开启，设置无效。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_ContextHandle context | 指向上下文信息实例的OH_AI_ContextHandle。 |
| bool is_parallel | 是否支持并行。true为支持并行，false为不支持并行。 |

#### OH\_AI\_ContextGetEnableParallel()

```
OH_AI_API bool OH_AI_ContextGetEnableParallel(const OH_AI_ContextHandle context)
```

**描述**

获取是否支持算子间并行。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_ContextHandle context | 指向上下文信息实例的OH_AI_ContextHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API bool | 是否支持并行。true为支持并行，false为不支持并行。 |

#### OH\_AI\_ContextAddDeviceInfo()

```
OH_AI_API void OH_AI_ContextAddDeviceInfo(OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info)
```

**描述**

将一个用户定义的运行设备信息附加到推理上下文中。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_ContextHandle context | 指向上下文信息实例的OH_AI_ContextHandle。 |
| OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

#### OH\_AI\_DeviceInfoCreate()

```
OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate(OH_AI_DeviceType device_type)
```

**描述**

创建一个设备信息对象。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceType device_type | 设备类型，具体见OH_AI_DeviceType。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API OH_AI_DeviceInfoHandle | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

#### OH\_AI\_DeviceInfoDestroy()

```
OH_AI_API void OH_AI_DeviceInfoDestroy(OH_AI_DeviceInfoHandle *device_info)
```

**描述**

释放设备信息实例。注意：设备信息实例被添加到context后，无须调用者手动释放。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceInfoHandle *device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

#### OH\_AI\_DeviceInfoSetProvider()

```
OH_AI_API void OH_AI_DeviceInfoSetProvider(OH_AI_DeviceInfoHandle device_info, const char *provider)
```

**描述**

设置生产商的名称。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |
| const char *provider | 生产商的名称。字符串长度跟随系统限制。 |

#### OH\_AI\_DeviceInfoGetProvider()

```
OH_AI_API const char *OH_AI_DeviceInfoGetProvider(const OH_AI_DeviceInfoHandle device_info)
```

**描述**

获取生产商的名称。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API const char * | 生产商的名称。 |

#### OH\_AI\_DeviceInfoSetProviderDevice()

```
OH_AI_API void OH_AI_DeviceInfoSetProviderDevice(OH_AI_DeviceInfoHandle device_info, const char *device)
```

**描述**

设置生产商设备的名称。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |
| const char *device | 生产商设备名称。例如: CPU。字符串长度跟随系统限制。 |

#### OH\_AI\_DeviceInfoGetProviderDevice()

```
OH_AI_API const char *OH_AI_DeviceInfoGetProviderDevice(const OH_AI_DeviceInfoHandle device_info)
```

**描述**

获取生产商设备的名称。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API const char * | 生产商设备的名称。 |

#### OH\_AI\_DeviceInfoGetDeviceType()

```
OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType(const OH_AI_DeviceInfoHandle device_info)
```

**描述**

获取设备的类型。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API OH_AI_DeviceType | 生产商设备类型。 |

#### OH\_AI\_DeviceInfoSetEnableFP16()

```
OH_AI_API void OH_AI_DeviceInfoSetEnableFP16(OH_AI_DeviceInfoHandle device_info, bool is_fp16)
```

**描述**

设置是否开启float16推理模式，仅CPU/GPU设备可用。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |
| bool is_fp16 | 是否开启float16推理模式。true为开启float16推理模式，false为不开启float16推理模式。 |

#### OH\_AI\_DeviceInfoGetEnableFP16()

```
OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16(const OH_AI_DeviceInfoHandle device_info)
```

**描述**

获取是否开启float16推理模式，仅CPU/GPU设备可用。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API bool | 是否开启float16推理模式。true为开启float16推理模式，false为不开启float16推理模式。 |

#### OH\_AI\_DeviceInfoSetFrequency()

```
OH_AI_API void OH_AI_DeviceInfoSetFrequency(OH_AI_DeviceInfoHandle device_info, int frequency)
```

**描述**

设置NPU的频率，仅NPU设备可用。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |
| int frequency | 频率类型，取值范围为0-4，默认是3。0表示不设置，由系统调节；1表示低功耗；2表示平衡；3表示高性能；4表示超高性能。 |

#### OH\_AI\_DeviceInfoGetFrequency()

```
OH_AI_API int OH_AI_DeviceInfoGetFrequency(const OH_AI_DeviceInfoHandle device_info)
```

**描述**

获取NPU的频率类型，仅NPU设备可用。

**起始版本：** 9

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API int | NPU的频率类型。取值范围为0-4，0表示不设置，由系统调节；1表示低功耗；2表示平衡；3表示高性能；4表示超高性能。 |

#### OH\_AI\_GetAllNNRTDeviceDescs()

```
OH_AI_API NNRTDeviceDesc *OH_AI_GetAllNNRTDeviceDescs(size_t *num)
```

**描述**

获取系统中所有NNRt硬件设备的描述信息。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| size_t *num | 输出参数，返回设备数量。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API NNRTDeviceDesc * | 指向NNRt设备描述信息实例数组的指针。当获取失败时，返回NULL。 |

#### OH\_AI\_GetElementOfNNRTDeviceDescs()

```
OH_AI_API NNRTDeviceDesc *OH_AI_GetElementOfNNRTDeviceDescs(NNRTDeviceDesc *descs, size_t index)
```

**描述**

获取NNRt设备描述信息数组中的元素指针。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| NNRTDeviceDesc *descs | NNRt设备描述信息数组。 |
| size_t index | 数组元素索引。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API NNRTDeviceDesc * | NNRt设备描述信息类型指针。 |

#### OH\_AI\_DestroyAllNNRTDeviceDescs()

```
OH_AI_API void OH_AI_DestroyAllNNRTDeviceDescs(NNRTDeviceDesc **desc)
```

**描述**

销毁从OH\_AI\_GetAllNNRTDeviceDescs获取的NNRt描述信息实例数组。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| NNRTDeviceDesc **desc | 指向NNRt设备描述信息实例数组的二重指针。销毁结束，desc指向内容会被置为NULL。 |

#### OH\_AI\_GetDeviceIdFromNNRTDeviceDesc()

```
OH_AI_API size_t OH_AI_GetDeviceIdFromNNRTDeviceDesc(const NNRTDeviceDesc *desc)
```

**描述**

从特定的NNRt设备描述信息实例获取NNRt设备ID。注意，此ID只对NNRt有效。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const NNRTDeviceDesc *desc | 指向NNRt设备描述信息实例的指针。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API size_t | NNRt设备ID。 |

#### OH\_AI\_GetNameFromNNRTDeviceDesc()

```
OH_AI_API const char *OH_AI_GetNameFromNNRTDeviceDesc(const NNRTDeviceDesc *desc)
```

**描述**

从特定的NNRt设备描述信息实例获取NNRt设备名称。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const NNRTDeviceDesc *desc | 指向NNRt设备描述信息实例的指针。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API const char * | NNRt设备名称，指向一个常量字符串的指针，该常量字符串由desc持有，调用者无需单独释放此指针。 |

#### OH\_AI\_GetTypeFromNNRTDeviceDesc()

```
OH_AI_API OH_AI_NNRTDeviceType OH_AI_GetTypeFromNNRTDeviceDesc(const NNRTDeviceDesc *desc)
```

**描述**

从特定的NNRt设备描述信息实例获取NNRt设备类型。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const NNRTDeviceDesc *desc | 指向NNRt设备描述信息实例的指针。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API OH_AI_NNRTDeviceType | OH_AI_NNRTDeviceType NNRt设备类型。 |

#### OH\_AI\_CreateNNRTDeviceInfoByName()

```
OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByName(const char *name)
```

**描述**

查找指定名称的NNRt设备，根据找到的第一个设备信息，创建NNRt设备信息。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const char *name | 目标NNRt设备名。字符串长度跟随系统限制。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API OH_AI_DeviceInfoHandle | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

#### OH\_AI\_CreateNNRTDeviceInfoByType()

```
OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByType(OH_AI_NNRTDeviceType type)
```

**描述**

查找指定类型的NNRt设备，根据找到的第一个设备信息，创建NNRt设备信息。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_NNRTDeviceType type | OH_AI_NNRTDeviceType 目标NNRt设备类型。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API OH_AI_DeviceInfoHandle | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

#### OH\_AI\_DeviceInfoSetDeviceId()

```
OH_AI_API void OH_AI_DeviceInfoSetDeviceId(OH_AI_DeviceInfoHandle device_info, size_t device_id)
```

**描述**

设置NNRt设备ID，仅NNRt设备可用。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |
| size_t device_id | NNRt设备ID。 |

#### OH\_AI\_DeviceInfoGetDeviceId()

```
OH_AI_API size_t OH_AI_DeviceInfoGetDeviceId(const OH_AI_DeviceInfoHandle device_info)
```

**描述**

获取NNRt设备ID，仅NNRt设备可用。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API size_t | NNRt设备ID。 |

#### OH\_AI\_DeviceInfoSetPerformanceMode()

```
OH_AI_API void OH_AI_DeviceInfoSetPerformanceMode(OH_AI_DeviceInfoHandle device_info, OH_AI_PerformanceMode mode)
```

**描述**

设置NNRt性能模式，仅NNRt设备可用。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |
| OH_AI_PerformanceMode mode | OH_AI_PerformanceMode NNRt性能模式。 |

#### OH\_AI\_DeviceInfoGetPerformanceMode()

```
OH_AI_API OH_AI_PerformanceMode OH_AI_DeviceInfoGetPerformanceMode(const OH_AI_DeviceInfoHandle device_info)
```

**描述**

获取NNRt性能模式，仅NNRt设备可用。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API OH_AI_PerformanceMode | OH_AI_PerformanceMode NNRt性能模式。 |

#### OH\_AI\_DeviceInfoSetPriority()

```
OH_AI_API void OH_AI_DeviceInfoSetPriority(OH_AI_DeviceInfoHandle device_info, OH_AI_Priority priority)
```

**描述**

设置NNRt任务优先级，仅NNRt设备可用。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |
| OH_AI_Priority priority | OH_AI_Priority NNRt任务优先级。 |

#### OH\_AI\_DeviceInfoGetPriority()

```
OH_AI_API OH_AI_Priority OH_AI_DeviceInfoGetPriority(const OH_AI_DeviceInfoHandle device_info)
```

**描述**

获取NNRt任务优先级，仅NNRt设备可用。

**起始版本：** 23

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API OH_AI_Priority | OH_AI_Priority NNRt任务优先级。 |

#### OH\_AI\_DeviceInfoAddExtension()

```
OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension(OH_AI_DeviceInfoHandle device_info, const char *name,const char *value, size_t value_size)
```

**描述**

向设备信息中添加键/值对形式的扩展配置。只对NNRt设备信息有效。

当前仅支持配置以下11种键：{"CachePath": "YourCachePath"}，{"CacheVersion": "YourCacheVersion"}，

{"QuantBuffer": "YourQuantBuffer"}，{"ModelName": "YourModelName"}，

{"isProfiling": "YourProfilingSwitch"}，{"opLayout": "YourOpLayout"}，

{"InputDims": "YourInputDims"}，{"DynamicDims": "YourDynamicDims"}，

{"QuantConfigData": "YourQuantConfigData"}，{"BandMode": "YourBandMode"}，

{"NPU\_FM\_SHARED": "YourNPU\_FM\_SHARED"}，用户可根据使用情况配置各个键对应的值。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| OH_AI_DeviceInfoHandle device_info | 指向设备信息实例的OH_AI_DeviceInfoHandle。 |
| const char *name | 单个扩展项的键，格式为C字符串。字符串长度限制为128。 |
| const char *value | 单个扩展项的值内容首地址。字符串长度跟随系统限制。 |
| size_t value_size | 单个扩展项的值内容长度。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| OH_AI_API OH_AI_Status | OH_AI_Status 执行状态码，若成功返回OH_AI_STATUS_SUCCESS，失败则返回具体错误码。 |