Skip to content

feat: add SEWASStarPU distributed execution engine and switch Linux CI to it - #21

Merged
jfonseca-aneo merged 18 commits into
masterfrom
jf/starpu
Aug 24, 2026
Merged

jfonseca-aneo merged 18 commits into
masterfrom
jf/starpu

Conversation

@jfonseca-aneo

@jfonseca-aneo jfonseca-aneo commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds SEWASStarPU, a new distributed execution engine built on StarPU-MPI, and switches Linux CI's distributed backend from PaRSEC to it via SEWAS_WITH_STARPU.

This is motivated by a real, bisected upstream PaRSEC defect: a race in PaRSEC's remote-dependency engine corrupts or hangs cross-rank typed halo exchange on every release since parsec-3.0.2012-rc1. SeWaS's current pin to the last pre-regression commit is a mitigation, not a fix.

Before writing any production code, we validated the migration path with a standalone de-risking spike (kept local, not part of this PR — see note below). Key result: StarPU-MPI's high-level task_insert API reproduces a comparable deadlock, but its lower-level explicit isend_detached/irecv_detached API does not, across 124 trials at loads well beyond anything that broke PaRSEC. SEWASStarPU is built on the explicit send/recv API accordingly.

Changes

  • include/SEWASStarPU.hxx, src/SEWASStarPU.cxx — new StarPU-MPI-based execution engine, wired into LinearSeismicWaveModel::propagate() and ExecutionContext alongside the existing PaRSEC/sequential dispatch. Task priorities reuse the existing MinimumCommunicationPriorityEvaluator.
  • CMakeLists.txt, cmake/resources/starpu/CMakeLists.txt — new SEWAS_WITH_STARPU option (mutually exclusive with SEWAS_WITH_PARSEC); StarPU is located via pkg-config and, when missing, auto-downloaded/built the same way PaRSEC/ADIOS2 already are (gated by DOWNLOAD_MISSING_DEPS).
  • .github/workflows/Linux.yml — Linux CI now configures with -DSEWAS_WITH_STARPU=ON instead of -DSEWAS_WITH_PARSEC=ON, and drops the flex/bison install step (only needed for PaRSEC's parsec-ptgpp). PaRSEC itself is untouched and still buildable via SEWAS_WITH_PARSEC=ON, just no longer exercised by CI.
  • README.md — updated to describe StarPU as CI's distributed backend and PaRSEC as the (still supported) alternative.
  • Misc: bump ADIOS2 pin, drop a now-redundant vcpkg arm64-linux patch, bump actions/checkout to v4, README rewrite for the vcpkg-based build workflow, PaRSEC 4.0 arena/datatype API port, googletest pin.

Note

The de-risking spike and its feasibility write-up were kept out of version control (local reference only) since they're throwaway investigation artifacts, not something the repo needs to carry going forward.

Test plan

  • Linux CI passes with the new -DSEWAS_WITH_STARPU=ON configuration (ctest, including TestC/TestCSplitX/Y/Z) — note: CI has apparently never executed on this repo (0 recorded workflow runs), so this may need the Actions setting sorted out first
  • -DSEWAS_WITH_PARSEC=ON still builds and passes locally (no longer covered by CI, but not removed)

…set dep-count via CMake cache vars instead of a patch
…ies regression breaks cross-rank halo exchange
Drops the now-unneeded flex/bison install step (only needed for PaRSEC's
parsec-ptgpp JDF compiler) and updates README.md/CLAUDE.md to match.
…rgs to int in HaloManager LOG calls for Windows CI
@jfonseca-aneo
jfonseca-aneo merged commit 58f6bcb into master Aug 24, 2026
2 checks passed
@jfonseca-aneo
jfonseca-aneo deleted the jf/starpu branch August 24, 2026 13:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant