Repository navigation
ci(hipdnn): add lanes + trigger_source dispatch inputs to superbuild CI - #13348
Open
bghimireamd wants to merge 2 commits into
Open
bghimireamd wants to merge 2 commits into
bghimireamd wants to merge 2 commits into
Conversation
✅ All Checks Passed — Ready for Review
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
|
🎉 All checks passed! This PR is ready for review. |
Merged
5 of 6 tasks
bghimireamd
force-pushed
the
users/bghimire/ALMIOPEN-2473/ci_workflow_enhancement
branch
from
October 20, 2026 03:48
56ace2f to
4669298
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #13348 +/- ##
===========================================
+ Coverage 75.94% 75.95% +0.01%
===========================================
Files 2873 2880 +7
Lines 477013 479003 +1990
Branches 71574 71955 +381
===========================================
+ Hits 362223 363791 +1568
- Misses 90091 90349 +258
- Partials 24699 24863 +164
*This pull request uses carry forward flags. Click here to find out more. 🚀 New features to boost your workflow:
|
bghimireamd
marked this pull request as ready for review
October 20, 2026 13:28
…CI (ALMIOPEN-2473) - Comment the cron line (daily 07:17 UTC). - workflow_dispatch input `lanes` (both/linux/windows) so a manual run can use one machine instead of two. - workflow_dispatch input `trigger_source` and a `run-name` so dispatched runs show who started them and which lanes ran. PR and nightly runs are unchanged: inputs are empty outside dispatch. Co-Authored-By: Claude <noreply@anthropic.com>
…clares it (ALMIOPEN-2473) dispatch sets trigger_source=hipdnn-trigger-ci on workflows that declare the input (today hipdnn-superbuild), so the run name shows the run came from the skill. An explicit -f trigger_source=... wins; workflows without the input are sent nothing extra. SKILL.md documents this and its superbuild example now shows -f lanes=linux. Co-Authored-By: Claude <noreply@anthropic.com>
bghimireamd
force-pushed
the
users/bghimire/ALMIOPEN-2473/ci_workflow_enhancement
branch
from
October 21, 2026 21:53
1bda0e0 to
318ac0c
Compare
adickin-amd
pushed a commit
that referenced
this pull request
Oct 22, 2026
…suites in superbuild CI (#13385) ## Summary The IngestorGenerator and DescriptorGenerator pytest suites never ran in the hipDNN superbuild lanes: the CI venv had no PyYAML or Jinja2, nothing registered them with ctest, and several of their tests skipped silently without their inputs. This runs both suites as ordinary ctest entries in the Linux and Windows superbuild jobs (not TheRock) under a small pytest plugin that fails any skip a test has not explicitly allowed, and replaces the packaging-probe junit check with a configure-time minimum. JIRA ID : ALMIOPEN-2843 ## Risk Assessment Risk 3 of 5: no product code changes, but a new gate lands in the superbuild lanes, so a regression in these tools can now turn them red, and a lane that discovers fewer packaging probes than it requires now fails at configure. The suites register behind `HIPDNN_ENABLE_TOOLING_TESTS`, which defaults to OFF and is enabled only in `hipdnn-superbuild-ci.yml`; the probe minimum defaults to 0 and only the two superbuild lanes set it. TheRock and developer builds are unchanged. ## ASIC Coverage Host-only: the tests drive Python generators and compile generated C++ with `-fsyntax-only`, and the probe check runs at configure time. No device code, dispatch default or support surface changes, so passing PR CI is sufficient. ## Testing Summary - Both suites through `ctest` on Linux (ROCm container, the lane's flags, a built gfx942 packing tree) and on Windows. On Linux the ingestor suite also passes with no system C++ compiler on `PATH`, using only the compiler that builds the tree. - The plugin's own unit tests: a throwaway suite run with and without the plugin covers plain, `skipif`, fixture and module-level skips, xfail, and the `allow_skip` marker with and without a reason. - The packaging-probe minimum through real configures on Linux and Windows: it passes with the probes option ON, fails with a minimum above the declared count, and fails when set with the probes option OFF. ## Testing Checklist - [x] DescriptorGenerator suite under the plugin (Linux, Windows) - `ctest -R hipdnn_descriptor_generator_pytest` - Status: Passed (695, none skipped) - [x] IngestorGenerator suite under the plugin (Linux, Windows) - `ctest -R hipdnn_ingestor_generator_pytest` - Status: Passed with `rocm_kpack` installed, as the lanes do - [x] Plugin tests - `python -m pytest projects/hipdnn/tools/IngestorGenerator/tests/test_strict_skips_plugin.py` - Status: Passed (3) - [x] Packaging-probe minimum (Linux, Windows) - configure with `-DHIPKERNELPROVIDER_ENABLE_PACKAGING_PROBES=ON` and `-DHIPKERNELPROVIDER_MIN_PACKAGING_PROBES` set to 1, 99, and 1 with the probes option OFF - Status: passes, fails, fails as intended - [x] hkp-pack tests touched here (Linux, Windows) - `python -m pytest tests -m quick` in `descriptor-packaging` - Status: Passed - [ ] PR CI - GitHub PR checks - Status: Pending ## Technical Changes - `HIPDNN_ENABLE_TOOLING_TESTS` registers the two suites as ctest tests (build tree only). Configure fails if pytest, PyYAML, Jinja2 or the kernel ingestor is missing, and the CI requirements file gains PyYAML and Jinja2. - `hipdnn_strict_skips` (`projects/hipdnn/tools/pytest_plugins/`) is a pytest plugin that turns any skipped or xfailed test into a failure. A skip that is correct by design opts out with `@pytest.mark.allow_skip(reason=...)` beside the code that skips: the POSIX-only sweep tests and the coverage-gate test that runs a shebang script. A skip raised while a module is imported fails the collection. Run by hand the plugin is not loaded, so tests skip as before. - The gates the lanes can satisfy now run: `ctest` supplies the validator binary, the flatbuffers/HIP include directories, and puts the directory of the compiler that builds the tree on the test `PATH`, so the native-stub tests need no separate C++ compiler. The DescriptorGenerator CLI tests use `sys.executable`, and its file lists use `as_posix()` (23 Windows failures before). - `TestAgainstTheRealBuild` is deselected in the ingestor ctest entry: it gates a build packed with the gfx950 attention engine, which neither lane packs. - `HIPKERNELPROVIDER_MIN_PACKAGING_PROBES` fails configure when probe discovery declares fewer probes than a lane requires, or when it is set without the probes option. Both superbuild lanes set it to 1 and run `ctest` with `--no-tests=error`, which replaces `check_probe_junit.py`, its tests and the manifest it read. - hkp-pack: `test_specialization_agreement.py` moves to the quick tier, and the worker `sys.path` tests no longer depend on `HIPKERNELPROVIDER_ROCM_KPACK_DIR` or pass vacuously where the default start method forks. ## Related PRs - #13348 edits the same "Run tests" step. It filters `ctest` by label on dispatch runs, which could leave the tooling ctest entries or the packaging probes unselected; whichever merges second should make sure they stay in the selected set. - #12958 also edits `test_native_stub.py` and the IngestorGenerator README. --------- Co-authored-by: Brian Harrison <brian.harrison@amd.com>
This branch has not been deployed
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.
Motivation
Follow-up to review feedback on #10416 and to #12737 (the
hipdnn-trigger-ciskill). Ticket: ALMIOPEN-2473.Two problems with a manual run of the hipDNN superbuild CI today:
Changes
.github/workflows/hipdnn-superbuild-ci.yml# Daily at 07:17 UTC).workflow_dispatchinputs:lanes:both(default) /linux/windows.trigger_source: who or what started the run; defaults to the dispatching user.run-namefor dispatch runs, e.g.hipDNN Superbuild CI (hipdnn-trigger-ci) lanes=linux.PR and nightly runs are unchanged: inputs are empty for those events, so both lanes run and GitHub keeps its default run name. Each lane's
if:is ANDed with the existingchangesjob check, so docs-only PRs still skip the builds. The concurrency group is unchanged.projects/hipdnn/tools/ai/skills/hipdnn-trigger-ci/trigger_ci.py dispatchsetstrigger_source=hipdnn-trigger-ciwhen the workflow declares that input. An explicit-f trigger_source=...wins. Workflows without the input are sent nothing extra.SKILL.mddocuments this; the superbuild example now uses-f lanes=linux.Why not engine/tier filters (from the ticket)
The ticket also asked for per-engine and per-tier test selection. Dropped, because:
tierfilter would match nothing.Choosing a lane is what actually saves time and a machine.
Testing
actionlint: clean apart from the existing custom runner-label warnings (azure-*-scale-rocm).test_trigger_ci.py: 88 passed, including 3 new tests (auto-fill, explicit value wins, not sent when undeclared).lanes=linuxdispatch viatrigger_ci.py: run 39682459630. It is titledhipDNN Superbuild CI (hipdnn-trigger-ci) lanes=linux, the Windows job is skipped, and the Linux job runs.🤖 Generated with Claude Code