feat: add SEWASStarPU distributed execution engine and switch Linux CI to it - #21
Merged
Merged
Conversation
…set dep-count via CMake cache vars instead of a patch
…es, parsec_arena_datatype_construct)
…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.
…dlog compile errors
…rgs to int in HaloManager LOG calls for Windows CI
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
SEWASStarPU, a new distributed execution engine built on StarPU-MPI, and switches Linux CI's distributed backend from PaRSEC to it viaSEWAS_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_insertAPI reproduces a comparable deadlock, but its lower-level explicitisend_detached/irecv_detachedAPI does not, across 124 trials at loads well beyond anything that broke PaRSEC.SEWASStarPUis built on the explicit send/recv API accordingly.Changes
include/SEWASStarPU.hxx,src/SEWASStarPU.cxx— new StarPU-MPI-based execution engine, wired intoLinearSeismicWaveModel::propagate()andExecutionContextalongside the existing PaRSEC/sequential dispatch. Task priorities reuse the existingMinimumCommunicationPriorityEvaluator.CMakeLists.txt,cmake/resources/starpu/CMakeLists.txt— newSEWAS_WITH_STARPUoption (mutually exclusive withSEWAS_WITH_PARSEC); StarPU is located viapkg-configand, when missing, auto-downloaded/built the same way PaRSEC/ADIOS2 already are (gated byDOWNLOAD_MISSING_DEPS)..github/workflows/Linux.yml— Linux CI now configures with-DSEWAS_WITH_STARPU=ONinstead of-DSEWAS_WITH_PARSEC=ON, and drops theflex/bisoninstall step (only needed for PaRSEC'sparsec-ptgpp). PaRSEC itself is untouched and still buildable viaSEWAS_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.actions/checkoutto v4, README rewrite for the vcpkg-based build workflow, PaRSEC 4.0 arena/datatype API port,googletestpin.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
-DSEWAS_WITH_STARPU=ONconfiguration (ctest, includingTestC/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=ONstill builds and passes locally (no longer covered by CI, but not removed)