Evaluation of Convolution Primitives for Embedded Neural Networks on 32-bit Microcontrollers

Baptiste Nguyen, Pierre-Alain Moellic, Sylvain Blayac
3/19/2023
cs.LGcs.AR

No confident code implementation found for this paper.

Abstract

Deploying neural networks on constrained hardware platforms such as 32-bit microcontrollers is a challenging task because of the large memory, computing and energy requirements of their inference process. To tackle these issues, several convolution primitives have been proposed to make the standard convolution more computationally efficient. However, few of these primitives are really implemented for 32-bit microcontrollers. In this work, we collect different state-of-the-art convolutional primitives and propose an implementation for ARM Cortex-M processor family with an open source deployment platform (NNoM). Then, we carry out experimental characterization tests on these implementations. Our benchmark reveals a linear relationship between theoretical MACs and energy consumption. Thus showing the advantages of using computationally efficient primitives like shift convolution. We discuss about the significant reduction in latency and energy consumption due to the use of SIMD instructions and highlight the importance of data reuse in those performance gains. For reproducibility purpose and further experiments, codes and experiments are publicly available.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. Any repos shown below are weak matches — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Similar Papers

Cite this paper

@article{nguyen2023evaluation,
  title  = {Evaluation of Convolution Primitives for Embedded Neural Networks on 32-bit Microcontrollers},
  author = {Baptiste Nguyen and Pierre-Alain Moellic and Sylvain Blayac},
  year   = {2023},
  eprint = {2303.10702},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2303.10702v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2303.10702.svg)](https://codeofpaper.com/paper/2303.10702)

Discussion