Benchmarks 2024 11 21 TFLM GCC O3 spike_rv64 - tum-ei-eda/muriscv-nn GitHub Wiki
Setup
Simulator
- Spike (
riscv-isa-sim
) (ISS, CPI=1)- Spike :
0bc176b3fca43560b9e8586cdbc41cfde073e17a
- Spike PK :
7e9b671c0415dfd7b562ac934feb9380075d4aa2
- Spike :
Toolchains
- RISC-V GCC:
- Scalar:
riscv32-unknown-elf-gcc (gc891d8dc23e) 13.2.0
- Vector:
riscv32-unknown-elf-gcc (gc891d8dc23e) 13.2.0
- Packed: Self compiled using patches found in https://github.com/riscv-collab/riscv-gcc/pull/258 and https://github.com/riscvarchive/riscv-binutils-gdb/pull/257
- Scalar:
Models
-
MLPerfTiny Benchmark
-
TODO: others!
Frameworks
-
MLonMCU :
develop
-
TFLM :
8eb6b23de4470d6a8da3131650d6a67514dfa130
Miscellaneous
- Used
-Os
flag for compilation. - Benchmarks generated using MLonMCU deployment tool with minimal efforts.
- Memory metrics are reported in Bytes
Results (Framework: tflm, Backend: tflmi, Toolchain: gcc, Flags: -O3, Target: spike_rv64 )
aww
)
Audio Wake Words (Cycles (Speedup) | Total ROM (rel.) | Total RAM (rel.) | VLEN | Kernels | Mode | Arch | Unroll | Auto-Vectorization |
---|---|---|---|---|---|---|---|---|
60125667 ( 0.3x ) |
142754 ( 0.814 ) |
38384 ( 1.0 ) |
0 | TFLM | Reference | RV64GC | 0 | - |
60125665 ( 0.3x ) |
142756 ( 0.814 ) |
38384 ( 1.0 ) |
128 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
60125665 ( 0.3x ) |
142756 ( 0.814 ) |
38384 ( 1.0 ) |
256 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
60125665 ( 0.3x ) |
142756 ( 0.814 ) |
38384 ( 1.0 ) |
512 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
60125665 ( 0.3x ) |
142756 ( 0.814 ) |
38384 ( 1.0 ) |
1024 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
60125665 ( 0.3x ) |
142756 ( 0.814 ) |
38384 ( 1.0 ) |
2048 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
60125665 ( 0.3x ) |
142756 ( 0.814 ) |
38384 ( 1.0 ) |
4096 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
15547874 ( Base ) |
175296 ( Base ) |
38392 ( Base ) |
0 | muRISCV-NN | Scalar | RV64GC | 0 | - |
15564730 ( 1.0x ) |
171678 ( 0.979 ) |
38392 ( 1.0 ) |
0 | muRISCV-NN | Vector (Portable) | RV64GC | 0 | - |
15548076 ( 1.0x ) |
175944 ( 1.004 ) |
38392 ( 1.0 ) |
128 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
15548076 ( 1.0x ) |
175944 ( 1.004 ) |
38392 ( 1.0 ) |
256 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
15548076 ( 1.0x ) |
175944 ( 1.004 ) |
38392 ( 1.0 ) |
512 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
15548076 ( 1.0x ) |
175944 ( 1.004 ) |
38392 ( 1.0 ) |
1024 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
15548076 ( 1.0x ) |
175944 ( 1.004 ) |
38392 ( 1.0 ) |
2048 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
15548076 ( 1.0x ) |
175944 ( 1.004 ) |
38392 ( 1.0 ) |
4096 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
7130498 ( 2.2x ) |
176120 ( 1.005 ) |
38392 ( 1.0 ) |
128 | muRISCV-NN | Vector | RV64GCV | 0 | - |
4944334 ( 3.1x ) |
176120 ( 1.005 ) |
38392 ( 1.0 ) |
256 | muRISCV-NN | Vector | RV64GCV | 0 | - |
3509602 ( 4.4x ) |
176120 ( 1.005 ) |
38392 ( 1.0 ) |
512 | muRISCV-NN | Vector | RV64GCV | 0 | - |
3473787 ( 4.5x ) |
176120 ( 1.005 ) |
38392 ( 1.0 ) |
1024 | muRISCV-NN | Vector | RV64GCV | 0 | - |
3473787 ( 4.5x ) |
176120 ( 1.005 ) |
38392 ( 1.0 ) |
2048 | muRISCV-NN | Vector | RV64GCV | 0 | - |
3475652 ( 4.5x ) |
176120 ( 1.005 ) |
38392 ( 1.0 ) |
4096 | muRISCV-NN | Vector | RV64GCV | 0 | - |
15564932 ( 1.0x ) |
172326 ( 0.983 ) |
38392 ( 1.0 ) |
128 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
15564932 ( 1.0x ) |
172326 ( 0.983 ) |
38392 ( 1.0 ) |
256 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
15564932 ( 1.0x ) |
172326 ( 0.983 ) |
38392 ( 1.0 ) |
512 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
15564932 ( 1.0x ) |
172326 ( 0.983 ) |
38392 ( 1.0 ) |
1024 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
15564932 ( 1.0x ) |
172326 ( 0.983 ) |
38392 ( 1.0 ) |
2048 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
15564932 ( 1.0x ) |
172326 ( 0.983 ) |
38392 ( 1.0 ) |
4096 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
resnet
)
Image Classification (Cycles (Speedup) | Total ROM (rel.) | Total RAM (rel.) | VLEN | Kernels | Mode | Arch | Unroll | Auto-Vectorization |
---|---|---|---|---|---|---|---|---|
175254908 ( 0.3x ) |
189604 ( 0.906 ) |
71152 ( 1.0 ) |
0 | TFLM | Reference | RV64GC | 0 | - |
175252877 ( 0.3x ) |
189408 ( 0.905 ) |
71152 ( 1.0 ) |
128 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
175252877 ( 0.3x ) |
189408 ( 0.905 ) |
71152 ( 1.0 ) |
256 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
175252877 ( 0.3x ) |
189408 ( 0.905 ) |
71152 ( 1.0 ) |
512 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
175252877 ( 0.3x ) |
189408 ( 0.905 ) |
71152 ( 1.0 ) |
1024 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
175252877 ( 0.3x ) |
189408 ( 0.905 ) |
71152 ( 1.0 ) |
2048 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
175252877 ( 0.3x ) |
189408 ( 0.905 ) |
71152 ( 1.0 ) |
4096 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
54373145 ( Base ) |
209342 ( Base ) |
71144 ( Base ) |
0 | muRISCV-NN | Scalar | RV64GC | 0 | - |
71909084 ( 0.8x ) |
208610 ( 0.997 ) |
71144 ( 1.0 ) |
0 | muRISCV-NN | Vector (Portable) | RV64GC | 0 | - |
54363381 ( 1.0x ) |
209576 ( 1.001 ) |
71144 ( 1.0 ) |
128 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
54363381 ( 1.0x ) |
209576 ( 1.001 ) |
71144 ( 1.0 ) |
256 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
54363381 ( 1.0x ) |
209576 ( 1.001 ) |
71144 ( 1.0 ) |
512 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
54363381 ( 1.0x ) |
209576 ( 1.001 ) |
71144 ( 1.0 ) |
1024 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
54363381 ( 1.0x ) |
209576 ( 1.001 ) |
71144 ( 1.0 ) |
2048 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
54363381 ( 1.0x ) |
209576 ( 1.001 ) |
71144 ( 1.0 ) |
4096 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
27949961 ( 1.9x ) |
215944 ( 1.032 ) |
71144 ( 1.0 ) |
128 | muRISCV-NN | Vector | RV64GCV | 0 | - |
17334385 ( 3.1x ) |
215944 ( 1.032 ) |
71144 ( 1.0 ) |
256 | muRISCV-NN | Vector | RV64GCV | 0 | - |
12550885 ( 4.3x ) |
215944 ( 1.032 ) |
71144 ( 1.0 ) |
512 | muRISCV-NN | Vector | RV64GCV | 0 | - |
10219022 ( 5.3x ) |
215944 ( 1.032 ) |
71144 ( 1.0 ) |
1024 | muRISCV-NN | Vector | RV64GCV | 0 | - |
8227838 ( 6.6x ) |
215944 ( 1.032 ) |
71144 ( 1.0 ) |
2048 | muRISCV-NN | Vector | RV64GCV | 0 | - |
7688255 ( 7.1x ) |
215944 ( 1.032 ) |
71144 ( 1.0 ) |
4096 | muRISCV-NN | Vector | RV64GCV | 0 | - |
71889822 ( 0.8x ) |
208844 ( 0.998 ) |
71144 ( 1.0 ) |
128 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
71889822 ( 0.8x ) |
208844 ( 0.998 ) |
71144 ( 1.0 ) |
256 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
71889822 ( 0.8x ) |
208844 ( 0.998 ) |
71144 ( 1.0 ) |
512 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
71889822 ( 0.8x ) |
208844 ( 0.998 ) |
71144 ( 1.0 ) |
1024 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
71889822 ( 0.8x ) |
208844 ( 0.998 ) |
71144 ( 1.0 ) |
2048 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
71889822 ( 0.8x ) |
208844 ( 0.998 ) |
71144 ( 1.0 ) |
4096 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
toycar
)
Anomaly Detection (Cycles (Speedup) | Total ROM (rel.) | Total RAM (rel.) | VLEN | Kernels | Mode | Arch | Unroll | Auto-Vectorization |
---|---|---|---|---|---|---|---|---|
2776608 ( 0.6x ) |
334312 ( 0.977 ) |
21504 ( 1.0 ) |
0 | TFLM | Reference | RV64GC | 0 | - |
2776608 ( 0.6x ) |
334304 ( 0.977 ) |
21504 ( 1.0 ) |
128 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
2776608 ( 0.6x ) |
334304 ( 0.977 ) |
21504 ( 1.0 ) |
256 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
2776608 ( 0.6x ) |
334304 ( 0.977 ) |
21504 ( 1.0 ) |
512 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
2776608 ( 0.6x ) |
334304 ( 0.977 ) |
21504 ( 1.0 ) |
1024 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
2776608 ( 0.6x ) |
334304 ( 0.977 ) |
21504 ( 1.0 ) |
2048 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
2776608 ( 0.6x ) |
334304 ( 0.977 ) |
21504 ( 1.0 ) |
4096 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
1638676 ( Base ) |
342084 ( Base ) |
21504 ( Base ) |
0 | muRISCV-NN | Scalar | RV64GC | 0 | - |
2721754 ( 0.6x ) |
342088 ( 1.0 ) |
21504 ( 1.0 ) |
0 | muRISCV-NN | Vector (Portable) | RV64GC | 0 | - |
1638733 ( 1.0x ) |
342116 ( 1.0 ) |
21504 ( 1.0 ) |
128 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
1638733 ( 1.0x ) |
342116 ( 1.0 ) |
21504 ( 1.0 ) |
256 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
1638733 ( 1.0x ) |
342116 ( 1.0 ) |
21504 ( 1.0 ) |
512 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
1638733 ( 1.0x ) |
342116 ( 1.0 ) |
21504 ( 1.0 ) |
1024 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
1638733 ( 1.0x ) |
342116 ( 1.0 ) |
21504 ( 1.0 ) |
2048 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
1638733 ( 1.0x ) |
342116 ( 1.0 ) |
21504 ( 1.0 ) |
4096 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
2023559 ( 0.8x ) |
345396 ( 1.01 ) |
21504 ( 1.0 ) |
128 | muRISCV-NN | Vector | RV64GCV | 0 | - |
1751991 ( 0.9x ) |
345396 ( 1.01 ) |
21504 ( 1.0 ) |
256 | muRISCV-NN | Vector | RV64GCV | 0 | - |
1616207 ( 1.0x ) |
345396 ( 1.01 ) |
21504 ( 1.0 ) |
512 | muRISCV-NN | Vector | RV64GCV | 0 | - |
1550732 ( 1.1x ) |
345396 ( 1.01 ) |
21504 ( 1.0 ) |
1024 | muRISCV-NN | Vector | RV64GCV | 0 | - |
1542294 ( 1.1x ) |
345396 ( 1.01 ) |
21504 ( 1.0 ) |
2048 | muRISCV-NN | Vector | RV64GCV | 0 | - |
1539871 ( 1.1x ) |
345396 ( 1.01 ) |
21504 ( 1.0 ) |
4096 | muRISCV-NN | Vector | RV64GCV | 0 | - |
2721873 ( 0.6x ) |
342120 ( 1.0 ) |
21504 ( 1.0 ) |
128 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
2721873 ( 0.6x ) |
342120 ( 1.0 ) |
21504 ( 1.0 ) |
256 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
2721873 ( 0.6x ) |
342120 ( 1.0 ) |
21504 ( 1.0 ) |
512 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
2721873 ( 0.6x ) |
342120 ( 1.0 ) |
21504 ( 1.0 ) |
1024 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
2721873 ( 0.6x ) |
342120 ( 1.0 ) |
21504 ( 1.0 ) |
2048 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
2721873 ( 0.6x ) |
342120 ( 1.0 ) |
21504 ( 1.0 ) |
4096 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
vww
)
Visual Wake Words (Cycles (Speedup) | Total ROM (rel.) | Total RAM (rel.) | VLEN | Kernels | Mode | Arch | Unroll | Auto-Vectorization |
---|---|---|---|---|---|---|---|---|
153330307 ( 0.3x ) |
416396 ( 0.928 ) |
136688 ( 1.0 ) |
0 | TFLM | Reference | RV64GC | 0 | - |
153330343 ( 0.3x ) |
416398 ( 0.928 ) |
136688 ( 1.0 ) |
128 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
153330343 ( 0.3x ) |
416398 ( 0.928 ) |
136688 ( 1.0 ) |
256 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
153330343 ( 0.3x ) |
416398 ( 0.928 ) |
136688 ( 1.0 ) |
512 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
153330343 ( 0.3x ) |
416398 ( 0.928 ) |
136688 ( 1.0 ) |
1024 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
153330343 ( 0.3x ) |
416398 ( 0.928 ) |
136688 ( 1.0 ) |
2048 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
153330343 ( 0.3x ) |
416398 ( 0.928 ) |
136688 ( 1.0 ) |
4096 | TFLM | Reference | RV64GCV | 0 | Loop+SLP |
46837647 ( Base ) |
448938 ( Base ) |
136696 ( Base ) |
0 | muRISCV-NN | Scalar | RV64GC | 0 | - |
46675429 ( 1.0x ) |
445320 ( 0.992 ) |
136696 ( 1.0 ) |
0 | muRISCV-NN | Vector (Portable) | RV64GC | 0 | - |
46838364 ( 1.0x ) |
449586 ( 1.001 ) |
136696 ( 1.0 ) |
128 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
46838364 ( 1.0x ) |
449586 ( 1.001 ) |
136696 ( 1.0 ) |
256 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
46838364 ( 1.0x ) |
449586 ( 1.001 ) |
136696 ( 1.0 ) |
512 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
46838364 ( 1.0x ) |
449586 ( 1.001 ) |
136696 ( 1.0 ) |
1024 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
46838364 ( 1.0x ) |
449586 ( 1.001 ) |
136696 ( 1.0 ) |
2048 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
46838364 ( 1.0x ) |
449586 ( 1.001 ) |
136696 ( 1.0 ) |
4096 | muRISCV-NN | Scalar | RV64GCV | 0 | Loop+SLP |
22860551 ( 2.0x ) |
449762 ( 1.002 ) |
136696 ( 1.0 ) |
128 | muRISCV-NN | Vector | RV64GCV | 0 | - |
16781991 ( 2.8x ) |
449762 ( 1.002 ) |
136696 ( 1.0 ) |
256 | muRISCV-NN | Vector | RV64GCV | 0 | - |
14470487 ( 3.2x ) |
449762 ( 1.002 ) |
136696 ( 1.0 ) |
512 | muRISCV-NN | Vector | RV64GCV | 0 | - |
13437360 ( 3.5x ) |
449762 ( 1.002 ) |
136696 ( 1.0 ) |
1024 | muRISCV-NN | Vector | RV64GCV | 0 | - |
13351556 ( 3.5x ) |
449762 ( 1.002 ) |
136696 ( 1.0 ) |
2048 | muRISCV-NN | Vector | RV64GCV | 0 | - |
13353421 ( 3.5x ) |
449762 ( 1.002 ) |
136696 ( 1.0 ) |
4096 | muRISCV-NN | Vector | RV64GCV | 0 | - |
46681110 ( 1.0x ) |
445968 ( 0.993 ) |
136696 ( 1.0 ) |
128 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
46681110 ( 1.0x ) |
445968 ( 0.993 ) |
136696 ( 1.0 ) |
256 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
46681110 ( 1.0x ) |
445968 ( 0.993 ) |
136696 ( 1.0 ) |
512 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
46681110 ( 1.0x ) |
445968 ( 0.993 ) |
136696 ( 1.0 ) |
1024 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
46681110 ( 1.0x ) |
445968 ( 0.993 ) |
136696 ( 1.0 ) |
2048 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
46681110 ( 1.0x ) |
445968 ( 0.993 ) |
136696 ( 1.0 ) |
4096 | muRISCV-NN | Vector (Portable) | RV64GCV | 0 | Loop+SLP |
Original data
Click here to download the raw files for this benchmark.