Distributed Arithmetic for Machine Learning
Project description
da4ml: HLS Compiler for Low-latency, Static-dataflow Kernels on FPGAs
da4ml is a light-weight high-level synthesis (HLS) compiler for generating low-latency, static-dataflow kernels for FPGAs. The main motivation of da4ml is to provide a simple and efficient way for machine learning practitioners requiring ultra-low latency to deploy their models on FPGAs quickly and easily, similar to hls4ml but with a much simpler design and better performance, both for the generated kernels and for the compilation process.
As a static dataflow compiler, da4ml is specialized for kernels that are equivalent to a combinational or fully pipelined logic circuit, which means that the kernel has no loops or has only fully unrolled loops. There is no specific limitation on the types of operations that can be used in the kernel. For resource sharing and time-multiplexing, the users are expected to use the generated kernels as building blocks and manually assemble them into a larger design. In the future, we may employ a XLS-like design to automate the communication and buffer instantiation between kernels, but for now we will keep it simple and let the users have full control over the design.
With DA in its name, da4ml do perform distributed arithmetic (DA) optimization to generate efficient kernels for linear DSP operations. The algorithm used is an efficient hybrid algorithm described in our TRETS'25 paper. With DA optimization, any linear DSP operation can be implemented efficiently with only adders (i.e., fast accum and LUTs on FPGAs) without any hardened multipliers. If the user wishes, one can also control what multiplication pairs shall be excluded from DA optimization.
Installation
pip install da4ml
Note: da4ml is now released as binary wheels on PyPI for Linux X86_64 and MacOS ARM64 platforms. For other platforms, please install from source. C++20 compliant compiler with OpenMP support is required to build da4ml from source. Windows is not officially supported, but you may try building it with MSVC or MinGW.
Getting Started
- See the Getting Started guide for a quick introduction to using da4ml.
- See JEDI-linear project which is based on da4ml
License
LGPLv3. See the LICENSE file for details.
Citation
If you use da4ml in a publication, please cite our TRETS'25 paper with the following bibtex entry:
@article{sun2025da4ml,
author = {Sun, Chang and Que, Zhiqiang and Loncar, Vladimir and Luk, Wayne and Spiropulu, Maria},
title = {da4ml: Distributed Arithmetic for Real-time Neural Networks on FPGAs},
year = {2025},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
issn = {1936-7406},
url = {https://doi.org/10.1145/3777387},
doi = {10.1145/3777387},
journal = {ACM Trans. Reconfigurable Technol. Syst.},
month = nov,
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file da4ml-0.6.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: da4ml-0.6.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 696.9 kB
- Tags: CPython 3.12+, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fc8ff26a9f1329d2f33e62fdbead9455aed1c45bb3f8ce0cdc4eb110ea18525
|
|
| MD5 |
8a5602f52eb7d075d9f04c16c810e225
|
|
| BLAKE2b-256 |
c3894013fb443983f637a7e240f20b605b6e11f24b12782683726ea86ae14353
|
Provenance
The following attestation bundles were made for da4ml-0.6.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
python-publish.yml on calad0i/da4ml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
da4ml-0.6.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
2fc8ff26a9f1329d2f33e62fdbead9455aed1c45bb3f8ce0cdc4eb110ea18525 - Sigstore transparency entry: 1097373454
- Sigstore integration time:
-
Permalink:
calad0i/da4ml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/calad0i
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file da4ml-0.6.0-cp312-abi3-macosx_15_0_arm64.whl.
File metadata
- Download URL: da4ml-0.6.0-cp312-abi3-macosx_15_0_arm64.whl
- Upload date:
- Size: 759.0 kB
- Tags: CPython 3.12+, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c76bc6f00ef45ad9312ed1c82b70f252501fb6b3277c69919132209656e0d535
|
|
| MD5 |
57af6ca15a81ac5937d56018c8173714
|
|
| BLAKE2b-256 |
28f2d3cb29c07c3d3c8ae389328ec2ec6a48ae5b83a018a9b7814c96f58e40b2
|
Provenance
The following attestation bundles were made for da4ml-0.6.0-cp312-abi3-macosx_15_0_arm64.whl:
Publisher:
python-publish.yml on calad0i/da4ml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
da4ml-0.6.0-cp312-abi3-macosx_15_0_arm64.whl -
Subject digest:
c76bc6f00ef45ad9312ed1c82b70f252501fb6b3277c69919132209656e0d535 - Sigstore transparency entry: 1097373508
- Sigstore integration time:
-
Permalink:
calad0i/da4ml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/calad0i
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file da4ml-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: da4ml-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 703.7 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0ebab4f3fda513cbb3423318a1a64a90d3ba87bc497541cebab17f501e78f45
|
|
| MD5 |
def6613573845e6472b77d1ee90fe35b
|
|
| BLAKE2b-256 |
b6ff1d471d3a49fbd374b87a11c0a7c4e163a9de24ffaa3f9066c68a2c62e5a1
|
Provenance
The following attestation bundles were made for da4ml-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
python-publish.yml on calad0i/da4ml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
da4ml-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
e0ebab4f3fda513cbb3423318a1a64a90d3ba87bc497541cebab17f501e78f45 - Sigstore transparency entry: 1097373587
- Sigstore integration time:
-
Permalink:
calad0i/da4ml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/calad0i
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file da4ml-0.6.0-cp311-cp311-macosx_15_0_arm64.whl.
File metadata
- Download URL: da4ml-0.6.0-cp311-cp311-macosx_15_0_arm64.whl
- Upload date:
- Size: 761.8 kB
- Tags: CPython 3.11, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c051f378c1420a60ce8e78fd5a1359cf1b847a8dd26ef86be6b8629d03b0357d
|
|
| MD5 |
1947ba0357bbe68cb401affeeb4f8a73
|
|
| BLAKE2b-256 |
5dac96df8e2e9943cdb695898ca6c937df0adad57061593a79ace9e9368d25f2
|
Provenance
The following attestation bundles were made for da4ml-0.6.0-cp311-cp311-macosx_15_0_arm64.whl:
Publisher:
python-publish.yml on calad0i/da4ml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
da4ml-0.6.0-cp311-cp311-macosx_15_0_arm64.whl -
Subject digest:
c051f378c1420a60ce8e78fd5a1359cf1b847a8dd26ef86be6b8629d03b0357d - Sigstore transparency entry: 1097373560
- Sigstore integration time:
-
Permalink:
calad0i/da4ml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/calad0i
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file da4ml-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: da4ml-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 704.0 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09ecc458c38bac048efa2f21239377bce446696448aea082ff0826ac473b818c
|
|
| MD5 |
f4a55800013a0fd16f46ca225bd61e40
|
|
| BLAKE2b-256 |
c76d6e2d950f25893b686fe0881270c4fa65f828226317d476632223b20560c2
|
Provenance
The following attestation bundles were made for da4ml-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
python-publish.yml on calad0i/da4ml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
da4ml-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
09ecc458c38bac048efa2f21239377bce446696448aea082ff0826ac473b818c - Sigstore transparency entry: 1097373533
- Sigstore integration time:
-
Permalink:
calad0i/da4ml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/calad0i
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file da4ml-0.6.0-cp310-cp310-macosx_15_0_arm64.whl.
File metadata
- Download URL: da4ml-0.6.0-cp310-cp310-macosx_15_0_arm64.whl
- Upload date:
- Size: 761.9 kB
- Tags: CPython 3.10, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc633498fbbc2e11dd1a17ab528a96e190abd45c71792eeb9b637942901941e5
|
|
| MD5 |
c3d7c7af0b2aa9fe1b7e67b3f70452f3
|
|
| BLAKE2b-256 |
eae6da52fb10dc81eda2ef45e6c5288851d58b808b7095a62f3d29f64641097d
|
Provenance
The following attestation bundles were made for da4ml-0.6.0-cp310-cp310-macosx_15_0_arm64.whl:
Publisher:
python-publish.yml on calad0i/da4ml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
da4ml-0.6.0-cp310-cp310-macosx_15_0_arm64.whl -
Subject digest:
dc633498fbbc2e11dd1a17ab528a96e190abd45c71792eeb9b637942901941e5 - Sigstore transparency entry: 1097373486
- Sigstore integration time:
-
Permalink:
calad0i/da4ml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/calad0i
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@07cee46947a30efc78ba8c9774255d504aef44f8 -
Trigger Event:
release
-
Statement type: