[Only for CI] Extensions #39
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Canonicalization | |
| # Dedicated runner for the canonicalization suite (-m canonicalization, marked by path in | |
| # tests/conftest.py: tests/canonicalize + tests/passes/canonicalize). General CI deselects it. | |
| # canonicalize+vectorize combination tests live under the vectorization mark and run there. | |
| on: | |
| push: | |
| branches: [ main, ci-fix ] | |
| pull_request: | |
| branches: [ main, ci-fix ] | |
| merge_group: | |
| branches: [ main, ci-fix ] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{github.workflow}}-${{github.ref}} | |
| cancel-in-progress: true | |
| jobs: | |
| canonicalization: | |
| if: "!contains(github.event.pull_request.labels.*.name, 'no-ci')" | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| submodules: 'recursive' | |
| - uses: ./.github/actions/setup-dace | |
| with: | |
| python-version: '3.14' | |
| apt-packages: >- | |
| libyaml-dev cmake | |
| libblas-dev libopenblas-dev liblapacke-dev | |
| pip-packages: pytest-xdist | |
| # islpy: without it WavefrontSkew is a no-op and its tests skip. | |
| extras: testing,polyhedral | |
| - name: Test with pytest | |
| run: | | |
| export NOSTATUSBAR=1 | |
| export DACE_cache=unique | |
| # New codegens only; no autoopt, no serialization round-trip. | |
| export DACE_compiler_cpu_implementation=experimental_readable | |
| export DACE_compiler_cuda_implementation=experimental | |
| export DACE_optimizer_automatic_simplification=1 | |
| # Pinned, not left to the defaults: build caching is most of the wall time here. | |
| export DACE_compiler_command_cache=1 | |
| export DACE_compiler_precompiled_header=1 | |
| # loadgroup, not the default load: corpus cases carry xdist_group(kernel) so one kernel's | |
| # phases land on one worker and share its memoized base SDFG instead of rebuilding per worker. | |
| # ``not integration``: tests/canonicalize also holds two whole-application harnesses that take | |
| # far longer than the 600s per-test cap here (the staged CloudSC walk builds and verifies the | |
| # kernel once per phase; the determinism probe spawns a 1800s subprocess). They are marked | |
| # ``integration`` and run in the dedicated integration workflow, which budgets 7200s per test. | |
| pytest -n auto --dist loadgroup --tb=short --timeout_method thread --timeout=600 \ | |
| -m "canonicalization and not gpu and not long and not sequential and not perf and not integration" |