# hrut_bpuprofile

`hrut_bpuprofile` 用于配置和查询 BPU（硬件加速单元）相关参数，包括电源、时钟、频率、使用率等。

## 语法说明

以下是执行 `hrut_bpuprofile -h` 输出的 `Usage`：

```bash
BPU PROFILE HELP INFORMATION
>>> -b/--bpu         [BPU CORE,0--bpu0] (required)
>>> -p/--power       [POWER OFF/ON,0--OFF,1--ON]
>>> -c/--clock       [CLOCK OFF/ON,0--OFF,1--ON]
>>> -t/--time        [GET FC TIME,NO ARGUMENT]
>>> -f/--frq         [SET BPU FREQUENCY,ARGUMENT:N]
>>> -r/--ratio       [BPU RATIO,N--N TIMES,0--FOREVER]
```

## 参数选项说明

以下是 `hrut_bpuprofile` 支持的选项及其说明：

- `-b` 或 --`bpu`：指定 BPU 核心编号（ 0 表示 BPU0 ）。
- `-p` 或 --`power`：设置 BPU 的电源状态（ 0 表示关闭， 1 表示开启）。
- `-c` 或 --`clock`：设置 BPU 的时钟状态（ 0 表示关闭， 1 表示开启）。
- `-t` 或 --`time`：获取 BPU 的 FC 时间（无参数）。
- `-f` 或 --`frq`：设置 BPU 的工作频率（参数为频率值）。
- `-r` 或 --`ratio`：设置 BPU 的使用率（参数为 N 表示 N 次， 0 表示永久）。
- `-h` 或 --`help`：显示帮助信息，解释命令的使用方法。

## 各项命令选项及其功能说明

### 设置 BPU 电源

开启命令：

```bash
root@buildroot:~# hrut_bpuprofile -b 0 -p 1
```

功能：
设置 BPU 核心 0 的电源状态为开启，

关闭命令：

```bash
root@buildroot:~# hrut_bpuprofile -b 0 -p 0
```

功能：

设置 BPU 核心 0 的电源状态为关闭。

打印输出：

```bash
set bpu[0] power
```

### 设置 BPU 时钟

开启命令：

```bash
root@buildroot:~# hrut_bpuprofile -b 0 -c 1
```

打印输出：

```bash
bpu[0] clock is enable
```

功能：
设置 BPU 核心 0 的时钟状态为开启。

关闭命令：

```bash
root@buildroot:~# hrut_bpuprofile -b 0 -c 0
```

功能：
设置 BPU 核心 0 的时钟状态为关闭。

打印输出：

```bash
bpu[0] clock is disable
```

### 获取 BPU FC 时间

命令：

```bash
hrut_bpuprofile -b 0 -t
```

功能：

该命令会获取 BPU 核心 0 的 FC 时间（ Flow Control Time，流控时间），这通常是指 BPU 在处理任务时的详细时间信息，包括任务的开始时间、结束时间和运行时间等。

打印输出：

```bash
root@buildroot:/userdata# hrut_bpuprofile -b 0 -t
index   id:hwid         group   prio    s_time  e_time  r_time
916     1:458   16:4447 0       6016162 6016193 30977us
918     1:459   16:4447 0       6016194 6016224 30692us
920     1:460   16:4447 0       6016225 6016256 30760us
922     1:461   16:4447 0       6016257 6016288 31173us
924     1:462   16:4447 0       6016289 6016320 31009us
926     1:463   16:4447 0       6016321 6016352 31564us
928     1:464   16:4447 0       6016353 6016384 30351us
930     1:465   16:4447 0       6016385 6016415 30401us
932     1:466   16:4447 0       6016416 6016445 29305us
```

结果解析：

- **index**：表示任务的索引编号，用于标识不同的任务。
- **id:hwid**：表示任务的 ID 和硬件 ID。
- **group**：表示任务所属的组。
- **prio**：表示任务的优先级。
- **s_time**：表示任务的开始时间（ Start Time），单位是系统的时间单位（ us）。
- **e_time**：表示任务的结束时间（ End Time），单位是系统的时间单位（ us）。
- **r_time**：表示任务的运行时间（ Run Time），单位是系统的时间单位（ us）。

### 设置 BPU 频率

命令：

```bash
 hrut_bpuprofile -b 0 -f 500000000
```

功能：

设置 BPU 核心 0 的工作频率为 500 MHz。

打印输出：

```bash
current bpu[0] frequency:500000000
```

验证方法：

在 `/app/platform_samples/chip_base_test/01_cpu_bpu_ddr/` 路径下运行 `cpu_bpu_ddr` 压测脚本，使用方式跳转至 **[CPU_BPU_DDR_STRESS](../chip_base_test/1-bpu_cpu_ddr_stress.html#span-id-use-by-bpustress)**，使用该命令设置 BPU 频率后，运行压测脚本输出如下：

```bash
root@buildroot:/userdata/01_cpu_bpu_ddr/scripts# ./stress_test.sh
Running stress test with the following configuration:
  Stress Time: 48h hours (172800 seconds)
  Memory Size: 100 MB
  I/O Threads: 4
  BPU Core: 0
  BPU Portion: 100%
  Output directory: /userdata/log
Starting CPU stress test...
nohup: redirecting stderr to stdout
Starting BPU stress test...
=====================1=====================
temperature-->
        DDR      : 61.7 (C)
75759
cat: /sys/class/hwmon/hwmon0/temp2_input: Connection timed out
        BPU      : 0.0 (C)
        CPU      : 62.6 (C)
cpu frequency-->
              min(M)    cur(M)  max(M)
        cpu0: 300       1500    1500
        cpu1: 300       1500    1500
        cpu2: 300       1500    1500
        cpu3: 300       1500    1500
        cpu4: 300       1500    1500
        cpu5: 300       1500    1500
        cpu6: 300       1500    1500
        cpu7: 300       1500    1500
bpu status information---->
              min(M)    cur(M)  max(M)  ratio
        bpu0: 500       500     1000    99
ddr frequency information---->
              min(M)    cur(M)  max(M)
        ddr:  266       4266    4266
GPU gc8000 frequency information---->
              min(M)    cur(M)  max(M)
        gc8000:  200    1000    1000
```

可以看到 BPU 当前的默认频率由 1000 MHz 变为了 500 MHz，同理，查看 BPU 使用率该方式也同样适用。

命令：

```bash
hrut_bpuprofile -b 0 -f 1000000000
```

功能：

设置 BPU 核心 0 的工作频率为 1000 MHz。

打印输出：

```bash
current bpu[0] frequency:996000000
```

<font color=red> 注意：</font>

由于分频系数限制，无法精确生成 1000MHZ。

### 设置 BPU 使用率显示

命令：

```bash
hrut_bpuprofile -b 0 -r 5
```

功能：

设置 BPU0 的使用率输出为 5 次。

打印输出：

```bash
root@buildroot:/userdata# hrut_bpuprofile -b 0 -r 5
BPU   RATIO    FREE QUEUE
0    100%       1023
```

结果解析：

- BPU：表示当前操作的 BPU 核心编号，这里是 0 ，即 bpu0 。
- RATIO：表示当前 BPU 核心的使用率。
- FREE QUEUE：表示当前 BPU 核心的空闲队列数量，空闲队列数量通常反映了 BPU 的当前负载情况。

### 显示帮助信息

命令：

```bash
hrut_bpuprofile -h
```

功能：

显示帮助信息，解释命令的使用方法。

打印输出：

```bash
BPU PROFILE HELP INFORMATION
>>> -b/--bpu         [BPU CORE,0--bpu0] (required)
>>> -p/--power       [POWER OFF/ON,0--OFF,1--ON]
>>> -c/--clock       [CLOCK OFF/ON,0--OFF,1--ON]
>>> -t/--time        [GET FC TIME,NO ARGUMENT]
>>> -f/--frq         [SET BPU FREQUENCY,ARGUMENT:N]
>>> -r/--ratio       [BPU RATIO,N--N TIMES,0--FOREVER]
```