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.
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.
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.
- 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)
- Mess with possibility of differently shaped systolic arrays such as triangle which would calculate with 3 converging arrays.
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.
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
Chisel Bootcamp Chisel3 structure and naming SBT docs chiseltest
