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

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: -O3, Target: spike_rv64 )

Audio Wake Words (aww)

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

Image Classification (resnet)

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

Anomaly Detection (toycar)

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

Visual Wake Words (vww)

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.