S100 OpenExplorer

# #配置信息

## #环境变量

`HB_NN_LOG_LEVEL // 设置NN模块日志等级，值为0、1、2、3、4、5、6，分别对应Trace、Debug、Info、Warning、Error、Critical、Never，默认为Warning。 HB_NN_HBIR_GPU_ENABLE // 设置NN模块是否使用GPU加速，true为使用。 HB_NN_ENABLE_MEM_LRU_CACHE // 设置NN模块是否使用内存LRU缓存，true为使用，默认不使用。 HB_NN_MEM_LRU_CACHE_CLEAN_INTERVAL // 设置NN模块清理LRU缓存的时间间隔，单位为毫秒，默认为1000ms。`

## #日志等级设置说明

- 日志等级：

  `NN` 模块中的日志主要分为7个等级：

  log等级可设置为0、1、2、3、4、5、6，分别对应Trace、Debug、Info、Warning、Error、Critical、Never，默认为Warning。

- 日志等级设置规则：

  - 若发生的log等级 >= 设置的等级，则该log可以被打印，反之被屏蔽。
  - 设置的log等级越小，打印信息越多。例如：设置log等级为3，即为Warning级别，则3、4、5等级的log均可以被打印。`NN` 模块默认log等级为Warning级别，即以下log级别的信息可以被打印：Warning、Error、Critical。

## #HBIR模型推理说明

DNN支持X86环境下推理HBIR模型，由于您的环境中可能不存在GPU，因此默认不使用GPU加速。

若您的机器上存在GPU，可以通过设置环境变量 `HB_NN_HBIR_GPU_ENABLE` 为 `true` 来使用GPU加速。

注解

- 使用GPU加速时，应确保您的机器上已安装了相应的GPU驱动和CUDA环境，环境要求请参考环境部署。

- 使用GPU加速时，应确保 `libhbdnn.so` 在 `LD_LIBRARY_PATH` 所设置的目录下。

- 使用GPU加速时，可以设置控制参数中的 `deviceId` 来指定GPU进行计算，应确保设置的值在 [0, gpu_dvice_count) 范围内。

## #内存LRU缓存说明

BPU内存在BPU实际使用前，NN模块内部需要对该块内存进行特殊处理才能够正常使用，对内存的频繁处理会导致CPU负载变大，从而可能会引发性能问题。

为了解决这个问题，推理库提供了内存LRU缓存功能，通过设置环境变量 `HB_NN_ENABLE_MEM_LRU_CACHE` 为 `true` 来使用。设置方式如下：

`export HB_NN_ENABLE_MEM_LRU_CACHE=true`
注解

- NN模块内部基于LRU（最近最少使用原理）对输入输出内存进行管理，因此使用缓存功能时，您申请的内存在调用释放接口后，不会立即释放，直到缓存被清理后才会实际释放内存。可以通过设置 `HB_NN_MEM_LRU_CACHE_CLEAN_INTERVAL` 环境变量来控制缓存清理的时间间隔。

- 场景约束：您申请的内存在反复使用的情况才有收益。

- 该缓存功能只适用于NN模块。

## #L2M模型推理支持说明

UCP侧L2 Cache采用静态映射方案，需要您使用环境变量 `HB_DNN_USER_DEFINED_L2M_SIZES` 配置分配给每个BPU核心的L2 Cache大小。每个核的Size间使用 `:` 分割，单位为 `MB` ，Size值仅支持整数。 UCP会在推理准备阶段按照您的配置分配所有核心的L2 Cache。如下是几种配置示例及说明：

`export HB_DNN_USER_DEFINED_L2M_SIZES=6:6:6:6 # 4个核心，每个核心分配6MB export HB_DNN_USER_DEFINED_L2M_SIZES=0:6:0:0 # 4个核心，核1分配6MB，其他核不分配 export HB_DNN_USER_DEFINED_L2M_SIZES=12:0:0:12 # 4个核心，核0分配12MB，核3分配12MB，其他核不分配`
注意

1. 启用L2 Cache优化时，不支持推理优先级设置为抢占。

2. 多进程环境下，不同进程间L2 Cache相互独立，故需要保证各进程配置的L2 Cache总和不能超过硬件最大L2 Cache大小。

3. 最大L2 Cache大小可以通过命令 `cat /sys/kernel/debug/ion/heaps/custom` 进行查看。

页面目录