summaryrefslogtreecommitdiff
path: root/docs/sections/testing_benchmarking.md
blob: 43bb7f433c5b511d827d8ddcce4dc718af3598f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Testing and benchmarking

- [Testing](#testing)
- [Benchmarking](#benchmarking)

## Testing

The `tests` folder has the following structure:

```tree
.
├── common
│   └── ...
├── use_case
│   ├── <usecase1>
│   │   └── ...
│   ├── <usecase2>
│   │   └── ...
└── utils
    └── ...
```

Where:

- `common`: contains tests for generic and common appplication functions.
- `use_case`: contains all the use case specific tests in the respective folders.
- `utils`: contains utilities sources used only within the tests.

When [configuring](./building.md#configuring-the-build-native-unit-test) and
[building](./building.md#Building-the-configured-project) for `native` target platform results of the build will
be placed under `build/bin/` folder, for example:

```tree
.
├── dev_ethosu_eval-<usecase1>-tests
├── dev_ethosu_eval-<usecase2>-tests
├── ethos-u-<usecase1>
└── ethos-u-<usecase1>
```

To execute unit-tests for a specific use-case in addition to the common tests:

```commandline
dev_ethosu_eval-<use_case>-tests
```

```log
[INFO] native platform initialised
[INFO] ARM Ethos-U55 Evaluation application for MPS3 FPGA Prototyping Board and FastModel

...
===============================================================================
   All tests passed (37 assertions in 7 test cases)
```

Tests output could have `[ERROR]` messages, that's alright - they are coming from negative scenarios tests.

## Benchmarking

Profiling is enabled by default when configuring the project. This will enable displaying:

- the active and idle NPU cycle counts when Arm® Ethos™-U55 is enabled (see `-DETHOS_U55_ENABLED` in
  [Build options](./building.md#build-options).
- CPU cycle counts and/or in milliseconds elapsed for inferences performed if CPU profiling is enabled
  (see `-DCPU_PROFILE_ENABLED` in [Build options](./building.md#build-options). This should be done only
  when running on a physical FPGA board as the FVP does not contain a cycle-approximate or cycle-accurate Cortex-M model.

For example:

- On the FVP:

```log
    Active NPU cycles: 5475412
    Idle NPU cycles:   702
```

- For MPS3 platform, the time duration in milliseconds is also reported when `-DCPU_PROFILE_ENABLED=1` is added to
  CMake configuration command:

```log
    Active NPU cycles: 5629033
    Idle NPU cycles:   1005276
    Active CPU cycles: 993553 (approx)
    Time in ms:        210
```

Next section of the main documentation: [Troubleshooting](../documentation.md#Troubleshooting).