[CI] Make benchmark baselines fork-safe and bounded#857
Merged
Conversation
Fetch the exact pull request base commit from the base repository instead of using the head fork's origin/main. Run that baseline once, fetch tags from the canonical repository, and bound the baseline step to 45 minutes. Apply the same source selection to the multi-GPU comparison. Allow concurrency cancellation to stop the real GPU jobs while retaining always-run cleanup steps. Emit annotations when optional comparisons cannot run. Refs ROCm#856. Signed-off-by: Jin Pan <47354855+jhinpan@users.noreply.github.com>
Collaborator
Author
|
CI integration update from run 29380724467:
MI355 and Navi are still in progress. The core fork/base selection and bounded-execution acceptance criteria are validated. |
Recent linux-flydsl-navi-2 jobs hang whenever free-VRAM selection chooses GPU 1, while GPU 2 and GPU 3 complete the same tests in about one minute. Keep this runner on proven healthy GPU 3 until the runner is repaired. Also cap the single-GPU test step at 60 minutes so a bad device cannot occupy a runner until GitHub's default six-hour job limit. Refs ROCm#858. Signed-off-by: Jin Pan <47354855+jhinpan@users.noreply.github.com>
Collaborator
Author
|
Navi follow-up validation on head
The unhealthy GPU and removal criteria for this temporary quarantine are tracked in #858. |
9 tasks
gyohuangxin
approved these changes
Jul 16, 2026
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
Make benchmark baseline selection deterministic for fork pull requests and prevent one unusable baseline from expanding into eight full benchmark runs.
Fixes #856.
Motivation
The current workflow checks out the PR head repository and later fetches
origin/main. For fork PRs,originis the contributor fork rather thanROCm/FlyDSL.In run 29366839827, the fork main was 11 commits behind the PR base. The same AITER API mismatch caused all eight fallback commits to fail, but every candidate still performed an editable install and almost the entire benchmark suite:
The workflow remained green after skipping both main and tag comparisons. Superseded GPU jobs could also continue because their job-level conditions used
always()despitecancel-in-progress: true.Changes
pull_request.base.repo.full_name.pull_request.base.shafor PRs andgithub.event.beforefor main pushes; manual dispatch retains canonicalmainbehavior.mainthroughmain~7.always()with!cancelled()on the real single- and multi-GPU jobs. Cleanup steps retainalways().linux-flydsl-navi-2GPU 1 by running that job on proven healthy GPU 3; tracked for infrastructure repair in [CI] linux-flydsl-navi-2 GPU 1 consistently hangs the test suite #858.mainfor compatibility with the existing dashboard parser, while logging the exact repository and commit.Baseline selection after this change:
pull_request.base.shagithub.repositorygithub.event.beforegithub.repositorymainExpected impact
For the observed failure mode, removing seven redundant retries should save roughly 65 minutes on MI355 and 50 minutes on MI325. It also makes the comparison target correct for every fork PR and allows concurrency cancellation to release GPU runners.
This intentionally remains a surgical workflow fix. AITER pinning, partial baseline CSV recovery, reusable main/release artifacts, test/performance workflow separation, and MLIR cache redesign are documented as follow-ups in #856.
Testing
git diff --check.github/workflows/flydsl.yamlwith PyYAMLbash -nover the modified embedded shell blocksactionlint v1.7.7(ignoring only the repository's known self-hosted runner labels)--depth=1rev-listfallback andgit fetch origin mainare absentROCm/FlyDSL@<base SHA>and only one main attemptNo local GPU suite was run because the change is limited to GitHub Actions orchestration; this PR's fork CI is the functional integration test.
Dependencies
Breaking Changes
None.
Related work
always(); this PR only changes real GPU jobs and is compatible with it.