Skip to content

test(hipdnn): move the heaviest layernorm cases out of the nightly comprehensive tier - #12221

Draft
adickin-amd wants to merge 1 commit into
developfrom
users/addickin/hkp_comprehensive_tier_budget
Draft

adickin-amd wants to merge 1 commit into
developfrom
users/addickin/hkp_comprehensive_tier_budget

Conversation

@adickin-amd

Copy link
Copy Markdown
Contributor

Summary

hip-kernel-provider-external-integration_comprehensive_suite still exceeds the
nightly job's 30-minute wall on every arch, so the nightly has no usable signal.
#11884 retiered part of this surface; the measured remainder is the full-tier
Layernorm bundles (which the comprehensive tier pulls in via full_*) and the
C++ Comprehensive/ layernorm-backward shapes. This moves both to the weekly
full tier. No case is deleted or skipped.

JIRA ID : ROCM-31126

Follow-up to #11884; #11529 is still open and reproducing.

Timings parsed from the 2026-09-16 gfx110X-all nightly (run 35048741357, job
104671445871
),
which reached only 2957 of 6513 selected tests before the kill:

bucket time tests
full_Layernorm_Default 838.0 s 320 of 336 (killed inside)
all other full_* bundles 300.0 s 1800
C++ Comprehensive/ layernorm 382.2 s 280
C++ Standard/ + Quick/ + Smoke/ 240.4 s 557
quick_* / standard_* bundles never reached ~3036

Risk Assessment

Risk 3. No product code changes — the diff is a test shape catalog, gtest
instantiations, and one CTest category file. The blast radius is wider than the
one failing job, though: removing the Comprehensive layernorm instantiations
moves those cases out of the nightly tier for the miopen and hipblaslt lanes
too, because all three provider test_categories_integration.yaml files list
Comprehensive/* and none list Full/*. That is a deliberate cadence change
(nightly to weekly) for those shapes across all providers, not a
hip-kernel-provider-only edit, and it is the main thing to review. The
alternative — adding Full/* to the other two providers' comprehensive tiers to
preserve nightly coverage — would pull the >5M-element weekly shapes into their
nightlies and break them instead. Case count is conserved end to end, so
residual risk is tier routing, not correctness.

ASIC Coverage

Passing PR CI is sufficient; no multi-arch sweep required. Nothing here can
change kernel selection, support surface, or default behavior on any target, and
no tier gains cases — every change moves a case to a heavier tier. The decisive
evidence is the next nightly on the affected families (Linux gfx94X-dcgpu,
gfx110X-all, gfx120X-all, gfx1151; Windows gfx110X-all, gfx120X-all,
gfx1151), since the failure this fixes only manifests in the nightly
comprehensive lane.

Testing Summary

  • Build: hip-kernel-provider superbuild, gfx1151/Windows, 869/869 targets.
  • Tier wiring: the generated CTest invocation was read back from the configured
    build tree and checked against the intended filter. Resolved comprehensive
    filter is
    quick_*:standard_*:full_*:Smoke/*:Quick/*:Standard/*:Comprehensive/*:Integration*-*DISABLED*:full_Layernorm_*.
  • Shape conservation: static count of the merged 5D catalog against the case
    counts measured in the failing nightly (36 shapes x 2 layouts x 7 backward
    fixtures = 504 = the previous 224 Full + 280 Comprehensive; the 280 matches the
    nightly exactly).
  • Budget: per-suite timings parsed from the failing nightly log.

Not verified locally: the integration-tests binary does not launch on this
workstation (exit 53, no output, even for --gtest_help; under ctest it
surfaces as 0xc0000135). An untouched prior build fails identically, so this is
a pre-existing local environment problem, not a property of this change. The
post-change wall-clock is therefore projected from the nightly log rather than
measured, and PR CI plus the next nightly are the real evidence.

Testing Checklist

  • Superbuild - cmake --build build --parallel 16 (preset hip-kernel-provider, gfx1151) - Status: Passed
  • Tier wiring - ctest -R '^hip-kernel-provider-external-integration_comprehensive_suite$' -V -N - Status: Passed
  • Category generation - python3 shared/ctest/parse_test_categories.py <yaml> hkp-ext /tmp - Status: Passed
  • Pre-commit - pre-commit run --files <4 changed files> - Status: Passed
  • Nightly comprehensive suite completes within the 30-minute wall - TheRock nightly - ASICs: gfx94X-dcgpu, gfx110X-all, gfx120X-all, gfx1151 (Linux + Windows) - Status: Pending
  • PR CI - GitHub PR checks - Status: Pending

Technical Changes

  • HIP_MLOPS_ENGINE_test_categories_integration.yaml: comprehensive tier keeps
    full_* but excludes full_Layernorm_*. Written as an explicit exclude:
    list because YAML cannot append to the *common_excludes alias. Both Layernorm
    sweeps are excluded, not just Default: Variant2 is 144 further cases at
    ~0.4x Default's element load and was never reached in the failing run.
  • LayernormCommon.hpp: getLayernorm5DComprehensiveTestCases() removed; its 20
    shapes folded into getLayernorm5DFullTestCases(). The 5D tier boundary is now
    Quick / Standard (<=400K elements) / Full (>400K).
  • IntegrationGpuLayernormBackward.cpp, IntegrationGpuLayernormForward.cpp:
    the 7 INSTANTIATE_TEST_SUITE_P(Comprehensive, ...) blocks removed from each.
  • Comprehensive/* is retained in the HIP_MLOPS pattern list as a no-op
    extension point so all three provider files keep the same shape.

Note for reviewers — M3

Nothing is disabled, skipped, or weakened: all 504 backward cases still run, and
full_Layernorm_* still runs in the weekly full tier. The honest framing is
that nightly coverage of those shapes drops to weekly, and the trigger was a red
nightly. The position here is that this corrects a tier mis-assignment
weekly-cost work was scheduled nightly — rather than weakening tests. Flagging it
explicitly rather than leaving it implicit.

Known gate failure

The Libraries PR Bot unit_tests check is expected to fail. It requires any PR
touching .cpp/.hpp to also touch a file matching test_*, testing_*,
*_test.*, *_tests.*, Test*, *_gtest.*, or **/test/gtest/**. All three
code files here are tests, but they are named IntegrationGpu*.cpp /
LayernormCommon.hpp under integration-tests/src/, which matches none of those
patterns. This is pre-existing: #11884 touched the same files with the same
non-matching names. The durable fix is a path pattern for hipDNN's integration
tests in tools/libraries_pr_bot/policy.yml, which belongs in its own PR.

hip-kernel-provider-external-integration_comprehensive_suite still
exceeds the nightly job's 30-minute wall on every arch, so the nightly
has no usable signal. Timings parsed from the 2026-09-16 gfx110X-all
nightly (run 35048741357, job 104671445871) show it reached only 2957 of
6513 selected tests before the kill, with the cost concentrated in
layernorm:

  full_Layernorm_Default      838.0 s  (320 of 336 cases, killed inside)
  all other full_* bundles    300.0 s  (1800 cases)
  Comprehensive/ layernorm    382.2 s  (280 cases)

Move both layernorm groups to the weekly full tier. No case is deleted
or skipped.

The comprehensive tier keeps full_* and excludes full_Layernorm_* by
suite name, so the cheap full-tier batchnorm and convolution bundles
keep their nightly coverage. Both Layernorm sweeps are excluded, not
just Default: Variant2 is 144 further cases at ~0.4x Default's element
load and was never reached in the failing run.

The C++ 5D Comprehensive catalog is folded into Full, making the 5D tier
boundary Quick / Standard (<=400K elements) / Full (>400K). Shape count
is conserved: 36 Full shapes x 2 layouts x 7 backward fixtures = 504,
exactly the previous 224 Full + 280 Comprehensive, and the 280 matches
the count measured in the failing nightly.

Because all three provider test_categories_integration.yaml files list
Comprehensive/* and none list Full/*, this also moves those shapes from
nightly to weekly on the miopen and hipblaslt lanes. That is intended:
adding Full/* to their comprehensive tiers instead would pull the >5M
element weekly shapes into their nightlies.

Comprehensive/* is retained in the HIP_MLOPS pattern list as a no-op
extension point so all three provider files keep the same shape.

Follow-up to #11884; #11529 is still open and reproducing.
@therock-pr-bot

therock-pr-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown

✅ All Checks Passed — Ready for Review

Check Status Details
📝 PR Description ✅ Pass
Forbidden Files ✅ Pass
🧪 Unit Test ⚠️ Warning Error: Source/code files changed without an accompanying unit test.
Expected: add at least one test file named like test_<name>.py / test_<name>.cpp (or <name>_test.*).
Current: code file(s) changed: dnn-providers/integration-tests/src/common/LayernormCommon.hpp, dnn-providers/integration-tests/src/integration-tests/layernorm/IntegrationGpuLayernormBackward.cpp, dnn-providers/integration-tests/src/integration-tests/layernorm/IntegrationGpuLayernormForward.cpp; no test file found
🔎 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.

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