muriscv-nn

muRISCV-NN is a collection of efficient deep learning kernels for embedded platforms and microcontrollers.

https://github.com/tum-ei-eda/muriscv-nn

Science Score: 75.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README
  • Academic publication links
    Links to: acm.org
  • Academic email domains
  • Institutional organization owner
    Organization tum-ei-eda has institutional domain (www.eda.ei.tum.de)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.6%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

muRISCV-NN is a collection of efficient deep learning kernels for embedded platforms and microcontrollers.

Basic Info
  • Host: GitHub
  • Owner: tum-ei-eda
  • License: apache-2.0
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 34.1 MB
Statistics
  • Stars: 85
  • Watchers: 6
  • Forks: 10
  • Open Issues: 37
  • Releases: 1
Created over 3 years ago · Last pushed 7 months ago
Metadata Files
Readme License Citation

README.md

GitHub license CI Build CI Unit Tests CI Integration Tests CI Benchmarks CI CMSIS-NN AutoSync

muRISCV-NN

muRISCV-NN is a collection of efficient deep learning kernels for embedded platforms and microcontrollers. It is based on ARM's CMSIS-NN library but targets the RISC-V ISA instead.

It offers accelerated kernels using the RISC-V "V" vector extension v1.0, and the RISC-V packed "P" extension v0.9.6.

Integration

muRISCV-NN aims to stay functionally equivalent to CMSIS-NN so that no functional difference should be noticeable to users of either CMSIS-NN or muRISCV-NN. This way, muRISCV-NN acts as a drop-in replacement for CMSIS-NN and can be used with embedded deep learning frameworks such as TensorFlow Lite for Microcontrollers (TFLM) or microTVM.

We provide integration for both TFLM and microTVM in the Integration/ directory. Using these deep learning frameworks, we are able to run the complete suit of MLPerf Tiny Deep Learning Benchmarks consisting of MobileNet, ResNet, and AutoEncoder models.

Simulation

You can simulate muRISCV-NN using a number of different simulators. We provide support for instruction-level simulators (such as Spike or riscvOVPsim), as well as register transfer level (RTL) implementations (Vicuna running on Verilator).

Please refer to the Sim/ directory for more information on each simulator and its corresponding files.

Tests

In order to ensure functional correctness on an individual kernel level, we provide a suite of unit tests in Tests/. The unit tests use the same data as upstream CMSIS-NN, thus ensuring functional equivalency.

Toolchain

muRISCV-NN supports both the RISC-V GNU Compiler vector toolchain and LLVM (which has built-in RISC-V vector support). We provide pre-compiled toolchains in the Toolchain/ directory. Additionally, we also offer instructions on how to compile and install your own toolchain.

Compatibility

See COMPATIBILITY.md for details on supported Toolchains, Simulators, Frameworks and CMSIS-NN versions.

Performance

See https://github.com/tum-ei-eda/muriscv-nn/wiki for detailed benchmark results.

Publications

  • muRISCV-NN: Challenging Zve32x Autovectorization with TinyML Inference Library for RISC-V Vector Extension (https://dl.acm.org/doi/10.1145/3637543.3652878)

CF '24 Companion: Proceedings of the 21st ACM International Conference on Computing Frontiers Workshops and Special Sessions

BibTeX:

bibtex @inproceedings{10.1145/3637543.3652878, author = {van Kempen, Philipp and Jones, Jefferson Parker and Mueller-Gritschneder, Daniel and Schlichtmann, Ulf}, title = {muRISCV-NN: Challenging Zve32x Autovectorization with TinyML Inference Library for RISC-V Vector Extension}, year = {2024}, isbn = {9798400704925}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, url = {https://doi.org/10.1145/3637543.3652878}, doi = {10.1145/3637543.3652878}, abstract = {With the rapid adoption of deep learning workloads to resource-constrained edge devices, efficient and data-parallel computing paradigms are becoming increasingly important. The RISC-V ISA provides a set of vector extensions featuring powerful data computation capabilities to accelerate deep learning workloads at the edge. However, the RISC-V ecosystem lacks a lightweight, open-source, and vendor-agnostic compute library to support these extensions on embedded platforms. After porting the existing ARM Cortex-M specific kernel implementation to the RISC-V vector ISA, we optimized the operator implementations to make the most out of the data-level parallelism provided by supported targets. In comparison to programs vectorized by LLVM's built-in auto-vectorizer, we see an up to 60\% advantage in runtime for convolutional models and large vectors while introducing less ROM overheads. Furthermore, muRISCV-NN integrates well with existing ML deployment frameworks, is bit-accurate to CMSIS-NN, and can, thus, be used as a drop-in replacement with minimal changes to the compilation flow.}, booktitle = {Proceedings of the 21st ACM International Conference on Computing Frontiers Workshops and Special Sessions}, pages = {75–78}, numpages = {4}, keywords = {Compilers, Neural Network Inference, RISC-V, Vectorization}, location = {Ischia, Italy}, series = {CF '24 Companion} }

  • From Simulation to RVV Hardware: Evaluating the muRISCV-NN TinyML Inference Library on the CanMV K230 Platform (https://mediatum.ub.tum.de/1747602?showid=1759366&style=fulltext)

Student research internship

Disclaimer: HW got provided by RISC-V International® (See https://riscv.org/risc-v-developer-boards/details/ for details)

BibTeX:

bibtex @mastersthesis{, author = {Witteler, Benedikt}, title = {From Simulation to RVV Hardware: Evaluating the muRISCV-NN TinyML Inference Library on the CanMV K230 Platform}, year = {2024}, school = {Technische Universität München}, month = {Oct} }

Acknowledgment

drawing

This research is partially funded by the German Federal Ministry of Education and Research (BMBF) within the project Scale4Edge (grant number 16ME0127).

Owner

  • Name: EDA@TUM
  • Login: tum-ei-eda
  • Kind: organization
  • Email: eda@ei.tum.de
  • Location: Munich, Germany

Open Source Repository of the Chair of Electronic Design Automation, TU Munich

Citation (CITATION.cff)

cff-version: 1.2.0
message: If you use this software, please cite both the article from preferred-citation and the software itself.
authors:
- family-names: "van Kempen"
  given-names: "Philipp"
- family-names: "Jones"
  given-names: "Jefferson Parker Jones"
- family-names: "Peddinghaus"
  given-names: "Fabian"
- family-names: "Stahl"
  given-names: "Rafael"
- family-names: "Mueller-Gritschneder"
  given-names: "Daniel"
title: "muRISCV-NN: Efficient Deep-Learning Kernels for RISC-V"
version: 0.1.0
date-released: 2022-06-20
url: "https://github.com/tum-ei-eda/muriscv-nn"
preferred-citation:
  authors:
    - family-names: van Kempen
      given-names: Philipp
    - family-names: Jones
      given-names: Jefferson Parker
    - family-names: Mueller-Gritschneder
      given-names: Daniel
    - family-names: Schlichtmann
      given-names: Ulf
  title: 'muRISCV-NN: Challenging Zve32x Autovectorization with TinyML Inference Library for RISC-V Vector Extension'
  doi: 10.1145/3637543.3652878
  url: https://doi.org/10.1145/3637543.3652878
  type: article-journal
  pages: 75–78
  year: '2024'
  isbn: '9798400704925'
  collection-title: Proceedings of the 21st ACM International Conference on Computing Frontiers Workshops and Special Sessions
  conference:
    name: CF '24 Companion
  publisher:
    name: Association for Computing Machinery
    address: New York, NY, USA

GitHub Events

Total
  • Create event: 9
  • Release event: 1
  • Issues event: 20
  • Watch event: 23
  • Delete event: 2
  • Issue comment event: 32
  • Push event: 66
  • Pull request review comment event: 13
  • Pull request review event: 13
  • Gollum event: 40
  • Pull request event: 11
  • Fork event: 5
Last Year
  • Create event: 9
  • Release event: 1
  • Issues event: 20
  • Watch event: 23
  • Delete event: 2
  • Issue comment event: 32
  • Push event: 66
  • Pull request review comment event: 13
  • Pull request review event: 13
  • Gollum event: 40
  • Pull request event: 11
  • Fork event: 5

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 1
  • Total pull requests: 1
  • Average time to close issues: 17 days
  • Average time to close pull requests: 17 days
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 1
  • Average time to close issues: 17 days
  • Average time to close pull requests: 17 days
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • PhilippvK (22)
  • fpedd (4)
  • tomhepworth (3)
  • christian-herber-nxp (2)
  • Rarity0123 (1)
  • fumao13579 (1)
  • jerryz123 (1)
  • benjaminh-13 (1)
  • upsDreamer (1)
Pull Request Authors
  • PhilippvK (25)
  • pfalz-benni (2)
  • christian-herber-nxp (1)
  • ParkerJones567 (1)
Top Labels
Issue Labels
vector (4) packed (2) cicd (2) toolchain:gcc (2) toolchain:llvm (2) integration (1) unittest (1) bench (1) sim (1) scalar (1) bug (1)
Pull Request Labels
bug (2)

Dependencies

Integration/tvm/requirements.txt pypi
  • tflite *
Sim/ETISS/requirements.txt pypi
  • GitPython *
  • argparse *
.github/workflows/OVPsim_integration_test.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
.github/workflows/benchmark_test.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/checkout v2 composite
  • actions/download-artifact v3 composite
  • actions/upload-artifact v3 composite
.github/workflows/build.yml actions
  • actions/cache v3 composite
  • actions/checkout v2 composite
.github/workflows/build_spike.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
.github/workflows/download_dependencies.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
.github/workflows/quick_benchmarks.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
.github/workflows/spike_integration_tests.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
.github/workflows/unit_tests.yml actions
  • actions/cache v3 composite
  • actions/checkout v2 composite