Skip to content

FloofyJin/chisel-ai-accelerator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chisel Ai Accelerator

Overview

For the purposes of this project, we are builder a particular segment of what makes ai accelerators special in modern chip. We took inspiration from UC Berkely Gemmini and Eyeriss project from MIT. We will create a generator for DNN accelerators, mainly comprised of a spatial array implementation. This would be an implementation from a broader class of AI accelerators particularly for deep learning.

aReference

Parameter

The main parameters for the generators would be the systolic array parameters - particularly the dimensions. The system will be able to interact with other components via a DMA controller for its memory banks. To allow us to focus on the important matters at hand, we will assume that matrixes will be of size n*n. By this, we mean there are same number of rows and columns.

Plans and deliverables

Our first goal would be to get the systolic arrays to get matrix multiplications working. Then eventually we would like to add additional features, such as quantization, inference engines, MACs, and possibly use an architecture for energy efficiency such as data reuse, gating, and compression. We would run the project via simulation.

If we have enough time, we would like to explore more domain specific DNN accelerators such as Binary neural networks like XNOR Net with special operations.

Currrent Progress

Done ✅

  • Matrix multiplication using systolic array in Scala
    • SystolicModel.scala
    • Able to calculate dot multiplication of fixed size n*n
    • Translation of systolic array model in chisel
    • delve into processing units with unique operations
    • Testing of Scala functionality and cleaning up code for readability(Working)

Almost Done 🏗

Work In Progress 🚧

  • Mess with possibility of differently shaped systolic arrays such as triangle which would calculate with 3 converging arrays.

JDK 8 or newer

We recommend LTS releases Java 8 and Java 11. You can install the JDK as recommended by your operating system, or use the prebuilt binaries from AdoptOpenJDK.

Testing

We recommend sbt

This program was mostly run on sbt. To test run: sbt test

You can also manually change the operant types by updating line 52 in MatMul.scala manually. eg. OpType.Add, OpType.Mul, OpType.And, OpType.Or, OpType.Xor

References

Chisel Bootcamp Chisel3 structure and naming SBT docs chiseltest

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Generated from agile-hw/chisel-template