A heuristical model of hardware architecture search-space optimization through the use of loss-approximation techniques such as stochastic gradient descent and signal identification using multi-factor analysis.
Optimizers implements discretized versions of all the algorithms listed.
Getting started with Daedalus is best done in a docker-container until one becomes familiar with the code structure. Thus, we have provided the following docker container, Daedalus-Infastructure, which can be set up in the following steps:
- Clone the Daedalus-Infrastructure library and run
$ git submodule update --init --recursivein the root directory of the repository. - Then, run
docker-compose upto start the docker container. - SSH into the docker container, and run
$ cd /home/workspace/Daedalusto enter the Daedalus repository. - Run
$ make -j8to compile the file and all dependencies and install Daedalus into the docker Python library. - You're done! Feel free to reference the
daedalus/testsdirectory in the Daedalus repository as a reference for how to use the tool.
For a guide to the files, please see the workspace README.
The final project starting code is based off of the publicly-available
timeloop-accelergy-exercises repository, which contains example designs,
workloads, and tutorials for using Timeloop and Accelergy.
Please pull the docker first to update the container, and then start with docker-compose up.
cd <your-git-repo-for-final-project>
export DOCKER_ARCH=<your arch amd64 or arm64>
docker-compose pull
docker-compose up
After finishing the project, please commit all changes and push back to this repository.
We recommend using VSCode to perform any advanced development work. The instructions to set up VSCode with Docker can be found here.
BEFORE BEGINNING YOUR PROJECT, PLEASE READ THE FOLLOWING INSTRUCTIONS CAREFULLY. Failure to follow instructions may result in a zero for the assignment.
Please add a license by filling in the LICENSE file. We recommend the MIT open-source license.
Before using any example designs, please go through the first two tutorials in the starter code. These tutorials will help you understand how to use the tools. TAs will not provide help or answer questions if you have not gone through these tutorials.
After going through the tutorials, you may use the provided example designs, layer shapes, and scripts as a starting point for your final project. Please follow the README files provided in the exercises repository. Note that subdirectories often have nested README files.
For explanations of the inputs and outputs of the tools, see the Timeloop/Accelergy documentation and Timeloop/Accelergy tutorial. Reading documentation is an important skill and the TAs will not answer questions for which answers may be found in the documentation.
As described in the final project information slides, you can use the different baselines for different final project ideas.
If your final project needs simulation/design support that is not currently available in the provided framework/examples, please reach out to the course staff BEFORE you get started on designing the project.
Please copy all necessary files into this repository and commit them. If you'd like to use files from the exercises, you may copy them or initialize the exercises as a submodule.
- Timeloop/Accelergy documentation
- Timeloop/Accelergy tutorial
- SparseLoop tutorial
- eyeriss-like design
- simba-like architecture
- simple weight stationary architecture: you can refer to the related lecture notes
- simple output stationary architecture: you can refer to the related lecture notes