GithubHelp home page GithubHelp logo

hanhwi / eyerissf Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jneless/eyerissf

0.0 1.0 0.0 1.17 MB

An Eyeriss Chip (researched by MIT, a CNN accelerator) simulator and New DNN framework "Hive"

License: GNU Lesser General Public License v2.1

Python 99.99% Shell 0.01%

eyerissf's Introduction

Eyeriss Chip simulator

fully powered by Jialinli

What's Eyeriss chip ?

  • Eyeriss is an AI accelerator, researched by Massachusetts Institute of Technology
  • EyerissF is a python-made Eyeriss simulator, aiming to test eyeriss capability.

Vital reference from MIT !

  1. Eyeriss: An Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks [ISSIC 2016] here

  2. Eyeriss: An Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks slides [ISSIC 2016] here

  3. Hardware Architectures for Deep Neural Networks [ISCA 2017] here

  4. Eyeriss: A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks [ISCA 2016] here

  5. DNN Accelerator Architectures slides [ISCA 2017] here

Eyeriss brief introduction

Eyeriss is an accelerator that can deliver state-of-the- art accuracy with minimum energy consumption in the system (including DRAM) in real-time, by using two key methods:

  1. efficient dataflow and supporting hardware (spatial array, memory hierarchy and on-chip network) that minimize data movement by exploiting data reuse and support different shapes;
  2. exploit data statistics to minimize energy through zeros skipping/gating to avoid unnecessary reads and computations; and data compression to reduce off-chip memory bandwidth, which is the most expensive data movement.

How can we modify CNN calculation?

From CNN defined calculation to new CNN Calculation, via new ASIC chip, we found a few processes could be combine together or run parallelly.

  • high parallelism

This pic shows the dataflow within the array for filter weights, image values and partial sums. If the filter height (R) equals the number of rows in the array , the logical dataflow would be as follows:

  1. filter weights are fed from the buffer into the left column of the array (one filter row per PE) and the filter weights move from left to right within the array.
  2. image values are fed into the left column and bottom row of the array (one image row per PE) and the image values move up diagonally.
  3. partial sums for each output row move up vertically, and can be read out of the top row at the end of the computational pass. If the partial sums are used in the next pass, they are fed into the bottom row of the array from the buffer at the beginning of the next computational pass.
  • data reuse
    • Convolutional reuse
    • Image reuse
    • Filter reuse

While existing dataflows attempt to maximize certain types of input data reuse or minimize the psum accumulation cost, they fail to take all of them into account at once. This results in inefficiency when the layer shape or hardware resources vary. Therefore, it would be desirable if the dataflow could adapt to different conditions and optimize for all types of data movement energy costs. In this section, we will introduce a novel dataflow, called row stationary (RS) that achieves this goal. The RS dataflow is a key feature of the Eyeriss architecture, which has been implemented in a fabricated chip.

Eyeriss structure

How can I leverage THIS REPOSITY?

File structure

Hive platform

Hive is a new CNN platform based on Eyeriss chip or EyerissF simulator, which contains basic funxs to establish CNN. Eyeriss or EyerissF just only an ASIC chip and python-made simulator and can not achieve any tasks. In order to do pattern regonization tasks, it must have a mature platform to support standard input data. Hive is aiming to tranfor 3-channel jpg pics to input Eyeriss supported stream and decompress results.

If u wanna use hive to create CNN, u should do following steps:

  1. init EyerissF simulator
ef = EyerissF()

or

ef = EyerissF("manual")
  1. init Hive
hive = Hive(ef)

Other funxs from Hive

  1. convolution ( Eyeriss Supported)
hive.conv2d(pics,filters,number of pics, number of filters)
  1. Pooling
hive.Pooling(pics)
  1. FullConnect
hive.FullConnect(vector,vector2)

contact me

please Email [email protected]

last updated

2019 May 10th

future

  1. changing name in case of any misunderstanding with 'Apache Hive'
  2. overriding file constructions to make basic code in src folder
  3. add new functions in energy stream calculation between different storage layers

eyerissf's People

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.