This repository contains the tool CODEBench which can be used to generate and evaluate different CNN-accelerator pairs. It runs the BOSHCODE algorithm to obtain the best-performing pair for the given constraints and the selected design space.
git clone https://github.com/jha-lab/codebench.git
cd codebench
- PIP
virtualenv cnnbench
source cnnbench/bin/activate
pip install -r cnnbench/requirements.txt
- CONDA
conda env create -f cnnbench/environment.yaml
cd boshcode
python run_boshcode.py
All training scripts use bash and have been implemented using SLURM. This will have to be setup before running the experiments.
Other flags can be used to control the training procedure (check using python run_boshcode.py --help
). This script uses the SLURM scheduler over mutiple compute nodes in a cluster (each cluster assumed to have 1 GPU, this can be changed in the script job_scripts/job_worker.sh
). SLURM can also be used in scenarios where distributed nodes are not available.
Shikhar Tuli. For any questions, comments or suggestions, please reach me at stuli@princeton.edu.
Cite our work using the following bitex entry:
@article{tuli2022codebench,
author = {Tuli, Shikhar and Li, Chia-Hao and Sharma, Ritvik and Jha, Niraj K.},
title = {{CODEBench}: A Neural Architecture and Hardware Accelerator Co-Design Framework},
year = {2022}, publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
issn = {1539-9087},
url = {https://doi.org/10.1145/3575798},
doi = {10.1145/3575798},
note = {Just Accepted},
journal = {ACM Trans. Embed. Comput. Syst.},
month = {dec}}
BSD-3-Clause. Copyright (c) 2022, Shikhar Tuli and Jha Lab. All rights reserved.
See License file for more details.