Welcome to the repository for "CiMLoop: A Flexible, Accurate, and Fast Compute-In-Memory Modeling Tool" by Tanner Andrulis, Vivienne Sze, and Joel S. Emer. CiMLoop is a full-stack CiM modeling tool with flexible user-defined systems and fast, accurate statistical energy modeling.
This repository contains tutorials, examples, documentation, and an artifact for the CiMLoop paper. All are accessible through the Docker container.
For the paper or presentations relating to CiMLoop, please visit the project website.
git clone https://github.com/mit-emze/cimloop.git
cd cimloop
export DOCKER_ARCH=<your processor architecture. supported: amd64>
# arm64 is also supported, BUT IS NOT STABLE. Use at your own risk.
# It is recommended to build Timeloop and Accelergy from source if you're
# using an ARM machine.
docker-compose pull
docker-compose up
# Connect to the container and explore CiMLoop! The README.md file
# in the workspace directory contains more information.
# If you have permission issues, please see the instructions in the
# docker-compose.yaml file on how to set the UID and GID.
The README.md in the workspace directory contains more information on how to use CiMLoop.
The [Timeloop and Accelergy tutorials]
(https://github.com/Accelergy-Project/timeloop-accelergy-exercises) are a
prerequisite for using CiMLoop as well, so please complete those first. CiMLoop
tutorials are available in the workspace/tutorials
directory.
CiMLoop published results can be reproduced by running the
models/arch/1_macro/*/_guide.ipynb
notebooks and the
tutorials/demo_speed_accuracy.ipynb
notebook in the workspace.
CiMLoop includes a model of the Albireo silicon photonic accelerator as described in "Architecture-Level Modeling of Photonic Deep Neural Network Accelerators" (Andrulis et al., ISPASS 2024).
Documentation can be found at the following locations:
- CiMLoop Paper
- Timeloop+Accelergy Documentation
- Timeloop+Accelergy Exercises
- Timeloop Front-End Documentation
If you would like to contribute models of memory cells, components, architectures, workloads, or anything else, please submit a pull request. We welcome contributions!
If you use CiMLoop in your research, please cite the papers in citations.bib.