GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - pulp-platform/Deeploy: DNN Compiler for Heterogeneous SoCs

BranchesTags
Open more actions menu

Latest commit

 

History

124 Commits
124 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
.vscode
.vscode
 
 
Container
Container
 
 
Deeploy
Deeploy
 
 
DeeployTest
DeeployTest
 
 
LICENSES
LICENSES
 
 
TargetLibraries
TargetLibraries
 
 
Tutorials
Tutorials
 
 
cmake
cmake
 
 
docs
docs
 
 
scripts
scripts
 
 
toolchain
toolchain
 
 
.clang-format
.clang-format
 
 
.devcontainer.json
.devcontainer.json
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
.isort.cfg
.isort.cfg
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
.style.yapf
.style.yapf
 
 
.yamllint
.yamllint
 
 
.yapfignore
.yapfignore
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CMakeLists.txt
CMakeLists.txt
 
 
CODEOWNERS
CODEOWNERS
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
CONTRIBUTORS.md
CONTRIBUTORS.md
 
 
Deeploy.code-workspace
Deeploy.code-workspace
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
README_GAP9.md
README_GAP9.md
 
 
README_XDNA.md
README_XDNA.md
 
 
REUSE.toml
REUSE.toml
 
 
pyproject.toml
pyproject.toml
 
 
pytest.ini
pytest.ini
 
 
requirements-dev.txt
requirements-dev.txt
 
 
requirements-xdna.txt
requirements-xdna.txt
 
 
setup.py
setup.py
 
 

Repository files navigation

Logo

Deeploy: DNN Compiler for Heterogeneous SoCs

PyPIDocumentation Status CI Deeploy Docker GitHub last commit License

Deeploy is an ONNX-to-C compiler that generates low-level optimized C Code for multi-cluster, heterogeneous SoCs. Its goal is to enable configurable deployment flows from a bottom-up compiler perspective, modeling target hardware in a fine-grained and modular manner.

Deeploy is developed as part of the PULP project, a joint effort between ETH Zurich and the University of Bologna.

Documentation & Tutorials

You can find the documentation at the following links:

  • Devel Branch Docs
  • Main Branch Docs

A DeepWiki generated documentation is availabe here.

Getting started

Download the repository and its submodules:

git clone https://github.com/pulp-platform/Deeploy.git && cd Deeploy
git submodule update --init --recursive

Installing Deeploy is as simple as running:

pip install -e .

However, to run the code generated by Deeploy on a certain target, you need the toolchains and the simulators associated with this platform.

We provide a Docker container where Deeploy works Out-of-the-Box (i.e. with all the dependencies pre-installed). To pull the docker image, run:

docker pull ghcr.io/pulp-platform/deeploy:main

Then you can create and start the container in interactive mode with:

docker run -it --name deeploy_main -v $(pwd):/app/Deeploy ghcr.io/pulp-platform/deeploy:main

Install Deeploy inside the container in editable mode:

cd Deeploy
pip install -e .

Congratulations, you installed Deeploy and its dependencies! Now, to test your installation let's run one simple test on each platform with the following commands:

cd DeeployTest
python deeployRunner_generic.py -t ./Tests/Kernels/Integer/Add/Regular
python deeployRunner_cortexm.py -t ./Tests/Kernels/Integer/Add/Regular
python deeployRunner_mempool.py -t ./Tests/Kernels/Integer/Add/Regular
python deeployRunner_snitch.py -t ./Tests/Kernels/Integer/Add/Regular
python deeployRunner_tiled_snitch.py -t ./Tests/Kernels/Integer/Add/Regular
python deeployRunner_siracusa.py -t ./Tests/Kernels/Integer/Add/Regular
python deeployRunner_tiled_siracusa.py -t ./Tests/Kernels/Integer/Add/Regular
python deeployRunner_tiled_siracusa_w_neureka.py -t ./Tests/Kernels/Integer/Add/Regular
python deeployRunner_softhier.py -t ./Tests/Kernels/Integer/Add/Regular --toolchain=GCC
python deeployRunner_chimera.py -t ./Tests/Kernels/Integer/Add/Regular

To restart and connect to the container, run:

docker start -i deeploy_main
cd Deeploy

You can find the ONNX file in DeeployTest/Tests/Kernels/Integer/Add/Regular, to visualize it, you can use Netron. You can also find the generated code for the platform X in TEST_X in DeeployTest and you should notice that the generated code for the Add test is very simple. However, this gets more complex when you add tiling. Let's generate the code for a single layer but using tiling this time:

python deeployRunner_tiled_siracusa.py -t Tests/Kernels/Integer/MatMul/Regular --cores=8 --l1=16000

Now you can open the generated code in DeeployTest/TEST_SIRACUSA/Tests/testMatMul/Network.c and see how we executed a tiled layer.

Supported Platforms

Platform Hardware Simulator CI Status
Generic CPU Your laptop CPU :) Host CI • Generic
CortexM Processors Documentation QEMU CI • Cortex-M
MemPool + ITA Mempool paper, ITA paper Banshee CI • Mempool
Siracusa Siracusa paper GVSoC CI • Siracusa CI • Siracusa (Tiled) CI • Siracusa + Neureka (Tiled)
Snitch Cluster Snitch paper GVSoC CI • Snitch CI • Snitch (Tiled)
SoftHier Repo GVSoC CI • SoftHier
Chimera Repo GVSoC CI • Chimera
GAP9 Repo GVSoC CI • GAP9 CI • GAP9 (Tiled)

Publications

If you use Deeploy in your work or research, you can cite us with:

ESWEEK 2024: Deeploy: Enabling Energy-Efficient Deployment of Small Language Models On Heterogeneous Microcontrollers

@article{schererDeeployEnablingEnergyEfficient2024,
  title = {Deeploy: {{Enabling Energy-Efficient Deployment}} of {{Small Language Models}} on {{Heterogeneous Microcontrollers}}},
  shorttitle = {Deeploy},
  author = {Scherer, Moritz and Macan, Luka and Jung, Victor J. B. and Wiese, Philip and Bompani, Luca and Burrello, Alessio and Conti, Francesco and Benini, Luca},
  year = {2024},
  month = nov,
  journal = {IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},
  volume = {43},
  number = {11},
  pages = {4009--4020},
  issn = {1937-4151},
  doi = {10.1109/TCAD.2024.3443718},
}

The preprint is available on arXiv @ arXiv:2408.04413.

IEEE Design & Test: Toward Attention-based TinyML: A Heterogeneous Accelerated Architecture and Automated Deployment Flow

@article{WieseTowardAttentionBasedTinyML2025,
  author={Wiese, Philip and İslamoğlu, Gamze and Scherer, Moritz and Macan, Luka and Jung, Victor J.B. and Burrello, Alessio and Conti, Francesco and Benini, Luca},
  journal={IEEE Design & Test},
  title={Toward Attention-based TinyML: A Heterogeneous Accelerated Architecture and Automated Deployment Flow},
  year={2025},
  pages={1-1},
  keywords={Tiny machine learning;Transformers;Memory management;Hardware acceleration;Bandwidth;Registers;Software;Engines;Energy efficiency;Computational modeling;Neural Networks;TinyML;Deployment;Transformers;Accelerators},
  doi={10.1109/MDAT.2025.3527371}}

The preprint is available on arXiv @ arXiv:2408.02473.

License

All licenses used in this repository are listed under the LICENSES folder. Unless specified otherwise in the respective file headers, all code checked into this repository is made available under a permissive license.

  • Most software sources and tool scripts are licensed under the Apache 2.0 license.
  • Some files in the scripts directory are licensed under the MIT license.
  • Markdown, JSON, text files, pictures, and files in the DeeployTest/Tests directory are licensed under the Creative Commons Attribution 4.0 International license (CC BY 4.0).

To extract license information for all files, you can use the reuse tool and by running reuse spdx in the root directory of this repository.

About

DNN Compiler for Heterogeneous SoCs

pulp-platform.github.io/Deeploy/

Topics

mcuml-compilertinyml

Resources

Readme

Contributing

Contributing
Activity
Custom properties

Stars

84 stars

Watchers

4 watching

Forks

52 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.