This repository aims at analyzing the system-level performance (like energy, latency and area) for Ising accelerators under variable applications.
Instead of assuming perfect hardware utilization and unlimited peripheral memories, the framework considers the under-utilization due to suboptimal mapping and peripheral memory overhead.
- The first analytical system-level simulation framework for digital Ising accelerators.
- Both serial-updating architecture and parallel-updating architecture are supported.
- Graph sparsity is considered if weight compression is applied.
- Different problem types and sizes can be flexibly configured.
| Features | MaxCut | TSP | Sudoku | MIMO |
|---|---|---|---|---|
| Problem-specific weight | Y | Y | N | N |
| Graph density | appro. 0.015 | 0.05-0.25 | 0.04 | 1 |
| Weight precision | 1b/2b | 10b-16b | 3b | ~16b |
| With magnetic field (h) | N | Y | Y | Y |
| Typical problem size (M) | 800-4,000 nodes | 10-100 cities | 81 cells | 4-32 users |
| Required Ising nodes (N) | 800-4,000 | 100-10,000 | <729 | 8-256 |
| Average gragh degree | 4-50 | 2 ( |
28 | N - 1 |
- Python Version: 3.12
- Python-deps: Automatically installed via
pipusing the provided setup script.
cd openisinghw
pip install -r ./requirements.txt
source .setupTo simulate, just run:
python main.pyWhen evaluating a different workload or architecture, just modify the input files before run the command. Input configuration files (YAML) are within the folder ./inputs (please see the readme within the folder for further details):
-
hardware: the Ising hardware architecture specification, including parallelism, memories and weight compression method.
-
mapping: the mapping constraint specification of the ising architecture.
-
workload: the Ising workload specification, like problem size, average degree, variable precision.
If the memory compiler is not available by hand, the repository has incorporated the open-sourced CACTI 6.0 for use. Just run the get_cacti_cost.py after modifying its memory specification.
Note: CACTI is not a commercial memory compiler and its results may differ from real memory compiler.
Since cost model validation is important for analytical simulation framework, we have conducted several model validations against state-of-the-art accelerators. Relevant scripts are under the folder ./model_validation (please see the readme within the folder for further details). The validation result is shown below.
To re-generate the figures of the case studies in the paper, you can run the following scripts in python:
- exp_mac.py: the script for the first case study on MAC parallelism analysis.
- exp_encoding.py: the script for the second case study on the compression method analysis.
- exp_iteration.py: the script for the thrid case study on the solution quality analysis (please uncomment the wanted problem in the pb_pool).
- exp_simulation_time.py: the script for the simulation time comparison analysis.
