The GeneSys compiler uses an embedded architecture description language to create a Hierarchical Architecture Graph for flexibly compiling mg-DFGs to different architectures. The GeneSys architecture uses a systolic array centric approach that forms the core convolution engine for implementing DNN algorithms, and can be customized to run a range of standard DNN topologies.
This document will help you get up and running.
The following dependencies must be met by your system:
- python >= 3.7 (For PEP 560 support)
$ git clone --recurse-submodules https://github.com/VeriGOOD-ML/public
$ cd public
Step 2: Create a Python virtualenv
Note: You may choose to skip this step if you are doing a system-wide install for multiple users. Please DO NOT skip this step if you are installing for personal use and/or you are a developer.
$ python -m venv ~/.venv/verigood_ml
$ source ~/.venv/verigood_ml/bin/activate
$ python -m pip install pip setuptools wheel --upgrade
If you already have a working installation of Python 3.7 or Python 3.8, the easiest way to install PolyMath and the Codelets compiler is:
$ cd polymath && python -m pip install -r requirements.txt && python setup.py build install
$ cd ../codelets.src && python -m pip install -r requirements.txt && python setup.py build install && cd ..
You can compile a GeneSys benchmark by running the following commands, where <model_name> is one of resnet18
, or resnet50
(you can try compiling with other onnx models you find as well!) and <config_name> is the name of one of the configs located in genesys/examples/genesys/configs
:
$ python compile_benchmark.py --model <model_name> --config <config_file>
Compiled output will be stored in the compilation_output/
directory.