Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
2b8123a
Made the construct argumt vector function publich and also refactored…
philip-paul-mueller Oct 30, 2025
767260d
Clarified a comment.
philip-paul-mueller Oct 30, 2025
f901a3d
Fixed a bug in a unit test.
philip-paul-mueller Oct 30, 2025
e138b06
Made the 'passed as positional and named argument'-error more explicit.
philip-paul-mueller Oct 30, 2025
b09c9fc
Included the first bunch of Tal's changes.
philip-paul-mueller Oct 31, 2025
b029828
Fixed an issue in safe_call
philip-paul-mueller Oct 31, 2025
ded5df8
Made some refactoring to remove some strange DaCe behaviour.
philip-paul-mueller Oct 31, 2025
c2c1116
Removed a missleading comment.
philip-paul-mueller Oct 31, 2025
7f17e13
Fixed a bug, but in a way I do not like.
philip-paul-mueller Oct 31, 2025
899b2a0
Fixed some old stuff.
philip-paul-mueller Oct 31, 2025
ab110d2
Updated the description.
philip-paul-mueller Oct 31, 2025
e8d909e
Removed that stupid sclar return value feature that CAN NOT WORK.
philip-paul-mueller Oct 31, 2025
9397a23
Implemented the proper handling of tuples of size one.
philip-paul-mueller Oct 31, 2025
c1214fa
Updated the tests and made it clear that you can not return a scalar …
philip-paul-mueller Oct 31, 2025
6e1a9ff
Merge remote-tracking branch 'spcl/main' into make_construct_args_public
philip-paul-mueller Oct 31, 2025
69960ce
Forgot to do this.
philip-paul-mueller Oct 31, 2025
4da0c4e
Made some additional check.
philip-paul-mueller Oct 31, 2025
2ddabbd
Merge remote-tracking branch 'spcl/main' into make_construct_args_public
philip-paul-mueller Oct 31, 2025
daf90e9
Updated the thing a bit more.
philip-paul-mueller Oct 31, 2025
65725f9
This should be enough for bug compatibility.
philip-paul-mueller Oct 31, 2025
41902c3
Fixed a bug.
philip-paul-mueller Oct 31, 2025
c069546
Merge remote-tracking branch 'spcl/main' into make_construct_args_public
philip-paul-mueller Nov 4, 2025
68ffa3b
Merge branch 'main' into make_construct_args_public
phschaad Nov 30, 2025
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
ef4aba7
Merge branch 'main' into make_construct_args_public
philip-paul-mueller Dec 19, 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
ee38c13
Add HIP-codegen for stream-order memory allocation (#2270)
edopao Jan 13, 2026
54b5f7f
Further extract FPGA code generation support (#2265)
tbennun Jan 13, 2026
a27e416
Add `#pragma unroll <X>` to `LoopRegion` generated code (#2269)
iomaganaris Jan 14, 2026
7778d74
Merge branch 'main' into make_construct_args_public
philip-paul-mueller Jan 15, 2026
a573a1b
Argument was passed multiple times.
philip-paul-mueller Jan 15, 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
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
5 changes: 2 additions & 3 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 All @@ -27,7 +26,7 @@ of performance optimization, regardless of the application or the target process
DaCe generates high-performance programs for:
* Multi-core CPUs (tested on Intel, IBM POWER9, and ARM with SVE)
* NVIDIA GPUs and AMD GPUs (with HIP)
* Xilinx and Intel FPGAs
* [Xilinx and Intel FPGAs](https://github.com/spcl/dace-fpga)

DaCe can be written inline in Python and transformed in the command-line/Jupyter
Notebooks or SDFGs can be interactively modified using our [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=phschaad.sdfv).
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
11 changes: 11 additions & 0 deletions dace/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,17 @@
sys.path.insert(0, __external_transformations_path__)


# Lazy loading for ml module to avoid eager TensorFlow/PyTorch imports
def __getattr__(name):
if name == 'ml':
import importlib
ml_module = importlib.import_module('.ml', package='dace')
# Cache the module to avoid re-importing
globals()['ml'] = ml_module
return ml_module
raise AttributeError(f"module '{__name__}' has no attribute '{name}'")


# Hack that enables using @dace as a decorator
# See https://stackoverflow.com/a/48100440/6489142
class DaceModule(sys.modules[__name__].__class__):
Expand Down
Loading