Skip to content

fix(hip-kernel-provider): reserve FlyDSL census TOMLs with their shard - #14801

Merged
shumway merged 1 commit into
developfrom
users/brpepers/flydsl-rmsnorm-census-shard
Oct 31, 2026
Merged

shumway merged 1 commit into
developfrom
users/brpepers/flydsl-rmsnorm-census-shard

Conversation

@BradPepersAMD

Copy link
Copy Markdown
Contributor

Summary

The HipDNN Windows Superbuild fails at CMake configure on develop since #14111 merged:

CMake Error at dnn-providers/hip-kernel-provider/descriptor-packaging/cmake/HkpPackaging.cmake:2400 (message):
  hkp: the gfx1151 census shard names hipkernel_flydsl_rmsnorm_gfx1151.toml,
  but nothing places it beside the shard, so its entries fail from the build
  tree.  Pass the file to hkp_reserve_census_shard(...  FILES <path>) where
  the entry is routed to the shard.

#14573 added that check and moved the gfx950 entry's TOML into hkp_reserve_census_shard(... FILES ...). #14111's last superbuild run predates #14573, and it merged afterwards without a rebase (the required checks are not strict), so its per-arch FlyDSL entries still pass the generated TOML only as TEST_CONFIG. Only builds with legacy CTest labels (no shared/ctest, as in the Windows superbuild) write the TOML name into the shard text, so Linux is not affected.

This PR passes the generated FlyDSL TOML to hkp_reserve_census_shard(... FILES ...), exactly as the gfx950 entry does.

JIRA ID: ALMIOPEN-2953

Testing

  • The Windows superbuild on this PR is the check: it configures past the census step.
  • descriptor-packaging/tests/test_hkp_census_shard_files.py (the FILES mechanism): 4 passed.
  • The same configure error currently fails the Windows superbuild on other PRs based on today's develop (runs 41135285646, 41134306713, 41136279489).

🤖 Generated with Claude Code

#14573 made hkp_finalize_census_install() fail when a census shard names a
TOML that is not placed beside it, and fixed the gfx950 entry. #14111, merged
after it without a rebase, added per-arch FlyDSL entries whose generated TOML
is passed only as TEST_CONFIG. With legacy CTest labels (no shared/ctest, as
in the Windows superbuild) the shard names that TOML and configure fails:

  hkp: the gfx1151 census shard names hipkernel_flydsl_rmsnorm_gfx1151.toml,
  but nothing places it beside the shard ...

Pass the TOML to hkp_reserve_census_shard(... FILES ...) as the gfx950 entry does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@therock-pr-bot

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

Copy link
Copy Markdown

✅ All Checks Passed — Ready for Review

Check Status Details
📝 PR Description ✅ Pass —
⛔ Forbidden Files ✅ Pass —
🧪 Unit Test ✅ Pass PR does not contain code files — Unit Test auto-passed
🔎 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

Copy link
Copy Markdown

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

@shumway
shumway merged commit c9833f2 into develop Oct 31, 2026
206 of 218 checks passed
@shumway
shumway deleted the users/brpepers/flydsl-rmsnorm-census-shard branch October 31, 2026 03:01
@shumway

shumway commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

I just merged because this is blocking my PRs.

BrianHarrisonAMD added a commit that referenced this pull request Nov 2, 2026
…g (ALMIOPEN-2922) (#13972)

## Summary
Implements [RFC
0021](https://github.com/ROCm/rocm-libraries/blob/develop/projects/hipdnn/docs/rfcs/0021_KernelSlots.md)
(kernel slots). An engine can run several kernels in a fixed order, and
each position (a slot) picks its kernel independently. The first
intended user is split SDPA backward (prep, dK/dV, dQ).

JIRA ID : ALMIOPEN-2922

## Risk Assessment
Risk 3: a new feature path in the plugin SDK, behind
`HIPDNN_ENABLE_KERNEL_INGESTOR`. That flag is OFF by default in hipDNN
and ON in TheRock.

Engines without slots are unchanged. Golden tests pin their knob ids,
selector revision and winner records, and their packed bundles match
`develop` byte for byte. Public API changes are additive, apart from the
source changes listed in RFC 0021 section 10.

## ASIC Coverage
The change is architecture-independent host code. It was tested on the
host with the GPU hidden, and on a gfx90a device for the device-gated
tests (gfx950 for an earlier head). A local build targeting gfx90a,
gfx950 and gfx1151 runs every packed-load test. CI covers Linux and
Windows superbuilds and TheRock gfx94X, gfx950, gfx110X and gfx125X
builds; the Windows superbuild currently fails at configure on a
`develop` issue (#14801).

## Testing Summary
Results are for this head: the single feature commit, rebased onto
`develop` f755808.

Host suites (Linux, flag ON, GPU hidden):

| Suite | Result |
|---|---|
| `hipdnn_plugin_sdk_tests` | 1637 run, 0 failed, 15 skipped
(device-gated or locale) |
| hipDNN ctest: SDK, validator, generator, bench and `uhd_gen`
(required, not skipped) | 88/88 |
| hip-kernel-provider ctest: gtest suites, `hkp_pack` pytest and
packaging probes (provider-wide GPU integration tiers not run) | 67 run,
0 failed, 1 skipped (environment) |
| `hkp_pack` and packaging-probe pytest, run directly | 386 and 182
passed |

Device-gated tests on gfx90a:
- Plugin SDK stall, benchmark and timer tests: 45/45.
- `hip_kernel_provider_tests`: 1179 passed, 3 skipped (a device
code-object capture, and the gfx950 and gfx1151 fixture loads, which the
three-arch build runs: 10/10 packed-load tests). This includes
`TestMultiLaunchEndToEnd`.
- `hip_kernel_provider_integration_tests`: 35/35, including the
`kernel_ingestor_engine` suites.

Not tested:
- Real slotted kernels; the fixtures are synthetic.
- `hipdnn_bench --sweep` on a slotted engine.
- The RFC section 11 separability check.

Like the existing `uhd_gen` tests, the slot tests skip in CI because CI
lacks pandas, pyarrow and lightgbm (#14623). They pass locally.

## Testing Checklist
- [x] Host suites above - Status: Passed
- [x] Device-gated SDK and HKP tests - Devices: gfx90a (gfx950 for an
earlier head) - Status: Passed
- [x] pre-commit - Status: Passed
- [ ] hipDNN superbuild CI, Linux and Windows - Status: Linux running;
Windows fails at configure on a `develop` FlyDSL census-shard error, not
from this change (fix: #14801)
- [ ] TheRock multi-arch CI - Status: Running on the new head

## Technical Changes
- **Plugin SDK:**
  - UED, KDP and UHD 1.1 describe slots.
- Each slot has its own catalog, ranker, `<slot>.<field>` knobs and
winner records.
- A slot program runs the picks over one shared workspace.
`SlotProgramBenchmark` times whole programs, and `winners.jsonl` v3
records the results.
- **Composition with existing features:**
- Slots work with multi-launch kernels, pointer catalogs, staged
applicability and the stall-restart benchmark policy.
- A slot's kernels may be rocKE, hip or hsaco multi-launch kernels
(#14215); `launches` and the launch-set checks apply per slot. The
gfx950 hsaco fixture's `dq` slot is a two-launch hsaco `sources` kernel.
  - Regenerated slotted bundles keep their descriptor ids (#14109).
  - Slotted plans are not serialized (RFC 0021 section 11).
- **RFCs:** RFC 0017 links RFC 0021 and carries the slot edits RFC 0021
lists.
- **Tooling:**
  - `uhd_gen --slot` trains and promotes one slot's ranker.
- IngestorGenerator, `hipdnn_validate_descriptors` and `hipdnn_bench`
accept slotted engines.
- **`hkp_pack`:** packs slotted engines and rejects invalid slot
configurations it can detect statically.
- **Shared rule corpus:** the `trained_against` slot-provenance rules
are one JSON corpus run by the C++ parser, the packaging schema,
`hkp_pack` and `uhd_gen`.
- **Test packaging:** fixtures built for one arch (gfx950 hsaco, gfx1151
multi-launch) pack only when the build targets that arch. On other
builds, packaging probes check that they pack.
- **Skills:** the `hipdnn-ingestor-engine` skill names RFC 0017 by
repository path, so `validate-skills.py` passes.
- **Behavior changes visible on unslotted engines:**
  - Ingestor log lines now name the engine.
- A cached decline logs at INFO instead of TRACE. Logging is off by
default.

## Known Issues
- PR CI does not build for gfx950 or gfx1151 on Linux, so the
packed-load tests of the two single-arch fixtures do not run there. The
gfx1151 test would run on the Windows superbuild, which currently fails
at configure on a `develop` issue (#14801); both ran in a local build
targeting gfx90a, gfx950 and gfx1151 for this head. Until CI covers
these arches, changes to those fixtures need a build that targets them.
@assistant-librarian

Copy link
Copy Markdown
Contributor

TheRock Submodule Bump Activity

Newest first

bartekxk added a commit that referenced this pull request Nov 5, 2026
… the develop merge

The develop merge built only with HIPDNN_ENABLE_KERNEL_INGESTOR=OFF. With it on:

- Reserve hipkernel_Gfx950ConvFwd.toml with its census shard (FILES), as
  develop's #14801 now requires; configure failed without it.
- Carry KernelDefinition::prepared/preparedBy through launchKernelDefinition()
  and null them in the FlyDSL test fixtures: develop's positional
  constructions predate the fields and failed -Wmissing-field-initializers.
- Restore the gfx950AttentionDenseKpackModuleCache() declaration the merge
  dropped from IngestorKernelCode.hpp.
- Pass the graph match's bound tokens to candidate filters: after develop's
  slot refactor catalog.bound is only set by the caller, so filters saw none
  (caught by ACandidateFilterNarrowsWhatItsKernelMatcherAdmitted).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.

4 participants