Skip to content

Benchmarks 2024 11 26 TFLM GCC Os spike_rv32

GitHub Action edited this page Nov 26, 2024 · 1 revision

Setup

Simulator

  • Spike (riscv-isa-sim ) (ISS, CPI=1)
    • Spike : eb0a3e2b0a7c57522928be39de95cd9f8c6dc636
    • Spike PK : fix-gcc14-rvv

Toolchains

Models

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: -Os, Target: spike_rv32 )

Audio Wake Words (aww)

Cycles (Speedup) Total ROM (rel.) Total RAM (rel.) VLEN Kernels Mode Arch Unroll Auto-Vectorization
175176332.0
( 0.1x )
134982
( 0.878 )
36140
( 1.0 )
0 TFLM Reference RV32GC 0 -
175171178.0
( 0.1x )
135290
( 0.88 )
36172
( 1.001 )
128 TFLM Reference RV32GCV 0 Loop+SLP
175171178.0
( 0.1x )
135290
( 0.88 )
36172
( 1.001 )
256 TFLM Reference RV32GCV 0 Loop+SLP
175171178.0
( 0.1x )
135290
( 0.88 )
36172
( 1.001 )
512 TFLM Reference RV32GCV 0 Loop+SLP
175171178.0
( 0.1x )
135290
( 0.88 )
36172
( 1.001 )
1024 TFLM Reference RV32GCV 0 Loop+SLP
175171178.0
( 0.1x )
135290
( 0.88 )
36172
( 1.001 )
2048 TFLM Reference RV32GCV 0 Loop+SLP
175171178.0
( 0.1x )
135290
( 0.88 )
36172
( 1.001 )
4096 TFLM Reference RV32GCV 0 Loop+SLP
17307266.0
( Base )
153668
( Base )
36148
( Base )
0 muRISCV-NN Scalar RV32GC 0 -
17313741.0
( 1.0x )
153548
( 0.999 )
36148
( 1.0 )
0 muRISCV-NN Vector (Portable) RV32GC 0 -
17306778.0
( 1.0x )
154030
( 1.002 )
36180
( 1.001 )
128 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
17306778.0
( 1.0x )
154030
( 1.002 )
36180
( 1.001 )
256 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
17306778.0
( 1.0x )
154030
( 1.002 )
36180
( 1.001 )
512 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
17306778.0
( 1.0x )
154030
( 1.002 )
36180
( 1.001 )
1024 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
17306778.0
( 1.0x )
154030
( 1.002 )
36180
( 1.001 )
2048 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
17306778.0
( 1.0x )
154030
( 1.002 )
36180
( 1.001 )
4096 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
4636236.0
( 3.7x )
156278
( 1.017 )
36148
( 1.0 )
128 muRISCV-NN Vector RV32GCV 0 -
3296310.0
( 5.3x )
156278
( 1.017 )
36148
( 1.0 )
256 muRISCV-NN Vector RV32GCV 0 -
2567596.0
( 6.7x )
156278
( 1.017 )
36148
( 1.0 )
512 muRISCV-NN Vector RV32GCV 0 -
2525716.0
( 6.9x )
156278
( 1.017 )
36148
( 1.0 )
1024 muRISCV-NN Vector RV32GCV 0 -
2529107.0
( 6.8x )
156278
( 1.017 )
36148
( 1.0 )
2048 muRISCV-NN Vector RV32GCV 0 -
2532497.0
( 6.8x )
156278
( 1.017 )
36148
( 1.0 )
4096 muRISCV-NN Vector RV32GCV 0 -
17313754.0
( 1.0x )
153908
( 1.002 )
36180
( 1.001 )
128 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
17313754.0
( 1.0x )
153908
( 1.002 )
36180
( 1.001 )
256 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
17313754.0
( 1.0x )
153908
( 1.002 )
36180
( 1.001 )
512 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
17313754.0
( 1.0x )
153908
( 1.002 )
36180
( 1.001 )
1024 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
17313754.0
( 1.0x )
153908
( 1.002 )
36180
( 1.001 )
2048 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
17313754.0
( 1.0x )
153908
( 1.002 )
36180
( 1.001 )
4096 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP

Image Classification (resnet)

Cycles (Speedup) Total ROM (rel.) Total RAM (rel.) VLEN Kernels Mode Arch Unroll Auto-Vectorization
746696943.0
( 0.1x )
175586
( 0.934 )
68904
( 1.0 )
0 TFLM Reference RV32GC 0 -
746696807.0
( 0.1x )
175834
( 0.935 )
68936
( 1.001 )
128 TFLM Reference RV32GCV 0 Loop+SLP
746696636.0
( 0.1x )
175860
( 0.935 )
68940
( 1.001 )
256 TFLM Reference RV32GCV 0 Loop+SLP
746696636.0
( 0.1x )
175860
( 0.935 )
68940
( 1.001 )
512 TFLM Reference RV32GCV 0 Loop+SLP
746696636.0
( 0.1x )
175860
( 0.935 )
68940
( 1.001 )
1024 TFLM Reference RV32GCV 0 Loop+SLP
746696636.0
( 0.1x )
175860
( 0.935 )
68940
( 1.001 )
2048 TFLM Reference RV32GCV 0 Loop+SLP
746696636.0
( 0.1x )
175860
( 0.935 )
68940
( 1.001 )
4096 TFLM Reference RV32GCV 0 Loop+SLP
79928051.0
( Base )
188050
( Base )
68896
( Base )
0 muRISCV-NN Scalar RV32GC 0 -
79019111.0
( 1.0x )
187804
( 0.999 )
68896
( 1.0 )
0 muRISCV-NN Vector (Portable) RV32GC 0 -
79928264.0
( 1.0x )
188566
( 1.003 )
68928
( 1.0 )
128 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
79928042.0
( 1.0x )
188370
( 1.002 )
68932
( 1.001 )
256 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
79928042.0
( 1.0x )
188370
( 1.002 )
68932
( 1.001 )
512 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
79928042.0
( 1.0x )
188370
( 1.002 )
68932
( 1.001 )
1024 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
79928042.0
( 1.0x )
188370
( 1.002 )
68932
( 1.001 )
2048 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
79928042.0
( 1.0x )
188370
( 1.002 )
68932
( 1.001 )
4096 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
17065996.0
( 4.7x )
191494
( 1.018 )
68896
( 1.0 )
128 muRISCV-NN Vector RV32GCV 0 -
11009880.0
( 7.3x )
191494
( 1.018 )
68896
( 1.0 )
256 muRISCV-NN Vector RV32GCV 0 -
8248062.0
( 9.7x )
191494
( 1.018 )
68896
( 1.0 )
512 muRISCV-NN Vector RV32GCV 0 -
6900510.0
( 11.6x )
191494
( 1.018 )
68896
( 1.0 )
1024 muRISCV-NN Vector RV32GCV 0 -
5897325.0
( 13.6x )
191494
( 1.018 )
68896
( 1.0 )
2048 muRISCV-NN Vector RV32GCV 0 -
5630387.0
( 14.2x )
191494
( 1.018 )
68896
( 1.0 )
4096 muRISCV-NN Vector RV32GCV 0 -
79024517.0
( 1.0x )
188320
( 1.001 )
68928
( 1.0 )
128 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
79024240.0
( 1.0x )
188124
( 1.0 )
68932
( 1.001 )
256 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
79024240.0
( 1.0x )
188124
( 1.0 )
68932
( 1.001 )
512 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
79024240.0
( 1.0x )
188124
( 1.0 )
68932
( 1.001 )
1024 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
79024240.0
( 1.0x )
188124
( 1.0 )
68932
( 1.001 )
2048 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
79024240.0
( 1.0x )
188124
( 1.0 )
68932
( 1.001 )
4096 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP

Anomaly Detection (toycar)

Cycles (Speedup) Total ROM (rel.) Total RAM (rel.) VLEN Kernels Mode Arch Unroll Auto-Vectorization
3119139.0
( 0.6x )
336328
( 0.987 )
19424
( 1.0 )
0 TFLM Reference RV32GC 0 -
3119091.0
( 0.6x )
336484
( 0.987 )
19424
( 1.0 )
128 TFLM Reference RV32GCV 0 Loop+SLP
3119091.0
( 0.6x )
336484
( 0.987 )
19424
( 1.0 )
256 TFLM Reference RV32GCV 0 Loop+SLP
3119091.0
( 0.6x )
336484
( 0.987 )
19424
( 1.0 )
512 TFLM Reference RV32GCV 0 Loop+SLP
3119091.0
( 0.6x )
336484
( 0.987 )
19424
( 1.0 )
1024 TFLM Reference RV32GCV 0 Loop+SLP
3119091.0
( 0.6x )
336484
( 0.987 )
19424
( 1.0 )
2048 TFLM Reference RV32GCV 0 Loop+SLP
3119091.0
( 0.6x )
336484
( 0.987 )
19424
( 1.0 )
4096 TFLM Reference RV32GCV 0 Loop+SLP
1839069.0
( Base )
340768
( Base )
19424
( Base )
0 muRISCV-NN Scalar RV32GC 0 -
3188381.0
( 0.6x )
340770
( 1.0 )
19424
( 1.0 )
0 muRISCV-NN Vector (Portable) RV32GC 0 -
1839140.0
( 1.0x )
341054
( 1.001 )
19424
( 1.0 )
128 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
1839140.0
( 1.0x )
341054
( 1.001 )
19424
( 1.0 )
256 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
1839140.0
( 1.0x )
341054
( 1.001 )
19424
( 1.0 )
512 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
1839140.0
( 1.0x )
341054
( 1.001 )
19424
( 1.0 )
1024 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
1839140.0
( 1.0x )
341054
( 1.001 )
19424
( 1.0 )
2048 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
1839140.0
( 1.0x )
341054
( 1.001 )
19424
( 1.0 )
4096 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
1981796.0
( 0.9x )
343088
( 1.007 )
19424
( 1.0 )
128 muRISCV-NN Vector RV32GCV 0 -
1854988.0
( 1.0x )
343088
( 1.007 )
19424
( 1.0 )
256 muRISCV-NN Vector RV32GCV 0 -
1791584.0
( 1.0x )
343088
( 1.007 )
19424
( 1.0 )
512 muRISCV-NN Vector RV32GCV 0 -
1760278.0
( 1.0x )
343088
( 1.007 )
19424
( 1.0 )
1024 muRISCV-NN Vector RV32GCV 0 -
1756329.0
( 1.0x )
343088
( 1.007 )
19424
( 1.0 )
2048 muRISCV-NN Vector RV32GCV 0 -
1757696.0
( 1.0x )
343088
( 1.007 )
19424
( 1.0 )
4096 muRISCV-NN Vector RV32GCV 0 -
3188484.0
( 0.6x )
341056
( 1.001 )
19424
( 1.0 )
128 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
3188484.0
( 0.6x )
341056
( 1.001 )
19424
( 1.0 )
256 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
3188484.0
( 0.6x )
341056
( 1.001 )
19424
( 1.0 )
512 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
3188484.0
( 0.6x )
341056
( 1.001 )
19424
( 1.0 )
1024 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
3188484.0
( 0.6x )
341056
( 1.001 )
19424
( 1.0 )
2048 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
3188484.0
( 0.6x )
341056
( 1.001 )
19424
( 1.0 )
4096 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP

Visual Wake Words (vww)

Cycles (Speedup) Total ROM (rel.) Total RAM (rel.) VLEN Kernels Mode Arch Unroll Auto-Vectorization
496732695.0
( 0.1x )
408624
( 0.956 )
134444
( 1.0 )
0 TFLM Reference RV32GC 0 -
496728033.0
( 0.1x )
408932
( 0.957 )
134476
( 1.0 )
128 TFLM Reference RV32GCV 0 Loop+SLP
496728033.0
( 0.1x )
408932
( 0.957 )
134476
( 1.0 )
256 TFLM Reference RV32GCV 0 Loop+SLP
496728033.0
( 0.1x )
408932
( 0.957 )
134476
( 1.0 )
512 TFLM Reference RV32GCV 0 Loop+SLP
496728033.0
( 0.1x )
408932
( 0.957 )
134476
( 1.0 )
1024 TFLM Reference RV32GCV 0 Loop+SLP
496728033.0
( 0.1x )
408932
( 0.957 )
134476
( 1.0 )
2048 TFLM Reference RV32GCV 0 Loop+SLP
496728033.0
( 0.1x )
408932
( 0.957 )
134476
( 1.0 )
4096 TFLM Reference RV32GCV 0 Loop+SLP
51813880.0
( Base )
427310
( Base )
134452
( Base )
0 muRISCV-NN Scalar RV32GC 0 -
52777327.0
( 1.0x )
427190
( 1.0 )
134452
( 1.0 )
0 muRISCV-NN Vector (Portable) RV32GC 0 -
51809659.0
( 1.0x )
427680
( 1.001 )
134484
( 1.0 )
128 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
51809659.0
( 1.0x )
427680
( 1.001 )
134484
( 1.0 )
256 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
51809659.0
( 1.0x )
427680
( 1.001 )
134484
( 1.0 )
512 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
51809659.0
( 1.0x )
427680
( 1.001 )
134484
( 1.0 )
1024 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
51809659.0
( 1.0x )
427680
( 1.001 )
134484
( 1.0 )
2048 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
51809659.0
( 1.0x )
427680
( 1.001 )
134484
( 1.0 )
4096 muRISCV-NN Scalar RV32GCV 0 Loop+SLP
15302391.0
( 3.4x )
429920
( 1.006 )
134452
( 1.0 )
128 muRISCV-NN Vector RV32GCV 0 -
11783439.0
( 4.4x )
429920
( 1.006 )
134452
( 1.0 )
256 muRISCV-NN Vector RV32GCV 0 -
10422267.0
( 5.0x )
429920
( 1.006 )
134452
( 1.0 )
512 muRISCV-NN Vector RV32GCV 0 -
9888617.0
( 5.2x )
429920
( 1.006 )
134452
( 1.0 )
1024 muRISCV-NN Vector RV32GCV 0 -
9841262.0
( 5.3x )
429920
( 1.006 )
134452
( 1.0 )
2048 muRISCV-NN Vector RV32GCV 0 -
9844652.0
( 5.3x )
429920
( 1.006 )
134452
( 1.0 )
4096 muRISCV-NN Vector RV32GCV 0 -
52784294.0
( 1.0x )
427558
( 1.001 )
134484
( 1.0 )
128 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
52784294.0
( 1.0x )
427558
( 1.001 )
134484
( 1.0 )
256 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
52784294.0
( 1.0x )
427558
( 1.001 )
134484
( 1.0 )
512 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
52784294.0
( 1.0x )
427558
( 1.001 )
134484
( 1.0 )
1024 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
52784294.0
( 1.0x )
427558
( 1.001 )
134484
( 1.0 )
2048 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP
52784294.0
( 1.0x )
427558
( 1.001 )
134484
( 1.0 )
4096 muRISCV-NN Vector (Portable) RV32GCV 0 Loop+SLP

Original data

Click here to download the raw files for this benchmark.

2024-11-26
2024-11-21
2024-11-19
2024-11-18
2024-07-12
2024-06-29
2024-03-02
2024-02-26
2024-02-23
2024-02-22
2024-02-20
2024-02-11
2023-12-22
Clone this wiki locally