Add classic structured DAG example (Gaussian elimination, FFT) - #71
Open
rodrigodg1 wants to merge 1 commit into
Open
Add classic structured DAG example (Gaussian elimination, FFT)#71rodrigodg1 wants to merge 1 commit into
rodrigodg1 wants to merge 1 commit into
Conversation
Adds scripts/examples/classic_dags: generators for the two structured task-graph families used to evaluate list schedulers in the HEFT/CPoP paper (Topcuoglu, Hariri and Wu 2002, Figs. 8 and 10) and, later, PEFT (Arabnejad and Barbosa 2014) -- Gaussian elimination and FFT. Each generator verifies the paper's closed-form task count on every run. The script schedules each instance with seven schedulers, prints a makespan comparison, and saves task-graph and Gantt-chart drawings sized to stay legible at both small and large instance counts. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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
scripts/examples/classic_dags, an example with generators for the two classic structured task-graph families used to evaluate list schedulers in the heterogeneous-scheduling literature: Gaussian elimination and FFT, with the exact topologies specified in the HEFT/CPoP paper (Topcuoglu, Hariri and Wu, IEEE TPDS 13(3), 2002, doi:10.1109/71.993206, Figs. 8 and 10). The same families appear in the evaluation of PEFT (Arabnejad and Barbosa, IEEE TPDS 25(3), 2014, doi:10.1109/TPDS.2013.57).gaussian_elimination_dag,fft_dag) asserts the paper's closed-form task count and acyclicity on every run.__super_source__/__super_sink__(added automatically since the FFT graph has multiple exit tasks) so they match the papers' figures; the dummy tasks are still scheduled and never affect makespans.scripts/examples/Readme.md.Type of change
Checklist
mainand up to date with it (no conflicts)uv run pytest tests/ --timeout=120passes locally (124 passed)uv run mypy src/saga --ignore-missing-importsis clean (unaffected;src/sagais untouched by this PR — also ranmypydirectly against the new file, clean)uv run ruff check src/sagaanduv run ruff format --check src/sagaare clean (unaffected; also ran both directly against the new file, clean)pyproject.toml/uv.lockchanges, or version bumpNotes for reviewers
scripts/, which is outside thepytest/CI-lintedsrc/sagascope (consistent with the other examples inscripts/examples/, none of which have dedicatedpytestcoverage). The generators self-verify structurally (task-count formula + acyclicity) on every run instead.ETFScheduler(andPEFTScheduleron symmetric graphs) produce different makespans across runs on identical instances, due to unsorted set iteration in tie-breaking. Happy to open a separate issue/PR for that if useful — didn't want to scope-creep this one.