Skip to content

Benchmarks 2024 02 20 TFLM LLVM

GitHub Action edited this page Feb 20, 2024 · 1 revision

Setup

Simulator

Toolchains

  • LLVM/Clang:
    • TODO: Version
    • Linker: lld (TODO)
    • RISC-V GCC for Headers, libc,...

Models

Package Versions

  • MLonMCU : main

  • TFLM : main

  • Spike : 0bc176b3fca43560b9e8586cdbc41cfde073e17a

  • Spike PK : 7e9b671c0415dfd7b562ac934feb9380075d4aa2

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: llvm)

Audio Wake Words (aww)

Cycles (Speedup) Total ROM (rel.) Total RAM (rel.) VLEN Kernels Mode Arch Auto-Vectorization
43849979
( 0.4x )
146710
( 0.864 )
36124
( 1.0 )
0 TFLM Reference RV32GC -
34194781
( 0.5x )
152484
( 0.898 )
36132
( 1.0 )
128 TFLM Reference RV32GCV Loop+SLP
31057605
( 0.5x )
152484
( 0.898 )
36132
( 1.0 )
1024 TFLM Reference RV32GCV Loop+SLP
15553915
( Base )
169764
( Base )
36124
( Base )
0 muRISCV-NN Scalar RV32GC -
6139962
( 2.5x )
181040
( 1.066 )
36132
( 1.0 )
128 muRISCV-NN Scalar RV32GCV Loop+SLP
4316923
( 3.6x )
181040
( 1.066 )
36132
( 1.0 )
1024 muRISCV-NN Scalar RV32GCV Loop+SLP
6655337
( 2.3x )
169342
( 0.998 )
36124
( 1.0 )
128 muRISCV-NN Vector RV32GCV -
2529245
( 6.1x )
169342
( 0.998 )
36124
( 1.0 )
1024 muRISCV-NN Vector RV32GCV -

Image Classification (resnet)

Cycles (Speedup) Total ROM (rel.) Total RAM (rel.) VLEN Kernels Mode Arch Auto-Vectorization
134756807
( 0.4x )
188332
( 0.925 )
68892
( 1.0 )
0 TFLM Reference RV32GC -
58895120
( 1.0x )
194258
( 0.954 )
68900
( 1.0 )
128 TFLM Reference RV32GCV Loop+SLP
46357756
( 1.3x )
194258
( 0.954 )
68900
( 1.0 )
1024 TFLM Reference RV32GCV Loop+SLP
58389211
( Base )
203590
( Base )
68888
( Base )
0 muRISCV-NN Scalar RV32GC -
28236740
( 2.1x )
215314
( 1.058 )
68896
( 1.0 )
128 muRISCV-NN Scalar RV32GCV Loop+SLP
13686219
( 4.3x )
215314
( 1.058 )
68896
( 1.0 )
1024 muRISCV-NN Scalar RV32GCV Loop+SLP
27961963
( 2.1x )
203862
( 1.001 )
68888
( 1.0 )
128 muRISCV-NN Vector RV32GCV -
8020141
( 7.3x )
203862
( 1.001 )
68888
( 1.0 )
1024 muRISCV-NN Vector RV32GCV -

Anomaly Detection (toycar)

Cycles (Speedup) Total ROM (rel.) Total RAM (rel.) VLEN Kernels Mode Arch Auto-Vectorization
3052975
( 0.6x )
342160
( 0.987 )
19376
( 1.0 )
0 TFLM Reference RV32GC -
895486
( 2.1x )
343940
( 0.992 )
19376
( 1.0 )
128 TFLM Reference RV32GCV Loop+SLP
492510
( 3.7x )
343940
( 0.992 )
19376
( 1.0 )
1024 TFLM Reference RV32GCV Loop+SLP
1846118
( Base )
346748
( Base )
19376
( Base )
0 muRISCV-NN Scalar RV32GC -
620218
( 3.0x )
350296
( 1.01 )
19376
( 1.0 )
128 muRISCV-NN Scalar RV32GCV Loop+SLP
387846
( 4.8x )
350296
( 1.01 )
19376
( 1.0 )
1024 muRISCV-NN Scalar RV32GCV Loop+SLP
591777
( 3.1x )
346756
( 1.0 )
19376
( 1.0 )
128 muRISCV-NN Vector RV32GCV -
418329
( 4.4x )
346756
( 1.0 )
19376
( 1.0 )
1024 muRISCV-NN Vector RV32GCV -

Visual Wake Words (vww)

Cycles (Speedup) Total ROM (rel.) Total RAM (rel.) VLEN Kernels Mode Arch Auto-Vectorization
114164825
( 0.4x )
420470
( 0.948 )
134452
( 1.0 )
0 TFLM Reference RV32GC -
72029724
( 0.6x )
426196
( 0.961 )
134460
( 1.0 )
128 TFLM Reference RV32GCV Loop+SLP
63384332
( 0.7x )
426196
( 0.961 )
134460
( 1.0 )
1024 TFLM Reference RV32GCV Loop+SLP
46648207
( Base )
443524
( Base )
134452
( Base )
0 muRISCV-NN Scalar RV32GC -
19561414
( 2.4x )
454736
( 1.025 )
134460
( 1.0 )
128 muRISCV-NN Scalar RV32GCV Loop+SLP
14765683
( 3.2x )
454736
( 1.025 )
134460
( 1.0 )
1024 muRISCV-NN Scalar RV32GCV Loop+SLP
21023473
( 2.2x )
443094
( 0.999 )
134452
( 1.0 )
128 muRISCV-NN Vector RV32GCV -
10336293
( 4.5x )
443094
( 0.999 )
134452
( 1.0 )
1024 muRISCV-NN Vector RV32GCV -

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