Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
f647548
Avoid usage of deprecated `state.add_array()` and `state.add_stream()…
romanc Feb 12, 2026
3183de3
`ControlFlowReachability` pass: cache closures per region (#2306)
romanc Feb 16, 2026
ae2f69a
Remove replication in `ConditionalBlock` serialization (#2310)
tbennun Feb 23, 2026
d1546db
Reduce serialized SDFG size (#2312)
tbennun Feb 26, 2026
6c07cef
feature: write `CACHEDIR.TAG` into program folder (#2311)
romanc Feb 26, 2026
0d83bf3
Fix impossible to realize type hint (#2314)
ThrudPrimrose Feb 27, 2026
dfac14e
refactor: remove six (py2 / py3 compat library) (#2313)
romanc Feb 27, 2026
20a155d
Save compressed SDFGs in program folder (#2315)
romanc Mar 12, 2026
afa9aa3
Fix a bug in loop unroll (#2325)
ThrudPrimrose Mar 16, 2026
8fa014f
fix: reorder tile sizes when reordering ranges (#2327)
romanc Mar 18, 2026
0ec62e2
InlineSDFG: verify that connectors have properly matching access node…
tbennun Mar 26, 2026
025a131
Deterministic dace toolchain draft
tehrengruber Apr 9, 2026
f2bbaf8
Fix indeterminism in ArrayElimination
tehrengruber Apr 15, 2026
25f274e
Reduced Size of SDFG Folder (#2331)
philip-paul-mueller Apr 17, 2026
77b3ca4
Update Read the Docs configuration for new versions (#2330)
tbennun Apr 17, 2026
19746e5
ci: find and automatically remove unused imports (#2318)
romanc Apr 17, 2026
6fbcb04
ci: cleanup linting GitHub Action (#2337)
romanc Apr 17, 2026
4a322c1
Handle HIP flags similarly to CUDA flags (#2338)
iomaganaris Apr 17, 2026
51790b5
Add a config option for storing lineinfo into the SDFG (#2321)
romanc Apr 18, 2026
e93f2d9
Rename `build_folder_version` to `build_folder_mode` (#2348)
edopao Apr 22, 2026
34458f7
Avoid DebugInfo warnings (take two) (#2345)
romanc Apr 23, 2026
1e4d4f4
ci: update codecov action to support node24 (#2343)
romanc Apr 24, 2026
abb493c
[Minor | Python parser] Verbose error message for subscript into list…
FlorianDeconinck Apr 28, 2026
f41499c
Added gpu_min_warps_per_eu option (#2346)
iomaganaris Apr 28, 2026
3d76a66
Update `SDFG.add_loop` to use `LoopRegion` (#2300)
tbennun Apr 29, 2026
8a989cc
Fix Map Fission (#2339)
ThrudPrimrose May 3, 2026
bad709a
Fix documentation compilation issues (#2359)
tbennun May 4, 2026
3fab1a3
Add loop to reduce (#2347)
ThrudPrimrose May 4, 2026
c1d4a18
Schedule Tree to SDFG Translation (#2262)
romanc May 5, 2026
ca8c484
test: rename min warps per eu test file (#2358)
romanc May 6, 2026
f976fd2
Documentation v2 (#1126)
tbennun May 7, 2026
525962e
Fixed a Possible Bug in the Extended State Fusion (#2009)
philip-paul-mueller May 8, 2026
6ea492e
Bump release version to 2.0.0alpha3
tbennun May 11, 2026
3f9b609
Fix Loop2Map. (#2349)
ThrudPrimrose May 12, 2026
a9fc047
Lift trivial Ifs (#2138)
ThrudPrimrose May 16, 2026
6492e04
TTranspose node with cuTensor v2 (#2317)
ThrudPrimrose May 18, 2026
861901e
Bugfix/mapfission nested parent isolated nodes (#2368)
ThrudPrimrose May 18, 2026
00b1f1a
StateFusionExtended: refuse unsafe write-after-read fusion (#2369)
ThrudPrimrose May 18, 2026
5628519
Make DaCe Folder Self Consistent (again) (#2355)
philip-paul-mueller May 20, 2026
23c7d86
Maps must have a positive step: reject descending maps, assert symbol…
ThrudPrimrose May 20, 2026
3d75727
Distributed Grid Data Descriptors (#2361)
tbennun May 20, 2026
93facbb
Use seeded test input for determinism (#2376)
affifboudaoud May 21, 2026
4200db5
Better handling of subscripts in symbolic expressions (#2378)
tbennun May 22, 2026
17be66e
Make symbolic serialization type-safe (#2366)
Copilot May 22, 2026
a6717b6
fix(frontend): give each slice memlet its own subset object (#2375)
ThrudPrimrose May 22, 2026
ed461da
Fix fparser circular import on Python 3.14 (#2405)
ThrudPrimrose Jun 17, 2026
989d604
Symbolic serialization backwards compatibility (#2400)
tbennun Jun 17, 2026
aa97f77
Fix Issue #2391 (#2392)
ThrudPrimrose Jun 19, 2026
75909a8
Make Symbol Serialisation Thread Safe (#2388)
philip-paul-mueller Jun 23, 2026
853d8b5
Enforce deterministic dependency ordering in SDFG transformation pipe…
edopao Jun 23, 2026
eb13072
Subset 1D Slicing Contiguous (#2410)
philip-paul-mueller Jun 29, 2026
feb0df9
ci: update `actions/checkout` v6 -> v7 (#2417)
romanc Jul 1, 2026
a38430d
Fix `lru_cache` type-conflation in `dace.symbolic.simplify` (#2404)
Spielopoly Jul 2, 2026
9775f40
`lru_cache` Type Aware (#2423)
philip-paul-mueller Jul 3, 2026
dc3bfbe
Merge remote-tracking branch 'upstream/main' into dace_toolchain_dete…
edopao Jul 10, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
submodules: recursive

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/general-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
simplify: [0,1,autoopt]

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
submodules: 'recursive'
- name: Set up Python ${{ matrix.python-version }}
Expand Down Expand Up @@ -106,7 +106,7 @@ jobs:
./tests/xform_test.sh
coverage combine .; coverage report; coverage xml

- uses: codecov/codecov-action@v5
- uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
3 changes: 2 additions & 1 deletion .github/workflows/gpu-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
if: "!contains(github.event.pull_request.labels.*.name, 'no-ci')"
runs-on: [self-hosted, gpu]
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
submodules: 'recursive'
- name: Install dependencies
Expand All @@ -36,6 +36,7 @@ jobs:
pip install flake8 pytest-xdist coverage
pip install mpi4py
pip install cupy
pip install cutensor-cu12
pip uninstall -y dace
pip install -e ".[testing,ml]"
curl -Os https://uploader.codecov.io/latest/linux/codecov
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/heterogeneous-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
if: "!contains(github.event.pull_request.labels.*.name, 'no-ci')"
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
submodules: 'recursive'
- name: Install dependencies
Expand Down
10 changes: 2 additions & 8 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

steps:
- name: Check repository
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Setup Python 3.10
uses: actions/setup-python@v6
Expand All @@ -27,10 +27,4 @@ jobs:

- name: Run linting tools
id: lint
continue-on-error: true
run: pre-commit run --all-files

- name: Show git diff
if: steps.lint.outcome == 'failure'
run: |
./.github/workflows/scripts/show-git-diff.sh
run: pre-commit run --show-diff-on-failure --color=always --all-files
4 changes: 2 additions & 2 deletions .github/workflows/ml-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
simplify: [0,1,autoopt]

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
submodules: 'recursive'
- name: Set up Python ${{ matrix.python-version }}
Expand Down Expand Up @@ -56,7 +56,7 @@ jobs:
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@v5
- uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
167 changes: 79 additions & 88 deletions .github/workflows/pyFV3-ci.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
name: NASA/NOAA pyFV3 repository build test

# Temporarily disabled for main, and instead applied to a specific DaCe v1 maintenance branch (v1/maintenance). Once
# the FV3 bridge has been adapted to DaCe v1, this will need to be reverted back to apply to main.
on:
push:
#branches: [ main, ci-fix ]
branches: [ v1/maintenance, ci-fix ]
branches: [ main, ci-fix, romanc/stree-v2 ]
pull_request:
#branches: [ main, ci-fix ]
branches: [ v1/maintenance, ci-fix ]
branches: [ main, ci-fix, romanc/stree-v2 ]
merge_group:
#branches: [ main, ci-fix ]
branches: [ v1/maintenance, ci-fix ]
branches: [ main, ci-fix, romanc/stree-v2 ]

defaults:
run:
Expand All @@ -22,84 +17,80 @@ concurrency:
cancel-in-progress: true

jobs:
build_and_validate_pyFV3:
if: "!contains(github.event.pull_request.labels.*.name, 'no-ci')"
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.11.7]
configure:
runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.labels.*.name, 'no-ci')"
name: "Read test configuration"
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout to repository
uses: actions/checkout@v7
- name: Set matrix data
id: set-matrix
run: echo "matrix={\"include\":$(jq -c . < .github/workflows/pyFV3-regression-matrix.json)}" >> $GITHUB_OUTPUT

steps:
- uses: actions/checkout@v6
with:
repository: 'NOAA-GFDL/PyFV3'
ref: 'ci/DaCe'
submodules: 'recursive'
path: 'pyFV3'
- uses: actions/checkout@v6
with:
path: 'dace'
submodules: 'recursive'
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install library dependencies
run: |
sudo apt-get update
sudo apt-get install -y libopenmpi-dev libboost-all-dev
gcc --version
# Because Github doesn't allow us to do a git checkout in code
# we use a trick to checkout DaCe first (not using the external submodule)
# install the full suite via requirements_dev, then re-install the correct DaCe
- name: Install Python packages
run: |
python -m pip install --upgrade pip wheel setuptools
pip install -e ./pyFV3[develop]
pip install -e ./dace
- name: Download data
run: |
cd pyFV3
mkdir -p test_data
cd test_data
wget --retry-connrefused https://portal.nccs.nasa.gov/datashare/astg/smt/pace-regression-data/8.1.3_c12_6ranks_standard.D_SW.tar.gz
tar -xzvf 8.1.3_c12_6ranks_standard.D_SW.tar.gz
wget --retry-connrefused https://portal.nccs.nasa.gov/datashare/astg/smt/pace-regression-data/8.1.3_c12_6ranks_standard.RiemSolver3.tar.gz
tar -xzvf 8.1.3_c12_6ranks_standard.RiemSolver3.tar.gz
wget --retry-connrefused https://portal.nccs.nasa.gov/datashare/astg/smt/pace-regression-data/8.1.3_c12_6ranks_standard.Remapping.tar.gz
tar -xzvf 8.1.3_c12_6ranks_standard.Remapping.tar.gz
cd ../..
# Clean up caches between run for stale un-expanded SDFG to trip the build system (NDSL side issue)
- name: "Regression test: Riemman Solver on D-grid (RiemSolver3)"
env:
FV3_DACEMODE: BuildAndRun
PACE_CONSTANTS: GFS
PACE_LOGLEVEL: Debug
run: |
pytest -v -s --data_path=./pyFV3/test_data/8.1.3/c12_6ranks_standard/dycore \
--backend=dace:cpu --which_modules=Riem_Solver3 \
--threshold_overrides_file=./pyFV3/tests/savepoint/translate/overrides/standard.yaml \
./pyFV3/tests/savepoint
rm -r ./.gt_cache_FV3_A
- name: "Regression test: Shallow water lagrangian dynamics on D-grid (D_SW) (on rank 0 only)"
env:
FV3_DACEMODE: BuildAndRun
PACE_CONSTANTS: GFS
PACE_LOGLEVEL: Debug
run: |
pytest -v -s --data_path=./pyFV3/test_data/8.1.3/c12_6ranks_standard/dycore \
--backend=dace:cpu --which_modules=D_SW --which_rank=0 \
--threshold_overrides_file=./pyFV3/tests/savepoint/translate/overrides/standard.yaml \
./pyFV3/tests/savepoint
rm -r ./.gt_cache_FV3_A
- name: "Regression test: Remapping (on rank 0 only)"
env:
FV3_DACEMODE: BuildAndRun
PACE_CONSTANTS: GFS
PACE_LOGLEVEL: Debug
run: |
pytest -v -s --data_path=./pyFV3/test_data/8.1.3/c12_6ranks_standard/dycore \
--backend=dace:cpu --which_modules=Remapping --which_rank=0 \
--threshold_overrides_file=./pyFV3/tests/savepoint/translate/overrides/standard.yaml \
./pyFV3/tests/savepoint
rm -r ./.gt_cache_FV3_A
build_and_validate_pyFV3:
runs-on: ubuntu-latest
needs: configure
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.configure.outputs.matrix) }}
name: "${{ matrix.module }} regression test"

steps:
- name: Checkout pyFV3
uses: actions/checkout@v7
with:
repository: 'NOAA-GFDL/pyFV3'
path: 'pyFV3'

- name: Checkout dace
uses: actions/checkout@v7
with:
path: 'dace'
submodules: 'recursive'

- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: 3.12

- name: Install OpenMPI
run: pip install openmpi

# We install `dace` after `pyFV3` to build pyFV3 with the current version of DaCe
- name: Install pyFV3 and dace
run: |
pip install ./pyFV3[ndsl,test]
pip install ./dace

- name: Print versions
run: |
gcc --version
python --version
pip --version
pip list

- name: Download data
# Skip "Riemann Solver on D-grid" (currently failing)
if: ${{ !startsWith(matrix.module, 'Riem_Solver3') }}
run: |
mkdir -p pyFV3/test_data
cd pyFV3/test_data
wget --retry-connrefused https://portal.nccs.nasa.gov/datashare/astg/smt/pace-regression-data/${{ matrix.archive }}
tar -xzvf ${{ matrix.archive }}
cd ../..

- name: "Regression test: ${{ matrix.name }}"
# Skip "Riemann Solver on D-grid" (currently failing)
if: ${{ !startsWith(matrix.module, 'Riem_Solver3') }}
env:
FV3_DACEMODE: BuildAndRun
NDSL_LOGLEVEL: Debug
run: |
pytest -v -s --data_path=./pyFV3/test_data/8.1.3/c12_6ranks_standard/dycore \
--backend=orch:dace:cpu:KIJ --which_modules=${{ matrix.module }} \
${{ matrix.extra_args }} \
--threshold_overrides_file=./pyFV3/tests/savepoint/translate/overrides/standard.yaml \
./pyFV3/tests/savepoint
20 changes: 20 additions & 0 deletions .github/workflows/pyFV3-regression-matrix.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[
{
"name": "Shallow water lagrangian dynamics on D-grid (D_SW) (on rank 0 only)",
"archive": "8.1.3_c12_6ranks_standard.D_SW.tar.gz",
"module": "D_SW",
"extra_args": "--which_rank=0"
},
{
"name":"Riemann Solver on D-grid (RiemSolver3)",
"archive":"8.1.3_c12_6ranks_standard.RiemSolver3.tar.gz",
"module":"Riem_Solver3",
"extra_args":"--which_rank=0"
},
{
"name": "Remapping (on rank 0 only)",
"archive": "8.1.3_c12_6ranks_standard.Remapping.tar.gz",
"module": "Remapping",
"extra_args": "--which_rank=0"
}
]
2 changes: 1 addition & 1 deletion .github/workflows/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -e

# Install dependencies
pip install --upgrade twine
pip install --upgrade twine build

# Synchronize submodules
git submodule update --init --recursive
Expand Down
21 changes: 0 additions & 21 deletions .github/workflows/scripts/show-git-diff.sh

This file was deleted.

5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ default_language_version:
python: python3

repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.5
hooks:
- id: ruff-check
args: [--fix]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
Expand Down
4 changes: 2 additions & 2 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
version: 2

build:
os: ubuntu-20.04
os: ubuntu-24.04
tools:
python: "3.10"
python: "3.14"

# Build documentation in the docs/ directory with Sphinx
sphinx:
Expand Down
6 changes: 6 additions & 0 deletions ci/cscs_gpu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@ test_cscs_gh200:
- cd "${WORKDIR}/dace"
- git fetch --depth 1 origin "${CI_COMMIT_SHA}"
- git checkout "${CI_COMMIT_SHA}"
- uv pip install cutensor-cu12
- CUTENSOR_DIR="${VIRTUAL_ENV}/lib/python${PY_VERSION}/site-packages/cutensor"
- ln -sf libcutensor.so.2 "${CUTENSOR_DIR}/lib/libcutensor.so"
- export CPATH="${CUTENSOR_DIR}/include:${CPATH:-}"
- export LIBRARY_PATH="${CUTENSOR_DIR}/lib:${LIBRARY_PATH:-}"
- export LD_LIBRARY_PATH="${CUTENSOR_DIR}/lib:${LD_LIBRARY_PATH:-}"
- uv pip install -e ".[testing]"
- export DACE_cache=unique
- pytest --cov-report=xml --cov=dace --tb=short --timeout_method thread --timeout=300 -n 32 -m "${TEST_VARIANTS}"
Expand Down
Loading