Skip to content

ci(hipdnn): add lanes + trigger_source dispatch inputs to superbuild CI - #13348

Open
bghimireamd wants to merge 2 commits into
developfrom
users/bghimire/ALMIOPEN-2473/ci_workflow_enhancement
Open

bghimireamd wants to merge 2 commits into
developfrom
users/bghimire/ALMIOPEN-2473/ci_workflow_enhancement

Conversation

@bghimireamd

@bghimireamd bghimireamd commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

Follow-up to review feedback on #10416 and to #12737 (the hipdnn-trigger-ci skill). Ticket: ALMIOPEN-2473.

Two problems with a manual run of the hipDNN superbuild CI today:

  1. It always runs both the Linux and the Windows lane, even when you only care about one.
  2. Every run in the Actions list has the same title, so you can't tell who started it or what it ran.

Changes

.github/workflows/hipdnn-superbuild-ci.yml

  • Comment the nightly cron (# Daily at 07:17 UTC).
  • Two optional workflow_dispatch inputs:
    • lanes: both (default) / linux / windows.
    • trigger_source: who or what started the run; defaults to the dispatching user.
  • run-name for 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 existing changes job 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 dispatch sets trigger_source=hipdnn-trigger-ci when the workflow declares that input. An explicit -f trigger_source=... wins. Workflows without the input are sent nothing extra.
  • SKILL.md documents 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:

  • Tests take about 2 minutes of a ~27-minute lane; the build is the cost, and a test filter doesn't skip the build.
  • The superbuild's sparse checkout has no tier labels, so a tier filter 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=linux dispatch via trigger_ci.py: run 39682459630. It is titled hipDNN Superbuild CI (hipdnn-trigger-ci) lanes=linux, the Windows job is skipped, and the Linux job runs.

🤖 Generated with Claude Code

@github-actions github-actions Bot added github actions project: none Does not target any component labels Oct 8, 2026
@bghimireamd bghimireamd changed the title ci(hipdnn): add selective workflow_dispatch inputs to superbuild CI (ALMIOPEN-2473) ci(hipdnn): add selective workflow_dispatch inputs to superbuild CI Oct 8, 2026
@therock-pr-bot

therock-pr-bot Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

✅ All Checks Passed — Ready for Review

Check Status Details
📝 PR Description ✅ Pass —
⛔ Forbidden Files ✅ Pass —
🧪 Unit Test ✅ Pass —
🔎 pre-commit ✅ Pass —
🚫 Draft PR 🔜 To Be Enabled —
🚩 Feature Flag 🔜 To Be Enabled —
📊 Code Coverage 🔜 To Be Enabled —
🤖 therock-pr-bot ✅ Pass —

🎉 All checks passed! This PR is ready for review.

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

🙋 Wish to Override Policy?

@therock-pr-bot

therock-pr-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown

🎉 All checks passed! This PR is ready for review.

@bghimireamd
bghimireamd force-pushed the users/bghimire/ALMIOPEN-2473/ci_workflow_enhancement branch from 56ace2f to 4669298 Compare October 20, 2026 03:48
@bghimireamd bghimireamd changed the title ci(hipdnn): add selective workflow_dispatch inputs to superbuild CI ci(hipdnn): add lanes + trigger_source dispatch inputs to superbuild CI Oct 20, 2026
@codecov

codecov Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

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     
Flag Coverage Δ *Carryforward flag
TensileLite-CPP 48.93% <ø> (ø) Carriedforward from 7fe4848
TensileLite-Unit 83.65% <ø> (ø) Carriedforward from 7fe4848
hipBLAS 90.62% <ø> (ø) Carriedforward from 7fe4848
hipBLASLt 64.43% <ø> (ø) Carriedforward from 7fe4848
hipCUB 82.68% <ø> (ø) Carriedforward from 7fe4848
hipDNN 86.79% <ø> (-0.24%) ⬇️
hipFFT 42.00% <ø> (ø) Carriedforward from 7fe4848
hipRAND 76.12% <ø> (ø) Carriedforward from 7fe4848
hipSOLVER 69.67% <ø> (ø) Carriedforward from 7fe4848
hipSPARSE 86.99% <ø> (ø) Carriedforward from 7fe4848
rocBLAS 68.73% <ø> (ø) Carriedforward from 7fe4848
rocFFT 48.10% <ø> (ø) Carriedforward from 7fe4848
rocRAND 57.30% <ø> (ø) Carriedforward from 7fe4848
rocSOLVER 76.74% <ø> (ø) Carriedforward from 7fe4848
rocSPARSE 76.92% <ø> (ø) Carriedforward from 7fe4848
rocThrust 93.15% <ø> (ø) Carriedforward from 7fe4848

*This pull request uses carry forward flags. Click here to find out more.
see 8 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bghimireamd
bghimireamd marked this pull request as ready for review October 20, 2026 13:28
@bghimireamd
bghimireamd requested a review from a team as a code owner October 20, 2026 13:28
bghimireamd and others added 2 commits October 21, 2026 17:50
…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
bghimireamd force-pushed the users/bghimire/ALMIOPEN-2473/ci_workflow_enhancement branch from 1bda0e0 to 318ac0c Compare October 21, 2026 21:53
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

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant