Benchmarks 2023 01 28 - tum-ei-eda/muriscv-nn GitHub Wiki

Setup

Simulator

Toolchains

Models

Package Versions

  • MLonMCU : 2ab749d3747c04f3b01973ef955bda5be0964f0f
  • TFLM : f050eec7e32a0895f7658db21a4bdbd0975087a5
  • TVM : Nightly Pre-Build
  • 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

Frameworks

Benchmarks exist for integration with TensorFlow Lite for Microcontrollers (TFLM) and TVM.

TFLite for Microcontrollers

Comparing reference kernel implementations (Default) with cmsis-nn optimized kernels and linkage with libmuriscvnn.a.

Audio Wake Words (aww)

Cycles Total ROM Total RAM ROM read-only ROM code VLEN Kernels Extensions
153529267 144687 36192 63653 79826 0 Default
16598384 157608 36200 63656 92744 0 muRISCV-NN
9026170 157944 36208 63652 93088 64 muRISCV-NN
2135130 157944 36208 63652 93088 1024 muRISCV-NN
13983214 196006 36344 70740 120270 0 muRISCV-NN

Visual Wake Words (vww)

Cycles Total ROM Total RAM ROM read-only ROM code VLEN Kernels Extensions
433523791 418411 134508 337293 79910 0 Default
49688248 431332 134516 337296 92828 0 muRISCV-NN
27212603 431668 134524 337292 93172 64 muRISCV-NN
8775554 431668 134524 337292 93172 1024 muRISCV-NN
41516367 469722 134660 344380 120346 0 muRISCV-NN

Image Classification (resnet)

Cycles Total ROM Total RAM ROM read-only ROM code VLEN Kernels Extensions
687851073 184423 68956 102485 80730 0 Default
62519499 192280 68948 102488 88584 0 muRISCV-NN
37856218 192866 68956 102500 89162 64 muRISCV-NN
6058820 192866 68956 102500 89162 1024 muRISCV-NN
64768125 232872 69092 109572 118304 0 muRISCV-NN

Anomaly Detection (toycar)

Cycles Total ROM Total RAM ROM read-only ROM code VLEN Kernels Extensions
3434813 347340 19392 280872 65260 0 Default
1920500 349928 19392 280872 67848 0 muRISCV-NN
729214 349838 19396 280868 67766 64 muRISCV-NN
538790 349838 19396 280868 67766 1024 muRISCV-NN
1174689 389048 19536 287956 96096 0 muRISCV-NN

TVM

Using CMSIS-NN BYOC feature and linkage with libmuriscvnn.a.

Extension mapping:

  • VEXT -> cortex-m55
  • PEXT -> cortex-m7

Used data/kernel layouts:

  • Untuned: NHWC (TFLite default)
  • Tuned: NCHW (Converted using TVM)

Audio Wake Words (aww)

Cycles Total ROM Total RAM ROM read-only ROM code VLEN Kernels Extensions
31435272 117272 59448 56212 61044 0 NCHW Default
29580732 111594 59448 56212 55366 0 NHWC Default
15699726 110750 51276 56212 54522 0 NCHW Autotuned
29576111 111724 59448 56212 55496 0 NHWC Autotuned
16449679 99116 19140 36644 62456 0 muRISCV-NN
10091121 99606 23604 36644 62946 64 muRISCV-NN
3987665 99606 23604 36644 62946 1024 muRISCV-NN
13703187 100748 20292 36400 64272 0 muRISCV-NN

Visual Wake Words (vww)

Cycles Total ROM Total RAM ROM read-only ROM code VLEN Kernels Extensions
90828165 550218 180968 462932 87270 0 NCHW Default
86102169 530776 180968 462932 67828 0 NHWC Default
46356353 531550 180968 462932 68602 0 NCHW Autotuned
86102172 530780 180968 462932 67832 0 NHWC Autotuned
48514662 332812 85588 266324 66472 0 muRISCV-NN
26022393 333582 85588 266324 67242 64 muRISCV-NN
7585344 333594 85588 266324 67254 1024 muRISCV-NN
40307469 334720 85588 266080 68564 0 muRISCV-NN

Image Classification (resnet)

Cycles Total ROM Total RAM ROM read-only ROM code VLEN Kernels Extensions
138976677 226522 108360 163156 63350 0 NCHW Default
115540068 217372 108360 163156 54200 0 NHWC Default
56900335 220452 92176 163156 57280 0 NCHW Autotuned
115536141 217470 108360 163156 54298 0 NHWC Autotuned
62228697 147004 55444 87332 59656 0 muRISCV-NN
37562261 147708 55444 87332 60360 64 muRISCV-NN
5764863 147708 55444 87332 60360 1024 muRISCV-NN
64455063 150898 55444 87088 63734 0 muRISCV-NN

Anomaly Detection (toycar)

Cycles Total ROM Total RAM ROM read-only ROM code VLEN Kernels Extensions
3134840 589618 5492 537988 51614 0 NCHW Default
3134840 589618 5492 537988 51614 0 NHWC Default
2041108 617982 6804 537988 79978 0 NCHW Autotuned
2041108 617982 6804 537988 79978 0 NHWC Autotuned
1822351 324984 4692 273924 51044 0 muRISCV-NN
626122 325022 4692 273924 51082 64 muRISCV-NN
435700 325022 4692 273924 51082 1024 muRISCV-NN
1066416 327302 4692 273680 53546 0 muRISCV-NN

Code size compared to CMSIS-NN

WIP

⚠️ **GitHub.com Fallback** ⚠️