Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
935cfb6
Machine Learning Integration for DaCe (Autodiff - ONNX - PyTorch) (#2…
affifboudaoud Dec 2, 2025
c115df9
Updated Reloading Scheme for `ReloadableDLL` (#2218)
philip-paul-mueller Dec 4, 2025
076fd31
Update .coveragerc
tbennun Dec 4, 2025
e19e785
Modify codecov.yml to change ignored files and builds
tbennun Dec 4, 2025
0efa622
Increase timeout for ML tests (#2243)
affifboudaoud Dec 8, 2025
173de0b
Refactor dace/data.py into dace/data/ package (#2245)
Copilot Dec 8, 2025
cc59d77
Support `dace.map` syntax for struct fields (#2187)
tbennun Dec 8, 2025
5824ad0
GPU codegen crashes and generates incorrect code with dynamic inputs …
ThrudPrimrose Dec 8, 2025
312f37f
Modular Code Generation Docs: Add LowerConsume and remove numbering (…
tbennun Dec 9, 2025
387f1e8
Update C++ standard to C++20 (#2253)
tbennun Dec 12, 2025
156567b
Add support for CUDA 13 (#2255)
zero9178 Dec 22, 2025
f30728a
Fix in cuda codegen: convert block_size config values to `int` values…
edopao Dec 25, 2025
c074f7a
Fix a bunch of typos in comments (#2263)
romanc Jan 10, 2026
b88b82b
Extract FPGA code generation to separate repository (#2252)
tbennun Jan 11, 2026
d293a55
Add NVTX/rocTX ranges (#2001)
iomaganaris Jan 12, 2026
22f0580
Squashed commit of the following:
edopao Jan 12, 2026
5b20335
Squashed commit of the following:
edopao Jan 12, 2026
28b0070
Squashed commit of the following:
edopao Jan 12, 2026
df368eb
Squashed commit of the following:
edopao Jan 12, 2026
510010d
Squashed commit of the following:
edopao Jan 12, 2026
d177bce
Squashed commit of the following:
edopao Jan 12, 2026
54b3349
Set version file
edopao Jan 12, 2026
513e824
Relocated the version file.
philip-paul-mueller Jan 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 7 additions & 5 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ exclude_lines =
if False:
if __name__ == .__main__.:
pass
if TYPE_CHECKING:
if typing.TYPE_CHECKING:

omit =
# Omit files that cannot be tested
dace/jupyter.py

# Omit deprecated files
dace/frontend/tensorflow/__init__.py
dace/frontend/tensorflow/tensorflow.py
dace/frontend/tensorflow/winograd.py
dace/frontend/tensorflow/transformations/__init__.py
dace/frontend/tensorflow/transformations/redundant_array.py
dace/frontend/ml/tensorflow/__init__.py
dace/frontend/ml/tensorflow/tensorflow.py
dace/frontend/ml/tensorflow/winograd.py
dace/frontend/ml/tensorflow/transformations/__init__.py
dace/frontend/ml/tensorflow/transformations/redundant_array.py
2 changes: 1 addition & 1 deletion .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,6 @@ jobs:

- name: Install DaCe in development mode
run: |
python -m pip install --editable ".[testing,linting]"
python -m pip install --editable ".[testing,linting,ml]"
pre-commit install
pre-commit run
50 changes: 50 additions & 0 deletions .github/workflows/dace-updater.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Inform the Python package index about a new DaCe release.

on:
# Trigger for all pushes to tags matching this pattern
push:
tags:
- __gt4py-next-integration_*

# To "install" this workflow you must enable this trigger, such that the workflow runs at least one.
# You should also disable any processing such that no commit in the index repo is performed.
# See https://stackoverflow.com/a/71057825
#pull_request:

# Allows to trigger the update manually.
# NOTE: Is only possible if the workflow file is located on the default and the branch where it should run on.
workflow_dispatch:

jobs:
update-dace:
runs-on: ubuntu-latest
steps:
- name: Inform Index
shell: bash
run: |
INDEX_ORGANIZATION="gridtools"
INDEX_REPO="pypi"

# We are using `github.sha` here to be sure that we transmit an identifier to the index
# that can be checked out. Before we used `github.ref_name` but got strange results
# with it.
DEPENDENCY_REF="${{ github.sha }}"
SOURCE_REPO="dace"
SOURCE_OWNER="gridtools"

curl -L -v --fail-with-body \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.PKG_UPDATE_TOKEN }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/${INDEX_ORGANIZATION}/${INDEX_REPO}/dispatches" \
-d '{"event_type":"update_package_index","client_payload":{"source_repo":"'"${SOURCE_REPO}"'","source_org":"'"${SOURCE_OWNER}"'","dependency_ref":"'"${DEPENDENCY_REF}"'"}}'
CURL_RET=$?

if [ "${CURL_RET}" -ne 0 ]
then
echo "POST to '${INDEX_ORGANIZATION}:${INDEX_REPO}' failed with error code '${CURL_RET}'"
exit 1
fi

exit 0
75 changes: 0 additions & 75 deletions .github/workflows/fpga-ci.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/general-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
else
export DACE_optimizer_automatic_simplification=${{ matrix.simplify }}
fi
pytest -n auto --cov-report=xml --cov=dace --tb=short --timeout_method thread --timeout=300 -m "not gpu and not verilator and not tensorflow and not mkl and not sve and not papi and not mlir and not lapack and not fpga and not mpi and not rtl_hardware and not scalapack and not datainstrument and not long and not sequential"
pytest -n auto --cov-report=xml --cov=dace --tb=short --timeout_method thread --timeout=300 -m "not gpu and not autodiff and not torch and not onnx and not tensorflow and not mkl and not sve and not papi and not mlir and not lapack and not mpi and not scalapack and not datainstrument and not long and not sequential"
./codecov

- name: Test OpenBLAS LAPACK
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gpu-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
pip install mpi4py
pip install cupy
pip uninstall -y dace
pip install -e ".[testing]"
pip install -e ".[testing,ml]"
curl -Os https://uploader.codecov.io/latest/linux/codecov
chmod +x codecov

Expand Down
25 changes: 0 additions & 25 deletions .github/workflows/hardware_test.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/heterogeneous-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
run: |
source ~/.venv/bin/activate # activate venv
export DACE_cache=unique
pytest --cov-report=xml --cov=dace --tb=short --timeout_method thread --timeout=300 -m "verilator or mkl or papi or datainstrument"
pytest --cov-report=xml --cov=dace --tb=short --timeout_method thread --timeout=300 -m "mkl or papi or datainstrument"
- name: Run MPI tests
run: |
Expand Down
62 changes: 62 additions & 0 deletions .github/workflows/ml-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Machine Learning and Autodiff Tests

on:
push:
branches: [ main, ci-fix ]
pull_request:
branches: [ main, ci-fix ]
merge_group:
branches: [ main, ci-fix ]

concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true

jobs:
test:
if: "!contains(github.event.pull_request.labels.*.name, 'no-ci')"
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.13']
simplify: [0,1,autoopt]

steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libyaml-dev cmake
sudo apt-get install -y libblas-dev libopenblas-dev liblapacke-dev
python -m pip install --upgrade pip
pip install flake8 pytest-xdist coverage
pip install -e ".[ml-testing,ml]"
curl -Os https://uploader.codecov.io/latest/linux/codecov
chmod +x codecov

- name: Test with pytest
run: |
export NOSTATUSBAR=1
export DACE_testing_serialization=1
export DACE_testing_deserialize_exception=1
export DACE_cache=unique
if [ "${{ matrix.simplify }}" = "autoopt" ]; then
export DACE_optimizer_automatic_simplification=1
export DACE_optimizer_autooptimize=1
echo "Auto-optimization heuristics"
else
export DACE_optimizer_automatic_simplification=${{ matrix.simplify }}
fi
pytest --cov-report=xml --cov=dace --tb=short --timeout_method thread --timeout=600 -v -m "(torch or onnx or autodiff) and not gpu"
./codecov

- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
37 changes: 0 additions & 37 deletions .github/workflows/verilator_compatibility.yml

This file was deleted.

11 changes: 5 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -150,12 +150,6 @@ perf.json
perf*.csv
/dace/frontend/octave/parsetab.py

# Xilinx
xilinx_vcu1525_*
sdaccel_profile_*
sdaccel_timeline_*
.run/

# NVIDIA
*.nvprof
out.sdfg
Expand Down Expand Up @@ -195,3 +189,8 @@ _build/

# Ignoring the test junk
_all_tests/


# Ignore downloaded ONNX models
/*.onnx
/*.bin
6 changes: 0 additions & 6 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,6 @@
[submodule "dace/external/moodycamel"]
path = dace/external/moodycamel
url = https://github.com/cameron314/concurrentqueue.git
[submodule "dace/external/hlslib"]
path = dace/external/hlslib
url = https://github.com/definelicht/hlslib.git
[submodule "dace/viewer/webclient"]
path = dace/viewer/webclient
url = https://github.com/spcl/dace-webclient.git
[submodule "dace/external/rtllib"]
path = dace/external/rtllib
url = https://github.com/carljohnsen/rtllib.git
6 changes: 1 addition & 5 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
global-include LICENSE LICENSE.*
include dace/*.yml dace/codegen/CMakeLists.txt dace/codegen/tools/*.cpp dace/external/moodycamel/*.h dace/codegen/Xilinx_HLS.tcl.in dace/viewer/webclient/*.css dace/viewer/webclient/*.html dace/viewer/webclient/dist/*.js
include dace/*.yml dace/codegen/CMakeLists.txt dace/codegen/tools/*.cpp dace/external/moodycamel/*.h dace/viewer/webclient/*.css dace/viewer/webclient/*.html dace/viewer/webclient/dist/*.js
recursive-include dace/codegen *.cmake
graft dace/runtime/include
graft dace/libraries
graft dace/viewer/webclient/external_lib
graft dace/viewer/templates
graft dace/external/cub/cub
graft dace/external/hlslib/cmake
graft dace/external/hlslib/include
graft dace/external/rtllib/cmake
graft dace/external/rtllib/templates
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
[![General Tests](https://github.com/spcl/dace/actions/workflows/general-ci.yml/badge.svg)](https://github.com/spcl/dace/actions/workflows/general-ci.yml)
[![GPU Tests](https://github.com/spcl/dace/actions/workflows/gpu-ci.yml/badge.svg)](https://github.com/spcl/dace/actions/workflows/gpu-ci.yml)
[![FPGA Tests](https://github.com/spcl/dace/actions/workflows/fpga-ci.yml/badge.svg)](https://github.com/spcl/dace/actions/workflows/fpga-ci.yml)
[![Documentation Status](https://readthedocs.org/projects/spcldace/badge/?version=latest)](https://spcldace.readthedocs.io/en/latest/?badge=latest)
[![PyPI version](https://badge.fury.io/py/dace.svg)](https://badge.fury.io/py/dace)
[![codecov](https://codecov.io/gh/spcl/dace/branch/main/graph/badge.svg)](https://codecov.io/gh/spcl/dace)
Expand All @@ -13,7 +12,7 @@ _Decoupling domain science from performance optimization._

DaCe is a [fast](https://nbviewer.org/github/spcl/dace/blob/main/tutorials/benchmarking.ipynb) parallel programming
framework that takes code in Python/NumPy and other programming languages, and maps it to high-performance
**CPU, GPU, and FPGA** programs, which can be optimized to achieve state-of-the-art. Internally, DaCe
**CPU, GPU, and [FPGA](https://github.com/spcl/dace-fpga)** programs, which can be optimized to achieve state-of-the-art. Internally, DaCe
uses the Stateful DataFlow multiGraph (SDFG) *data-centric intermediate
representation*: A transformable, interactive representation of code based on
data movement.
Expand Down
6 changes: 4 additions & 2 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
ignore:
- "dace/jupyter.py" # Omit files that cannot be tested
- "dace/frontend/tensorflow/**/*" # Omit deprecated files
- "dace/frontend/ml/tensorflow/**/*" # Omit deprecated files
- "samples/**/*"
- "tests/**/*"

coverage:
range: 40..90
Expand All @@ -18,6 +20,6 @@ coverage:

codecov:
notify:
after_n_builds: 18
after_n_builds: 23

comment: false
Loading