JAPARI : Job and Progress Alternate Inference Middleware

Overview

JAPARI is a middleware stack for doing inference on energy-harvesting intermittent systems. We implemented our JAPARI design on the Texas Instruments MSP430FR5994 LaunchPad, and used the internal low-energy accelerator (LEA) hardware for DNN inference acceleration. JAPARI consists of multiple inference functions, which are exposed via an intuitive API. Each inference function contains four major design components:

  • Data mover.
  • Kernel generator.
  • Channel generator.
  • Progress seeker.

The data mover fetches/preserves the IFM/OFM and footprints. The kernel and channel generators append footprints kernels and channels onto the IFM tile and weight kernel tiles. Upon power resumption, the progress seeker searches for the latest footprint across all preserved footprints in the preservation buffer in NVM.

Table of Contents

Directory/File Structure

Below is an explanation of the directories/files found in this repo.

├── driverlib
│   └── ...
├── dsplib
│   └── ...
├── libJAPARI
│   ├── src
│   │   ├── japari.c
│   │   ├── convolution.c
│   │   ├── fc.c
│   │   └── nonlinear.c
│   ├── japari.h
│   ├── convolution.h
│   ├── fc.h
│   └── nonlinear.h
├── main.c
├── main.h
└── model.h

driverlib/ is a set of drivers produced by Texas Instruments for accessing the peripherals found on the MSP430 family of microcontrollers.

dsplib/ is a set of highly optimized functions produced by Texas Instruments to perform many common signal processing operations on fixed-point numbers for MSP430 microcontrollers.

libJAPARI/ contains source code for basic neural network operations for JAPARI and customized drivers for LEA.

main.c contains an example to run a DNN inference.

Getting Started

Prerequisites

Here is the basic software and hardware you need to build/run the provided example.

Setup and Build

  1. Download/clone this repository
  2. Download Driver & DSP library from http://www.ti.com/
  3. Import this project to your workspace of code composer studio (CCS).
  4. Add PATH_TO_DSPLIB & PATH_TO_DIRVERLIB to library search path