/Hybrid-CIM

Primary LanguageJupyter Notebook

Hybrid CIM

This repository is modified from mit-emze/raella (github.com). The original repository contains the Timeloop/Accelergy models for ISAAC and RAELLA Compute-In-Memory accelerators.

We apply an ISAAC-like tile design to form a hybrid RRAM and SRAM CIM accelerator architecture, with the following features:

  • Hybrid Tiles for different Transformer Operations
  • NoC and NoP design for better scalability
  • Non-linear Unit
  • Inter-Op Optimization
  • Mix-precision Quantization

Usage

Starting the Container

Only x86 CPUs are currently supported. To start the container, run the following commands:

git clone https://github.com/mit-emze/raella.git
cd raella
cp docker-compose.yaml.example docker-compose.yaml
# FOLLOW THE INSTRUCTIONS IN THE docker-compose.yaml FILE
docker-compose up

Click on the link that appears in the terminal to open Jupyter, navigate to the artifact.ipynb notebook, and follow through the instructions there.

FAQ

docker-compose up yields ERROR: Service 'labs' failed to build : Build failed

Pull the docker image manually and try again:

docker pull timeloopaccelergy/timeloop-accelergy-pytorch:raella-pim-amd64

Todo List

  • Support Hybrid features
  • Run Bert models (original repository doesn't support add attention layers, so only QKV projections and FFNs)

Due Feb 29:

  • Add the conversion functions to generate problems from NNs, and support ViT (add attention layers)
  • Add Nonlinear Module into Timeloop
  • SRAM CIM latency check

Due Mar 1:

  • Integrate I-ViT

Due Mar 8:

  • Add NoC
  • Dependence-based partition & SRAM reuse
  • Inter-layer Optimization