Skip to content

test(hipdnn): restore the quick RMSNorm runtime_epsilon case - #12932

Merged
adickin-amd merged 3 commits into
developfrom
users/ysoliman/hqs-rmsnorm-claims
Oct 5, 2026
Merged

adickin-amd merged 3 commits into
developfrom
users/ysoliman/hqs-rmsnorm-claims

Conversation

@yassinsolim

@yassinsolim yassinsolim commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

Closes #12913

Motivation

verify_support_claims.py fails on develop with case id 'runtime_epsilon' not found in sweep.json for quick/RMSNorm/{Default,Variant2,Variant3,Variant4}. #9600 added runtime_epsilon there as a manual case. It makes epsilon a runtime pass-by-value scalar and is the only RMSNorm test of that path. #12107 regenerated these sweeps from C++ test captures with place_bundles.py. The case has no C++ test behind it, so the regeneration dropped it, while the support.json files kept its gfx1151/windows claim. Details in #12913.

Technical Details

Two commits:

  • Append the runtime_epsilon case to the four sweep.json files, copied unchanged from c9702d99f61^ (436 lines added, nothing else in the files changes). The claims stay as they are. The graph templates have the same tensor names and uids as before feat(integration-tests): (Re)generate test bundles for RMSNorm and RMSNorm fused activation #12107, and each case's tensor patch targets that variant's epsilon tensor (uid 3, 2, 1 and 2 for Default, Variant2, Variant3 and Variant4).
  • migration-scripts/place_bundles.py keeps the manual cases ("generator": "manual") of an existing sweep.json when it rewrites it. A manual case that no longer fits the regenerated template (different tensor uid set, a patch on a uid the template lacks, an unresolved placeholder, or an id a captured case now uses) makes the run exit 1 and leaves that sweep and its template unchanged. Documented in migration-scripts/README.md.

What could break: a place_bundles.py run over a tree with a manual case that no longer fits now fails where it used to drop the case. On develop the check flags two: runtime_epsilon in quick/BatchnormBackward/Default and runtime_epsilon_momentum in quick/BatchnormPointwise/Default. Their tensor sets match the Variant2 template of the same operation, not Default. Neither has a support claim. This PR does not move them.

Test Plan

Host only, no GPU. verify_support_claims.verify_all on the bundle root at develop and on this branch. scripts/test_verify_support_claims.py. migration-scripts/test_migration.py with the new and the old place_bundles.py. The new manual-case check run against every sweep on this branch that has manual cases.

Test Result

  • verify_all: 4 errors on develop (the four runtime_epsilon claims), 0 on this branch.
  • test_verify_support_claims.py: 28/28 passed.
  • test_migration.py: 14/14 passed. With the old place_bundles.py, the new test_place_keeps_manual_cases fails (the manual case is gone after the rerun) and the other 13 pass.
  • Manual-case check: 12 sweeps have manual cases. 10 fit their templates, including the four quick RMSNorm sweeps. The two Batchnorm cases above do not.

Not run: the restored case on a GPU. Its claim records a pass on gfx1151/windows before #12107. It has not run since #12107 changed the templates (added alignment, an explicit is_runtime_pass_by_value: false and min_required_engine_api_version).

Submission Checklist

@therock-pr-bot

therock-pr-bot Bot commented Oct 2, 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 2, 2026

Copy link
Copy Markdown

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The targeted deletions match the existing sweep cases and leave all four support files valid.

Review effort: Balanced
Findings: None

What changed in this PR

Removes stale runtime_epsilon support claims that reference nonexistent RMSNorm sweep cases, resolving support-claim verification failures.

Changes:

  • Removes the obsolete gfx1151/Windows claim from four quick RMSNorm variants.
  • Preserves valid claims and canonical JSON formatting.
File Description
quick/​RMSNorm/​Default/​support.json Removes stale claim.
quick/​RMSNorm/​Variant2/​support.json Removes stale claim.
quick/​RMSNorm/​Variant3/​support.json Removes stale claim.
quick/​RMSNorm/​Variant4/​support.json Removes stale claim.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@bghimireamd

Copy link
Copy Markdown
Contributor

I don't think we should drop these claims. I think we should restore the runtime_epsilon case.

Suggested fix:

  1. Restore the runtime_epsilon case in the 4 quick RMSNorm sweep.json files from c9702d99f61^.
  2. Keep the claims.
  3. Make sure regenerating the bundles keeps "generator": "manual" cases, so this doesn't happen again.

#9600 added a manual runtime_epsilon case to quick/RMSNorm/{Default,
Variant2,Variant3,Variant4}. It promotes epsilon to a runtime
pass-by-value scalar and is the only RMSNorm test of that path.
#12107 regenerated these sweeps from C++ test captures. The case has no
C++ test behind it, so it was dropped, while the sibling support.json
files kept its gfx1151/windows claim. verify_support_claims.py then
reported "case id 'runtime_epsilon' not found in sweep.json" for all
four bundles.

Append the case to each sweep.json exactly as it was at c9702d9^.
The four graph templates still have the same tensor names and uids, and
each case's tensor patch targets that variant's epsilon tensor.
place_bundles.py rewrote each sweep.json from the captured C++ cases
only. Cases written by hand ("generator": "manual" in their metadata)
have no C++ test behind them, so a regeneration dropped them without a
message. That is how #12107 lost the quick RMSNorm runtime_epsilon case.

Before writing a sweep, read the existing sweep.json at that path and
append its manual cases unchanged. A manual case that no longer fits the
regenerated template (different tensor uid set, a tensor patch on a uid
the template lacks, an unresolved placeholder, or an id a captured case
now uses) is an error: that sweep and its template are left as they
were, the error is printed, and the run exits 1.

test_migration.py gains test_place_keeps_manual_cases. It fails on the
old script (the manual case is gone after the rerun) and passes now.
@yassinsolim
yassinsolim force-pushed the users/ysoliman/hqs-rmsnorm-claims branch from 0c2db50 to 92488af Compare October 2, 2026 21:57
@yassinsolim yassinsolim changed the title test(hipdnn): drop stale runtime_epsilon claims from quick RMSNorm test(hipdnn): restore the quick RMSNorm runtime_epsilon case Oct 2, 2026
@yassinsolim

Copy link
Copy Markdown
Member Author

@bghimireamd Agreed, and done. The branch is force-pushed and no longer drops the claims.

  1. 28e2c15 appends the runtime_epsilon case to the four quick RMSNorm sweep.json files, copied unchanged from c9702d99f61^. The templates kept the same tensor names and uids after feat(integration-tests): (Re)generate test bundles for RMSNorm and RMSNorm fused activation #12107, so each case's patch still targets that variant's epsilon tensor.
  2. The claims are unchanged. verify_all goes from 4 errors on develop to 0, and test_verify_support_claims.py passes 28/28.
  3. 92488af makes place_bundles.py keep the "generator": "manual" cases of an existing sweep.json when it rewrites it. If one no longer fits the regenerated template, the run exits 1 and leaves that sweep and template unchanged. The new test_place_keeps_manual_cases fails on the old script and passes now (test_migration.py 14/14).

That check flags two existing manual cases on develop: runtime_epsilon in quick/BatchnormBackward/Default and runtime_epsilon_momentum in quick/BatchnormPointwise/Default. Their tensor sets match the Variant2 template of the same operation, not Default. For BatchnormBackward the patch targets uid 6, which the Default template does not have, so from reading applyTensorPatches the harness would throw tensor_patch uid 6 not found. Neither case is claimed. I left them alone in this PR.

The restored case was not rerun on a GPU.

@brentmaas brentmaas left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@adickin-amd
adickin-amd merged commit 8bdc761 into develop Oct 5, 2026
169 of 171 checks passed
@adickin-amd
adickin-amd deleted the users/ysoliman/hqs-rmsnorm-claims branch October 5, 2026 14:22
@assistant-librarian

Copy link
Copy Markdown
Contributor

TheRock Submodule Bump Activity

Newest first

adickin-amd added a commit that referenced this pull request Oct 14, 2026
Conflicts in the three provider test_categories_integration.yaml files:
take develop (#13198 re-tiered bundles and removed full_* from the
comprehensive tier), which supersedes this branch's earlier change.

Restore the RMSNorm runtime_epsilon claim groups in the four
quick/RMSNorm support.json files: #12932 restored the case in the sweeps,
so the claims are no longer stale.

Update running-tests.md for the new comprehensive tier contents and the
ASM_SDPA lane, and note HIPDNN_LOG_GRAPH_DIR as a graph source in
adding-tests.md.
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.

verify_support_claims: quick RMSNorm runtime_epsilon case missing

5 participants