Overview

Introduction

The embARC Machine Learning Inference Library (MLI Library) is the basis for machine learning inference for lower power families of ARCv2 DSP cores (ARC EMxD and ARC HS4xD). Its purpose is to enable porting of machine learning models mostly based on NN to ARC processors.

The library is a collection of ML algorithms (primitives) that roughly can be separated into the following groups:

  • Convolution - convolve input features with a set of trained weights
  • Pooling – pool input features with a function
  • Common - Common ML, mathematical, and statistical operations
  • Transform - Transform each element of input set according to a particular function
  • Element-wise - Apply multi-operand function element-wise to several inputs
  • Data manipulation - Move input data by a specified pattern

MLI supported primitives are intended for:

  • ease of use
  • inferring efficient solutions for small/middle models using very limited resources.

Terms and Definitions

AGU
Address Generation Unit
ARC EMxD
Family of 32-bit ARC processor cores. Single core, 3-step pipeline, ARCv2DSP
ARC HS4xD
Family of 32-bit ARC processor cores. Multi core, dual issue, 10-step pipeline, ARCv2DSP
ARCv2DSP
Synopsys DesignWare® ARC® Processors family of 32-bit CPUs
CHW
Channel-Height-Width data layout
DMA
Direct memory Access
DSP
Digital Signal Processor
HWC
Height-Width-Channel data layout
IoT
Internet Of Things
MAC
Multiple Accumulate
ML
Machine Learning
MLI kernel
Basic operation on tensors in ML model, provided by MLI Library as C-style API function. Typically does not imply any intermediate copying.
MLI Library
Machine Learning Inference Library
MWDT
MetaWare Development Tool set
NN
Neural Network
Primitive
Basic ML functionality implemented as MLI Kernel or MLI Layer (Convolution 2D, Fully connected, and so on)
ReLU
Rectified Linear Unit
TCF
Tool Configuration File. Holds information about ARC processor build configuration and extensions.
Tensor
Object that contains binary data and its complete description, such as dimensions, element data type, and so on.