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.
Note: This repository is a work in progress. More tutorials and documentation are on the way!
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.