Skip to content

test(miopen): add Jenkins-only gtest families to test_categories.yaml… - #13107

Merged
aalabsi-amd merged 15 commits into
developfrom
users/aalabsi-amd/miopen-test-categories-jenkins-parity
Oct 30, 2026
Merged

aalabsi-amd merged 15 commits into
developfrom
users/aalabsi-amd/miopen-test-categories-jenkins-parity

Conversation

@aalabsi-amd

@aalabsi-amd aalabsi-amd commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

JIRA: ALMIOPEN-2602

Summary

Jenkins runs every miopen_gtest case whose name contains FP32/FP16/BFP16/TF32/NONE. The GitHub CI tiers in
test_categories.yaml are a whitelist, so about 21,000 cases in 191 suites were never selected by any tier. This PR adds the
missing families and tiers them by measured time. It also quarantines the failures that the new coverage exposed: each
exclusion is scoped to the arch/OS where it fails and carries a ticket.

Changes (projects/miopen/test/gtest/test_categories.yaml)

Coverage added

Where Change
positive_patterns +30 prefixed families: GPU_Adam, GPU_AmpAdam, GPU_AddLayerNorm, GPU_LayerNormBwdTest, GPU_T5LayerNormBwdTest, GPU_BNInputValidation, GPU_BN_Fwd_Spatial_Welford, GPU_BN_Spatial, GPU_Bn3DPeract, GPU_Bn3DSpatial, GPU_BnDerive, GPU_BnPeract, GPU_CbnaInference, GPU_na_*, GPU_Allocator, GPU_CandidateSelection, GPU_Find2Conv, GPU_FindDb, GPU_FindModeTrustVerify, GPU_GRU, GPU_LSTM, GPU_LstmMSRnn, GPU_RNNSeqApi, GPU_RNNVanilla, GPU_Pooling2d, GPU_Pooling3d, GPU_TensorReorder, GPU_TensorTransform, GPU_binaryTensorOps, GPU_reference_kernel
positive_patterns (unprefixed TEST/TEST_F) +16: GPU_BN_Spatial_FP32, GPU_CKValidatorIntegration_FP32, GPU_CkImplLoader_FP16, GPU_Conv{2D,3D}KernelTuning{AI,Solver}_FP32, GPU_ConvAIModelLoad_FP32, GPU_ConvNDKernelTuningUtils_FP32, GPU_ConvStridedTensors_FP32, GPU_HipBLASLtGEMMTest_{FP32,FP16,BFP16}, GPU_PerfConfig_HipImplicitGemm3DGroup, GPU_RunAIHeuristics_Integration_FP32, GPU_SoftmaxFind20
positive_patterns −2 dead patterns */GPU_GRUExtra_* and */GPU_lstm_extra* (they matched nothing; now covered by GPU_GRU_* / GPU_LSTM_*)
standard.exclude +21 Full/ excludes, so standard runs only the Smoke/ and unprefixed instantiations of the new families
comprehensive.exclude +12 full-only suites (> 200 s serial or untimed): BN find2/fusion tuning (GPU_na_train_find2_*, GPU_na_fusion_test_bn_*), GPU_BN_Spatial_FP32, GPU_BN_Fwd_Spatial_Welford, GPU_LSTM_fused_infer, I8/I32 variants
comprehensive.exclude, full.exclude Full/GPU_LstmMSRnn_FP32.TestFloat/1095 (ALMIOPEN-1926), the same index Jenkins filters on gfx94X

Quarantines (scoped to arch/OS)

Key Pattern Cases removed Reason Ticket
exclude_gpu_gfx110X Full/GPU_LstmMSRnn_FP32* 1,535 (comprehensive and full) Intermittent CPU/GPU mismatch at rnn_seq_api.hpp:272, bias-enabled cases only, a different index set on every attempt. 88 of 4,316 executions failed (2.0%) at 76 distinct indices. FP16 (0 / 3,312) and Linux gfx94X (0 / 2,302) are clean. ALMIOPEN-1926
exclude_gpu_gfx115X Full/GPU_LstmMSRnn_FP32* 1,535 Same signature on Windows gfx1151: 18 of 2,316 executions failed (run 39358709264) ALMIOPEN-1926
exclude_gpu_gfx115X (Linux + Windows) Smoke/CPU_DBSync_NONE.StaticFDBSync/9 1 (every tier) Db file does not exist … gfx115128.HIP.fdb.txt / gfx115120.HIP.fdb.txt on hosts whose CU count has no shipped db. Windows: 5 of 5 executions on 5 hosts, including develop nightly 38527180317, so it predates this PR. Linux: 12 of 12 on the 20-CU strixhalo hosts in run 39740910967 (passes on CS-RORDMZ hosts). Only the gfx115128 (28-CU) db ships: #13680 fixed its Windows install, but 20-CU hosts still have no gfx115120 db. #13416
exclude_gpu_gfx115X_windows Full/GPU_GRU_Base_FP16.TestFloat16/batchSize_17_seqLength_23_inVecLen_13_hiddenSize_67_*biasMode_1_* 8 3 of these 8 bias-enabled cases failed verification at gru_test.cpp:1985/2224/2473 (same bias-only signature); they passed on the rerun and in the next run ALMIOPEN-1926
exclude_gpu_gfx110X, exclude_gpu_gfx115X (Linux + Windows) GPU_ConvAIModelLoad_FP32* 1 (every tier) no fdeep .tn.model files found: AI heuristic models ship only for gfx908/gfx90a/gfx942/gfx950, and each install carries only the runner target's db files. Linux gfx1151 failed first (run 39358709264, reproduced locally with the CI binaries). Since #13680 (merged 10-29) Windows installs per-target db files too, so Windows gfx110X fails as well (run 40983714656, 2 of 2 attempts on 2 runners); gfx94X/gfx90a/gfx950 keep the test. ALMIOPEN-2966
exclude_gpu_gfx115X_linux CPU_PerfDb_NONE.*, GPU_BN_Spatial_FP32.MIOpen3900Regression 3 + 1 (every tier) Killed by the OOM killer (SIGKILL / exit 137) on the 7.5 GB runners strixhalo-12 and strixhalo-10 (MIOpen3900Regression uses ~2.1 GB per tensor on a shared-memory APU); both pass on the 31–125 GB gfx1151 hosts. Only standard-tier cases are excluded (TheRock release tests run standard on these hosts). Out-of-memory kills in comprehensive/full are not excluded case by case, see open items. ALMIOPEN-2964

Jenkins doesn't run Windows gfx110X/gfx115X or Linux gfx1151, so these quarantines need no Jenkins
add_gtest_negative_filter. gfx94X keeps full LstmMSRnn coverage apart from /1095, which matches Jenkins's filter, and gets
re-evaluated if a GitHub CI run sees it fail.

CI runs on this PR

Run Date Commit Tier Archs tested Result
37362130564 10-05 7b72efe standard gfx94X, gfx950, Win gfx110X ✅
37844419899 10-08 7b72efe standard¹ gfx94X ✅
37960128662 10-09 7b72efe standard¹ gfx94X ✅
38770867047 10-15 7b72efe standard gfx94X, Win gfx110X ✅
38815363944 10-15 1d54535 comprehensive gfx94X, Win gfx110X ❌ Win gfx110X LstmMSRnn_FP32 flaky (both attempts); one runner lost (TheRock#3845)
38983909810 10-16 1d54535 full gfx94X, Win gfx110X ❌ Win gfx110X LstmMSRnn_FP32 flaky (both attempts)
39338174289 10-19 d9701b2 full Win gfx110X (completed before cancel) ✅ gfx110X green after its quarantine
39358709264 10-20 e964061 full gfx94X, gfx90a, gfx1151 Linux + Windows, Win gfx110X ❌ gfx1151 only: LstmMSRnn_FP32 (Win), ConvAIModelLoad (Linux), StaticFDBSync/9 (Win), GRU FP16 flake (Win), OOM on strixhalo-12, hang on CS-RORDMZ-DT245, GPU unspecified launch failure and runner lost (Win)
39480689944 10-20 48eccae full same as above ❌ gfx1151 only: StaticFDBSync/9 (Win), OOM on strixhalo-12 (Linux), hang on CS-RORDMZ-DT245 (Linux). gfx94X, gfx90a, gfx110X green.
39529845480 10-21 455cc52 full same as above ❌ Linux gfx1151 only: OOM on strixhalo-10 in GPU_BN_Spatial_FP32.MIOpen3900Regression (now excluded under ALMIOPEN-2964) and …/n8c192h256w512, plus one container-setup failure. No gtest failure in any lane. gfx94X, gfx90a, gfx110X and Windows gfx1151 green.
39740910967 10-22 7012ede full same as above ❌ Linux gfx1151 only: OOM on strixhalo-10/-12 in new large cases (na_fusion_test_bn_spatial_FP32 nchw_8_192_256_512, na_fusion_inference_test_FP32 nchw_1_16_4096_4096) and StaticFDBSync/9 on Linux (now excluded on all gfx115X); infra: container setup (halobox-b13), BAD_COMMAND on Windows host wshctr-halobox-b48-05 (passed on rerun). gfx94X, gfx90a, gfx110X and Windows gfx1151 green.
40053357276 10-24 ffcb4d4 full gfx94X, Win gfx110X ✅ all MIOpen shards
40746486850 10-28 94c1c2b standard (opt-in labels removed) gfx94X, Win gfx110X ✅ all MIOpen shards
40901558044 10-29 98c7817 standard (TEMP workflow change removed) gfx94X, Win gfx110X ❌ Linux gfx94X: all 17 FP8 + 17 BFP8 RunHipBLASLtGEMM cases (hipblaslt_gemm.cpp:235, error 0.12–0.17 vs 0.07). Not this PR: the attempt-2 rerun rebuilt only gfx950, whose *_generic MIOpen artifacts (built with the IEEE FP8 bias) replaced gfx94X's; tracked in #14375, fix in #14627. Windows green.
40983714656 10-30 7d71fd8 (develop merge) standard gfx94X, Win gfx110X ❌ Windows gfx110X shard 3 only: GPU_ConvAIModelLoad_FP32.BundledFdeepModelsLoad (2 of 2 attempts) after #13680 moved Windows dbs to per-target packages; now excluded on gfx110X/gfx115X (ALMIOPEN-2966). Linux gfx94X green, including FP8/BFP8.

¹ The test_type:comprehensive / test_type:full labels used then are not wired into the multi-arch workflow, so these runs ran standard.
Labels used later: test_filter:comprehensive, test_filter:full, ci:gfx90a, ci:gfx1151.

Timing

All numbers are per shard (4 shards, serial ctest), as ctest wall minutes; the TheRock Test step is capped at 120 min.

Measured

OS / arch Tier develop This PR Δ Runs (PR / develop)
Linux gfx94X standard 26.8 (25.5–28.7) 27.7 (26.8–29.2) +0.9 37362130564, 37844419899, 37960128662, 38770867047 / 38541202878, 38945603498, 38998133138
Linux gfx94X comprehensive 41.2 (38.8–42.7) 57.4 (54.0–62.7) +16.2 38815363944 / nightly 38697600236
Linux gfx94X full not run² 68.6 (63.9–72.5) ≈ +27 38983909810, 39358709264, 39480689944
Linux gfx90a full not run 83.6 (78.3–86.6) – 39358709264, 39480689944
Linux gfx950 standard not run 15.4 (15.0–16.0) – 37362130564
Linux gfx1151 full not run 28 (27.1–29.0)³ – 39358709264, 39480689944
Windows gfx110X standard 17.2 (10.9–19.5) 17.1 (8.8–20.6) within runner-host noise⁴ 37362130564, 38770867047 / same develop PR runs
Windows gfx110X comprehensive not run⁵ 46.3 (42.0–50.3) – 38815363944
Windows gfx110X full not run 51.9 (48.0–56.7) – 38983909810, 39338174289, 39358709264, 39480689944
Windows gfx1151 comprehensive 28.3 (20.0–42.8) – – – / nightly 38697600236
Windows gfx1151 full not run 53.2 (35.3–73.2)⁶ – 39480689944

The slowest shard measured is gfx90a full at 86.6 min (72% of the cap). Every other lane is at or below 73 min.

² Develop's full tier selects the same cases as develop comprehensive (within 25 cases), so the delta is measured against the develop comprehensive time.
³ Healthy shards only; the other shards were OOM-killed (ALMIOPEN-2964) or hung at startup (ALMIOPEN-2965).
⁴ Windows gfx110X shards range from 9 to 21 min depending on the runner host (CS-RORDMZ vs azure scale-set).
⁵ The develop nightly runs Windows gfx1151, not gfx110X.
⁶ Large spread between hosts: one gfx1151 runner is about 2× slower than the others.

Modelled delta vs develop (final yaml, cases added and per-shard minutes)

yaml_select.py diff --old git:<merge-base 4c5c20a> --new git:HEAD --gpu <arch> --os <os>, using this PR's per-case timings measured on each arch.

OS / arch standard comprehensive full
Linux gfx94X +11,284 cases · +1.5 min +25,714 · +15.6 min +29,887 · +23.8 min
Linux gfx90a +11,284 · +1.9 min +25,714 · +18.3 min +29,887 · +27.4 min
Windows gfx110X +11,281 · +1.4 min +24,068 · +15.8 min +28,241 · +21.8 min
Windows gfx1151 +11,281 · +1.5 min +24,060 · +16.9 min +28,233 · +23.2 min

The model agrees with the measurements where a develop baseline exists: gfx94X comprehensive +15.6 modelled vs +16.2 measured;
standard +1.5 vs +0.9.

Largest additions per tier (Linux gfx94X, serial minutes)
Tier Suites
standard Smoke/GPU_Find2Conv 0.8, Smoke/GPU_TensorReorder 0.4, Smoke/GPU_reference_kernel_{bwd,bww}_2d_* 0.3–0.4 each
comprehensive Full/GPU_Pooling3d 9.0, Full/GPU_LayerNormBwdTest 7.8, Full/GPU_Pooling2d 7.0, Full/GPU_BnPeract 4.3, Full/GPU_TensorTransform 3.7
full only Full/GPU_na_fusion_test_bn_spatial 10.8, Full/GPU_na_train_find2_spatial 10.2, Full/GPU_na_*_peract 5.8 each

Where each tier runs after merge

Tier Lanes
standard rocm-libraries PR gate and develop postsubmit (Linux gfx94X, Windows gfx110X); TheRock postsubmit (gfx94X, gfx90a, gfx950, Windows gfx110X); TheRock release tests (Linux gfx1151, Windows gfx110X)
comprehensive rocm-libraries nightly (Linux gfx94X, Windows gfx1151); ASAN nightly (gfx94X)
full only on request, with a test_filter:full label

Note

Standard-tier hot spot (pre-existing, not changed by this PR). In this PR's standard runs on Linux gfx94X, Full/GPU_Softmax_*
is the most expensive group: 36.5 of 109.6 serial minutes (33%), about 9 min per shard. Breakdown per run: Full/GPU_Softmax_FP32
18.5 min (1,008 cases), _FP16 7.1, _BFP16 7.0, _NonContiguous_FP32 3.9. It has been in standard since #3513. On gfx11/gfx12
the FP32/FP16/BFP16 variants are already excluded as slow (TheRock#3362); Full/GPU_Softmax_NonContiguous_FP32 still costs 5.1 min
(8%) on Windows gfx110X.

Moving it to comprehensive (adding Full/GPU_Softmax_* to standard.exclude) is modelled at −9.1 min per shard on gfx942
(27.7 → about 18.6) and −1.2 min per shard on Windows gfx110X. Comprehensive and full keep every case, so the nightly still covers it.
Proposed as a follow-up rather than part of this PR. Next largest in standard: Standard/GPU_Reduce_{FP32,FP16} 3.9 + 3.1 min,
Full/GPU_GroupConv3D_* 1.4–2.2 min per dtype.

ASAN validation of the added suites

Every gtest suite this PR adds was built and run under full ASAN, both host-side and device-side, on gfx942 with XNACK on (gfx942:xnack+). Apart from one pair of test files that leak memory, they are clean.

  • Setup. This branch was built with -fsanitize=address against the rockrel Multi-Arch Release ASAN nightly Bump rocm-docs-core from 1.18.2 to 1.20.0 in /projects/rocthrust/docs/sphinx #139 artifacts (run 40425965688, TheRock e73fd19), using the same test environment as TheRock CI (configure_asan_env.py, ROCM_PATH, HSA_XNACK=1). It ran on MI300X: 28,354 selected cases in 4 shards, plus a canary run of the Smoke/ and unprefixed suites first.
  • Result. 25,438 tests passed, with 0 gtest failures and 0 ASAN memory errors (no overflow or use-after-free in MIOpen).
  • One MIOpen problem, in the tests themselves: na_train_find2.cpp and na_inference_find2.cpp call miopenFindSolutions but never miopenDestroySolution, so LeakSanitizer fails the process at exit. They are excluded from ASAN builds only, using SKIP_TESTS in test/gtest/CMakeLists.txt under THEROCK_SANITIZER=ASAN, next to the existing find_2_conv.cpp leak skip. This removes the 12 */GPU_na_{train,inference}_find2_* suites (528 cases) from ASAN builds; normal CI keeps them. Tracked in ALMIOPEN-3097.
  • Runtime issues, not MIOpen:
    • HIP start-up under ASAN with XNACK on (AILIROCR-587). When two ASAN processes run on the same node, the HIP runtime hangs while initializing (KernelBlitManager::initHeap) or ASAN fires inside ROCr (AqlQueue::HandleInsufficientScratch). A single process started 5 of 5 times. The run therefore used one ASAN process per node.
    • Bogus device-side leak report (ALMIOPEN-3098). At exit, the device ASAN runtime lists about 1 TB of "leaks" on a 192 GB GPU, and the stack addresses are float data. It's informational and doesn't change the exit code.
    • ROCr loader leak (AILIROCR-588). A one-off 51-byte strdup leak in ROCr's LoadCodeObject, seen in the canary only.

I didn't add an ASAN exclusion to test_categories.yaml. Its parser has no sanitizer-specific key, so any yaml key would also drop these suites from normal CI.

Tickets

Ticket Status Scope
ALMIOPEN-1926 referenced LstmMSRnn_FP32 (and GRU FP16) bias-only CPU/GPU mismatch: gfx110X, gfx115X, and the Jenkins gfx94X /1026, /1095
ALMIOPEN-2964 created for this PR 7.5 GB Linux gfx1151 runners strixhalo-12 and strixhalo-10 OOM-kill miopen_gtest; matches the exclude_gpu_gfx115X_linux OOM exclusions. The fix is to remove those hosts from the runner pool.
ALMIOPEN-2965 created for this PR miopen_gtest hangs before any output on Linux gfx1151 runners CS-RORDMZ-DT245 (3 of 3 jobs) and ctr-halobox-b13; no test starts, so there is no yaml exclusion
ALMIOPEN-2966 created for this PR GPU_ConvAIModelLoad_FP32.BundledFdeepModelsLoad fails instead of skipping when the system db has no *.tn.model (Linux gfx1151; Windows gfx110X/gfx1151 since #13680); repro steps on any GPU via MIOPEN_SYSTEM_DB_PATH; matches the exclude_gpu_gfx110X / exclude_gpu_gfx115X entries
ALMIOPEN-3097 created for this PR ASAN: na_train_find2 / na_inference_find2 tests leak miopenSolution_t (no miopenDestroySolution); matches the ASAN SKIP_TESTS entries
AILIROCR-587 created for this PR ASAN: HIP init on gfx942 hangs in KernelBlitManager::initHeap or trips ASAN in ROCr AqlQueue::HandleInsufficientScratch when two ASAN processes share a node
ALMIOPEN-3098 created for this PR ASAN: device-side leak report at exit lists ~1 TB of impossible allocations (stacks are float data)
AILIROCR-588 created for this PR ASAN: 51 B strdup leak in ROCr ExecutableImpl::LoadCodeObject (seen once)
#13416 / #13680 referenced StaticFDBSync "Db file does not exist" on hosts whose CU count has no shipped db / Windows db install fix
ROCm/TheRock#3845 referenced lost azure gfx1101 runner (38815363944 attempt 1)

Test plan

  • python3 shared/ctest/parse_test_categories.py test_categories.yaml … returns rc 0 (21 suites on Linux).
  • yaml_select.py diff after every quarantine: each change removes only the intended cases on the intended arch/OS; Linux gfx94X
    and gfx90a selections are unchanged by the RDNA quarantines.
  • CI: the runs above, read across all attempts. Run 39529845480 confirms the quarantines take effect (LstmMSRnn_FP32 ran 0
    times on gfx110X/gfx115X, gfx94X/gfx90a ran it 3,454 times each with no failures) and has no gtest failure in any lane.
  • ASAN: local build of this branch against rockrel ASAN nightly Bump rocm-docs-core from 1.18.2 to 1.20.0 in /projects/rocthrust/docs/sphinx #139; all added suites run on MI300X gfx942:xnack+ (see ASAN validation). 25,438 passed, 0 failures, 0 ASAN errors.

Open items

  • Drop the TEMP workflow commit 4b8890f before merge: removed in 98c7817 (workflow identical to develop's at the merge-base).
  • Linux gfx1151 out-of-memory kills: no more per-case exclusions. Each run kills a different large case (4 shapes across 3 runs; 82 cases of ≥ 32M elements; no size threshold separates killed cases from survivors). Fixed by ALMIOPEN-2964 (remove the 7.5 GB hosts). Linux gfx1151 comprehensive/full runs only when requested by label, never by default.
  • Final run: TEMP workflow change removed (98c7817) and labels ci:gfx1151, ci:gfx90a, test_filter:full removed; the PR gate runs standard on Linux gfx94X and Windows gfx110X. Run 40746486850 (94c1c2b) passed. 40901558044 hit the FP8 artifact overwrite ([Issue] Linux gfx94X-dcgpu: MIOpen HipBLASLt FP8/BFP8 GEMM tests fail with numerical error #14375) and 40983714656 hit ConvAIModelLoad on Windows gfx110X after fix(miopen): install Windows system databases under share/miopen/db #13680; that test is now excluded on gfx110X/gfx115X. Needs one green run with that change.
  • Re-enable the na_*find2 suites under ASAN once ALMIOPEN-3097 is fixed (remove the two SKIP_TESTS entries).
  • After merge, check the first nightly (Linux gfx94X and Windows gfx1151 comprehensive) against the modelled +15.6 / +16.9 min per shard.

…, tiered by measured time

Jenkins selects every miopen_gtest case whose name contains FP32/FP16/BFP16/TF32/NONE,
while the GitHub CI tiers are a whitelist, so 21,004 cases in 191 suites were never
selected by any tier. Add the 62 missing families and place them by per-test time
(Jenkins build #1034 and TheRock gfx942 logs, median ms):

- Smoke/ and unprefixed instantiations run in standard (about +3.4 min serial).
- Full/ instantiations are excluded from standard; kept in comprehensive when timed
  and <= 200 s serial per suite.
- Full/ suites over 200 s serial (BN find2/fusion tuning) or without timing
  (I8/I32 variants, new suites) are excluded from comprehensive (full only).

Also drop the *GRUExtra* / *lstm_extra* patterns, which matched nothing (now covered by
*/GPU_GRU_* and */GPU_LSTM_*), and exclude the flaky Full/GPU_LstmMSRnn_FP32.TestFloat/1095
(ALMIOPEN-1926) from comprehensive and full, as Jenkins does on gfx94X.
@therock-pr-bot

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

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

Copy link
Copy Markdown

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

@aalabsi-amd aalabsi-amd added test_type:comprehensive If enabled, the PR will run comprehensive tests test_type:full If enabled, the PR will run full tests and removed test_type:comprehensive If enabled, the PR will run comprehensive tests labels Oct 8, 2026
Pins therock-multi-arch-ci.yml to ROCm/TheRock
users/aalabsi-amd/test-type-label-pin-498444ae (f4e1a35d = current pin
498444ae + test_type:* label support) so test_type:comprehensive and
test_type:full labels select those tiers instead of standard.
@aalabsi-amd aalabsi-amd added the test:miopen Run full tests for miopen label Oct 15, 2026
…miopen-test-categories-jenkins-parity

# Conflicts:
#	.github/workflows/therock-multi-arch-ci.yml
@aalabsi-amd aalabsi-amd added test_filter:comprehensive If enabled, the PR will run comprehensive tests test_filter:full If enabled, the PR will run full tests and removed test_type:full If enabled, the PR will run full tests test_filter:comprehensive If enabled, the PR will run comprehensive tests labels Oct 15, 2026
@amd-alavin

Copy link
Copy Markdown
Contributor

Full/GPU_LstmMSRnn_FP32.TestFloat, which this PR adds to the full category, fails intermittently on Windows gfx110X in this PR's own CI. Every Windows Test miopen shard that reported results had at least one failing index.

run attempt shard 1/4 shard 2/4 shard 3/4 shard 4/4
38815363944 1 15 19 runner lost 1
38815363944 2 8 1 6 3
38983909810 1 1 5 3 2
38983909810 2 2 11 4 7

Failing indices per shard. Each count links to the shard's raw job log; GitHub's step viewer truncates these logs before the failures. In the raw log, search for FAILED ] Full/GPU_LstmMSRnn; each failure appears four times (gtest inline, gtest summary, and both again in the ctest reprint).

Failing indices by shard
run attempt shard failing indices
38815363944 1 1/4 /324, /356, /708, /712, /740, /1056, /1060, /1068, /1088, /1097, /1125, /1473, /1477, /1485, /1505
38815363944 1 2/4 /265, /297, /321, /325, /333, /357, /365, /677, /709, /713, /745, /969, /1089, /1102, /1122, /1414, /1442, /1474, /1482
38815363944 1 4/4 /1440
38815363944 2 1/4 /260, /292, /640, /708, /740, /1445, /1453, /1473
38815363944 2 2/4 /1025
38815363944 2 3/4 /290, /298, /334, /654, /678, /1090
38815363944 2 4/4 /355, /679, /1059
38983909810 1 1/4 /1120
38983909810 1 2/4 /1097, /1125, /1481, /1509, /1513
38983909810 1 3/4 /325, /1126, /1442
38983909810 1 4/4 /326, /330
38983909810 2 1/4 /299, /1039
38983909810 2 2/4 /260, /676, /680, /708, /740, /964, /1024, /1129, /1349, /1409, /1441
38983909810 2 3/4 /1065, /1442, /1482, /1510
38983909810 2 4/4 /366, /706, /1103, /1455, /1479, /1487, /1507

In total, 88 of 4,316 executions failed (2.0%), at 76 distinct indices. A re-run of the same commit fails a different set of indices. All failures report rnn_seq_api.hpp(272): error: Failed, and every one has bias enabled (-b 1 in the printed MIOpenDriver command), for example:

./bin/MIOpenDriver rnn_seq -F 0 -m lstm --batch_size 6 --seq_len 38 --in_vec 1 --hid_h 13 --num_layer 3 -r 0 -b 1 -p 0 -a 0 --io_layout 2 --use_dropout 0 --seq_len_array 1,15,34,15,34,1

Linux gfx94X ran the same test in both runs with no failures.

The same test fails intermittently on gfx942 in Jenkins, with the same bias-only pattern but at a rate about 100 times lower. That is tracked as ALMIOPEN-1926. As it stands, merging this PR would make nearly every Windows gfx110X full-category run fail on this test. Could Full/GPU_LstmMSRnn_* be excluded on Windows gfx110X, or left out of the full category until ALMIOPEN-1926 is resolved?

@aalabsi-amd aalabsi-amd added ci:gfx1151 Opt-in to gfx1151 builds/tests ci:gfx90a Opt-in to gfx90a builds/tests labels Oct 20, 2026
@aalabsi-amd

Copy link
Copy Markdown
Contributor Author

Full/GPU_LstmMSRnn_FP32.TestFloat, which this PR adds to the full category, fails intermittently on Windows gfx110X in this PR's own CI. Every Windows Test miopen shard that reported results had at least one failing index.

run attempt shard 1/4 shard 2/4 shard 3/4 shard 4/4
38815363944 1 15 19 runner lost 1
38815363944 2 8 1 6 3
38983909810 1 1 5 3 2
38983909810 2 2 11 4 7
Failing indices per shard. Each count links to the shard's raw job log; GitHub's step viewer truncates these logs before the failures. In the raw log, search for FAILED ] Full/GPU_LstmMSRnn; each failure appears four times (gtest inline, gtest summary, and both again in the ctest reprint).

Failing indices by shard
run attempt shard failing indices
38815363944 1 1/4 /324, /356, /708, /712, /740, /1056, /1060, /1068, /1088, /1097, /1125, /1473, /1477, /1485, /1505
38815363944 1 2/4 /265, /297, /321, /325, /333, /357, /365, /677, /709, /713, /745, /969, /1089, /1102, /1122, /1414, /1442, /1474, /1482
38815363944 1 4/4 /1440
38815363944 2 1/4 /260, /292, /640, /708, /740, /1445, /1453, /1473
38815363944 2 2/4 /1025
38815363944 2 3/4 /290, /298, /334, /654, /678, /1090
38815363944 2 4/4 /355, /679, /1059
38983909810 1 1/4 /1120
38983909810 1 2/4 /1097, /1125, /1481, /1509, /1513
38983909810 1 3/4 /325, /1126, /1442
38983909810 1 4/4 /326, /330
38983909810 2 1/4 /299, /1039
38983909810 2 2/4 /260, /676, /680, /708, /740, /964, /1024, /1129, /1349, /1409, /1441
38983909810 2 3/4 /1065, /1442, /1482, /1510
38983909810 2 4/4 /366, /706, /1103, /1455, /1479, /1487, /1507
In total, 88 of 4,316 executions failed (2.0%), at 76 distinct indices. A re-run of the same commit fails a different set of indices. All failures report rnn_seq_api.hpp(272): error: Failed, and every one has bias enabled (-b 1 in the printed MIOpenDriver command), for example:

./bin/MIOpenDriver rnn_seq -F 0 -m lstm --batch_size 6 --seq_len 38 --in_vec 1 --hid_h 13 --num_layer 3 -r 0 -b 1 -p 0 -a 0 --io_layout 2 --use_dropout 0 --seq_len_array 1,15,34,15,34,1

Linux gfx94X ran the same test in both runs with no failures.

The same test fails intermittently on gfx942 in Jenkins, with the same bias-only pattern but at a rate about 100 times lower. That is tracked as ALMIOPEN-1926. As it stands, merging this PR would make nearly every Windows gfx110X full-category run fail on this test. Could Full/GPU_LstmMSRnn_* be excluded on Windows gfx110X, or left out of the full category until ALMIOPEN-1926 is resolved?

Thanks for your comment, yes the purpose of this PR is catch the flaky and failing tests across archs, OSs and categories and exclude them before the merge. That's why I am using labels Full and comprehensive and arch specific ones to avoid merging and then coming across these issues later in nightly runs.
I have excluded these failures "Full/GPU_LstmMSRnn_FP32" on gfx110x and going to run with gfx1151 (the one nightly run on) and exclude there too if we are facing the issue there too.
I kept FP16 since it seems to have passed but I will continue monitoring if failed on future runs.
From the ticket attached I see the also occurring on gfx94X but less frequently so going to exclude it there as well to avoid adding flakiness.

@aalabsi-amd
aalabsi-amd marked this pull request as ready for review October 21, 2026 02:04
@aalabsi-amd
aalabsi-amd requested review from a team as code owners October 21, 2026 02:05
@aalabsi-amd aalabsi-amd removed the ci:gfx1151 Opt-in to gfx1151 builds/tests label Oct 23, 2026
@aalabsi-amd
aalabsi-amd force-pushed the users/aalabsi-amd/miopen-test-categories-jenkins-parity branch from 7b43f48 to 04430e3 Compare October 28, 2026 18:17

@JonathanLichtnerAMD JonathanLichtnerAMD 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, thanks!

@aalabsi-amd
aalabsi-amd requested a review from ScottTodd October 29, 2026 04:21
@aalabsi-amd
aalabsi-amd removed the request for review from ScottTodd October 29, 2026 15:26
@JonathanLichtnerAMD

Copy link
Copy Markdown
Contributor

I think we just need to revert the temporary commit (for the pin).

@aalabsi-amd

Copy link
Copy Markdown
Contributor Author

I think we just need to revert the temporary commit (for the pin).
I think a manual removal like I did in the last commit should be okay, most of what the temp commit did was removed by the two merges from develop, so a revert for that commit will try to remove already removed lines. Also since the merge to develop is going to be squash both ways should be acceptable.

@JonathanLichtnerAMD
JonathanLichtnerAMD removed request for a team October 29, 2026 18:44
@amd-alavin

Copy link
Copy Markdown
Contributor

#14169 fixes ALMIOPEN-1926, a data race in RNNDescriptor::RNNForwardMS that made Full/GPU_LstmMSRnn_FP32* fail with bias enabled. It merged into develop on 2026-10-26 as cec66d06c19.

Could you drop both exclusions of Full/GPU_LstmMSRnn_FP32*: the Windows gfx110X and gfx115X entries in test_categories.yaml, and the MIOPEN_TEST_GFX94X negative filter in test/gtest/CMakeLists.txt? This branch last merged develop on 2026-10-20, before the fix, so please merge develop first; CI runs on the branch then include the fix. To confirm it, please run the Full category on Windows gfx110X and gfx115X, and Jenkins on gfx94X.

I withdraw my 2026-10-18 suggestion to exclude Full/GPU_LstmMSRnn_*. The failures came from a product bug, so the test should keep running.

@aalabsi-amd

aalabsi-amd commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor Author

#14169 fixes ALMIOPEN-1926, a data race in RNNDescriptor::RNNForwardMS that made Full/GPU_LstmMSRnn_FP32* fail with bias enabled. It merged into develop on 2026-10-26 as cec66d06c19.

Could you drop both exclusions of Full/GPU_LstmMSRnn_FP32*: the Windows gfx110X and gfx115X entries in test_categories.yaml, and the MIOPEN_TEST_GFX94X negative filter in test/gtest/CMakeLists.txt? This branch last merged develop on 2026-10-20, before the fix, so please merge develop first; CI runs on the branch then include the fix. To confirm it, please run the Full category on Windows gfx110X and gfx115X, and Jenkins on gfx94X.

I withdraw my 2026-10-18 suggestion to exclude Full/GPU_LstmMSRnn_*. The failures came from a product bug, so the test should keep running.

yes this will be done outside this PR to not delay merging it anymore and there is a ticket tracking the work and I added your comment to it: https://amd-hub.atlassian.net/browse/ALMIOPEN-3053

@aalabsi-amd
aalabsi-amd enabled auto-merge (squash) October 30, 2026 05:28
@aalabsi-amd
aalabsi-amd merged commit 6a27c44 into develop Oct 30, 2026
97 of 98 checks passed
@aalabsi-amd
aalabsi-amd deleted the users/aalabsi-amd/miopen-test-categories-jenkins-parity branch October 30, 2026 07:24
@peymanr

peymanr commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

PR Pundit review

(Testing PR Pundit Code Review agent. Not all comments may be relevant. This is a one-time automated pass: please address what is useful, no need to request a re-review. A quick reply per point (useful or not, and why) helps us calibrate the agent. Reach out to @peymanr for suggestions and feedback.)

# Finding Where
1 🟠 GPU_ConvAIModelLoad_FP32.BundledFdeepModelsLoad fails on gfx1200/gfx1201 lanes: this PR excludes it only on gfx110X/gfx115X projects/miopen/test/gtest/test_categories.yaml:616
2 🟠 One LstmMSRnn case silently skipped on gfx90a/gfx950/gfx120X: this PR adds a per-index exclude to arch-agnostic lists projects/miopen/test/gtest/test_categories.yaml:342
3 🟠 Linux gfx110X/gfx115X skip FP32 LstmMSRnn Full cases: this PR put a Windows-only flake in OS-agnostic keys projects/miopen/test/gtest/test_categories.yaml:654
4 🟠 ~10GB BN regression test OOM-killed in PR-tier CI on gfx1151: this PR added an unprefixed positive pattern projects/miopen/test/gtest/test_categories.yaml:107
5 🟠 CPU_PerfDb_NONE silently dropped from comprehensive/full gfx115X suites: this PR's tier labels contradict its comment projects/miopen/test/gtest/test_categories.yaml:672
6 🟠 ASan lane loses BN+activation Find-2.0 coverage: this PR skips whole files instead of destroying leaked solutions projects/miopen/test/gtest/CMakeLists.txt:68
7 🟠 Non-bias FP32 multi-stream LSTM regressions on gfx942 no longer caught in Jenkins: this PR widened the filter to the whole family projects/miopen/test/gtest/CMakeLists.txt:272
8 🟠 Nightly comprehensive tier gains ~59 untimed Full suites: this PR adds broad family patterns excluded only from standard projects/miopen/test/gtest/test_categories.yaml:90
9 🔵 gfx1151 db-sync case runs again and wrong arch gets skipped if list reorders: this PR uses a positional-index filter projects/miopen/test/gtest/test_categories.yaml:662
10 🔵 GRU bias cases may still flake on Windows gfx1151: this PR pins one name prefix instead of a suite-level filter projects/miopen/test/gtest/test_categories.yaml:687
11 🔵 ConvAIModelLoad exclusion duplicated across two gfx11 keys, risking a missed removal: this PR skips the shared anchor projects/miopen/test/gtest/test_categories.yaml:664

1. 🟠 Should fix: GPU_ConvAIModelLoad_FP32.BundledFdeepModelsLoad fails on gfx1200/gfx1201 lanes: this PR excludes it only on gfx110X/gfx115X

projects/miopen/test/gtest/test_categories.yaml:616

This PR adds GPU_ConvAIModelLoad_FP32* to positive_patterns (standard/comprehensive/full) but excludes it only in exclude_gpu_gfx110X and exclude_gpu_gfx115X. BundledFdeepModelsLoad fails ASSERT_GT(checked, 0u) with no skip when the system db holds no .tn.model file, and models exist only for gfx908/gfx90a/gfx942/gfx950. On per-target installs (TheRock packaging, where the PR's own comments record this failure for gfx110X and gfx1151), exclude_gpu_gfx120X (only *gfx11_common_patterns) and archs with no exclude_gpu_* entry still select it. A plain MIOpen build/install copies all kernels/*.model files, so it passes there. Put the exclusion in gfx11_common_patterns/a shared list, or make the test GTEST_SKIP when no models are found (ALMIOPEN-2966).

Who is affected: TheRock-style per-target CI/release test runs of the MIOpen standard/comprehensive/full tiers on gfx120X (and likely other archs without bundled AI models).

Checked against the code by an independent pass.

2. 🟠 Should fix: One LstmMSRnn case silently skipped on gfx90a/gfx950/gfx120X: this PR adds a per-index exclude to arch-agnostic lists

projects/miopen/test/gtest/test_categories.yaml:342

The PR adds Full/GPU_LstmMSRnn_FP32.TestFloat/1095 to the arch-agnostic comprehensive and full excludes, so this one case is dropped on every arch. That includes gfx90a, gfx950 and gfx120X, where no failures are recorded. The comment 'Jenkins filters the same index on gfx94X' is out of date: this same PR replaces the Jenkins per-index filters with Full/GPU_LstmMSRnn_FP32*. On gfx94X, gfx110X and gfx115X the new exclude_gpu_* family filters already drop the whole suite, which makes the entry redundant there. Either remove both entries or correct the comment.

Who is affected: GitHub CI comprehensive/full runs on archs without a family-level LstmMSRnn exclude (e.g. gfx90a, gfx950, gfx120X) lose one test case.

Checked against the code by an independent pass.

Related past reviews: #5766 on projects/miopen/test/gtest/test_categories.yaml, #8122 on projects/miopen/test/gtest/test_categories.yaml, #2550 on projects/miopen/test/gtest/gru_extra.cpp

3. 🟠 Should fix: Linux gfx110X/gfx115X skip FP32 LstmMSRnn Full cases: this PR put a Windows-only flake in OS-agnostic keys

projects/miopen/test/gtest/test_categories.yaml:654

The Full/GPU_LstmMSRnn_FP32* exclusions in exclude_gpu_gfx110X and exclude_gpu_gfx115X cite only Windows failures, but these keys apply on every OS, so Linux gfx110X/gfx115X also lose the FP32 LstmMSRnn Full family. The same bias-only flake is also filtered on Linux gfx942 (MIOPEN_TEST_GFX94X, exclude_gpu_gfx94X), so excluding it on Linux is defensible. Either note that in the comment or move the gfx110X/gfx115X entries to _windows keys. GPU_ConvAIModelLoad_FP32* is correctly OS-agnostic: it fails on every arch without bundled models, and Linux gfx1151 is cited.

Who is affected: Linux gfx110X/gfx115X CI in the comprehensive/full tiers, which no longer run Full/GPU_LstmMSRnn_FP32*.

Checked against the code by an independent pass.

Related past reviews: #3513 on projects/miopen/test/gtest/test_categories.yaml

4. 🟠 Should fix: ~10GB BN regression test OOM-killed in PR-tier CI on gfx1151: this PR added an unprefixed positive pattern

projects/miopen/test/gtest/test_categories.yaml:107

The new unprefixed positive pattern GPU_BN_Spatial_FP32* pulls the plain TEST(GPU_BN_Spatial_FP32, MIOpen3900Regression) into standard, comprehensive and full on every arch; no tier ran it before, and the prefixed Full/GPU_BN_Spatial_* excludes do not match it. The test allocates several 1x2048x512x512 FP32 tensors (~2.1 GB each; about 4 on the host and about 5 on the device), which does not fit the 'each <= ~10 s' light-suite description. The PR excludes it only via exclude_gpu_gfx115X_linux after OOM kills. Windows gfx1151 and other small or shared-memory runners still run it. Scope the pattern, or exclude the heavy case wherever memory is constrained.

Who is affected: Standard, comprehensive and full GitHub CI runs on small or shared-memory GPUs other than Linux gfx115X, e.g. Windows gfx1151.

Checked against the code by an independent pass.

Related past reviews: #13403 on projects/miopen/test/gtest/test_categories.yaml

5. 🟠 Should fix: CPU_PerfDb_NONE silently dropped from comprehensive/full gfx115X suites: this PR's tier labels contradict its comment

projects/miopen/test/gtest/test_categories.yaml:672

The exclude_gpu_gfx115X_linux comment says 'Only standard-tier cases are excluded', but its labels list quick/standard/comprehensive/full. The generated Linux gfx115X filters for all four tiers therefore exclude CPU_PerfDb_NONE.* and GPU_BN_Spatial_FP32.MIOpen3900Regression. As a result CPU_PerfDb_NONE.*, which ran in comprehensive/full on the base, no longer runs nightly or weekly on any Linux gfx115X host, including the large-memory ones. MIOpen3900Regression is only newly selected by this PR, so nothing that ran before is lost for it. Either drop comprehensive/full from the labels or fix the comment.

Who is affected: Nightly (comprehensive) and weekly (full) MIOpen gtest runs on Linux gfx1150/gfx1151 lose CPU_PerfDb_NONE coverage.

Checked against the code by an independent pass.

6. 🟠 Should fix: ASan lane loses BN+activation Find-2.0 coverage: this PR skips whole files instead of destroying leaked solutions

projects/miopen/test/gtest/CMakeLists.txt:68

na_inference_find2.cpp and na_train_find2.cpp are skipped wholesale under ASan (ALMIOPEN-3097) because they never call miopenDestroySolution on the handles returned by miopenFindSolutions, so LeakSanitizer flags them at exit. The skip is documented as temporary and mirrors the existing find_2_conv.cpp skip. Still, the fix is small and test-local: destroy each solution after miopenRunSolution, or hold them in a unique_ptr with a miopenDestroySolution deleter. That would keep these Find-2.0 BN+activation tests running under ASan instead of dropping them.

Who is affected: Only ASan builds (THEROCK_SANITIZER=ASAN), which no longer build or run the two na_*find2 test files; normal builds are unaffected.

Checked against the code by an independent pass.

Related past reviews: #6075 on projects/miopen/test/gtest/CMakeLists.txt, #2508 on projects/miopen/test/gtest/CMakeLists.txt, #8988 on projects/miopen/test/gtest/CMakeLists.txt, #5456 on projects/miopen/test/gtest/CMakeLists.txt, #1652 on projects/miopen/test/gtest/CMakeLists.txt, #3398 on projects/miopen/test/gtest/CMakeLists.txt

7. 🟠 Should fix: Non-bias FP32 multi-stream LSTM regressions on gfx942 no longer caught in Jenkins: this PR widened the filter to the whole family

projects/miopen/test/gtest/CMakeLists.txt:272

Widening the Jenkins gfx94X filter from /1026 and /1095 to Full/GPU_LstmMSRnn_FP32* stops all 1,536 FP32 multi-seq LSTM cases on gfx942, including the non-bias ones. Other FP32 RNN suites (GPU_RNNSeqApi_FP32, GPU_LSTM_FP32, GPU_LSTM_extra_FP32) still run there, so coverage is reduced, not zero. The YAML excludes for gfx94X/110X/115X remove nothing: the base YAML never ran this family, and the PR newly adds it on other arches. Case names are positional (no name generator), so a bias-only name filter is not available; consider a TODO tied to ALMIOPEN-1926 to restore the suite once the bias mismatch is fixed.

Who is affected: Jenkins Full runs on gfx94X (MIOPEN_TEST_GFX94X), which no longer exercise the non-bias GPU_LstmMSRnn_FP32 cases.

Checked against the code by an independent pass.

Related past reviews: #7780 on projects/miopen/src/conv/heuristics/gfx942_rules.cpp

8. 🟠 Should fix: Nightly comprehensive tier gains ~59 untimed Full suites: this PR adds broad family patterns excluded only from standard

projects/miopen/test/gtest/test_categories.yaml:90

The new */GPU_* positive patterns (GPU_GRU_*, GPU_LSTM_*, GPU_LstmMSRnn_*, GPU_RNNSeqApi_*, GPU_Pooling3d_*, GPU_na_*, GPU_BnPeract_*, ...) add about 59 Full/ suites to the comprehensive (nightly, <2h target) tier. They are excluded from standard but not from comprehensive, so they now run nightly. The YAML records no timing for these suites, unlike the slow ones the PR explicitly keeps full-only (na_train_find2, BN_Spatial, LSTM_fused_infer, I8/I32). Consider noting the measured nightly duration, or listing the large GRU/LSTM sweeps as full-only until measured.

Who is affected: Nightly comprehensive-tier MIOpen CI runs on all GPU targets.

Checked against the code by an independent pass.

Related past reviews: #3513 on projects/miopen/test/gtest/test_categories.yaml

9. 🔵 Nit: gfx1151 db-sync case runs again and wrong arch gets skipped if list reorders: this PR uses a positional-index filter

projects/miopen/test/gtest/test_categories.yaml:662

The new exclusion Smoke/CPU_DBSync_NONE.StaticFDBSync/9 in exclude_gpu_gfx115X selects the case by its position in the testing::Values list. Index 9 is currently ("gfx1151", 0) in db_sync.cpp. If entries are inserted or reordered before it, the exclusion silently moves to another arch and the failing gfx1151 case runs again. The instantiation has no name generator, so the index is the only handle a filter has today. A param name generator (e.g. gfx1151_0), or a GTEST_SKIP when the system db file is missing, would be robust.

Who is affected: Anyone who later edits the CPU_DBSync_NONE parameter list; gfx115X CI lanes that use test_categories.yaml.

Checked against the code by an independent pass.

10. 🔵 Nit: GRU bias cases may still flake on Windows gfx1151: this PR pins one name prefix instead of a suite-level filter

projects/miopen/test/gtest/test_categories.yaml:687

The new exclude_gpu_gfx115X_windows entry pins Full/GPU_GRU_Base_FP16.TestFloat16/batchSize_17_seqLength_23_inVecLen_13_hiddenSize_67_*biasMode_1_* (8 generated cases). Its comment ties the failures to the same bias-only CPU/GPU mismatch as ALMIOPEN-1926. For LSTM, that mismatch hit a different index on every attempt, which is why this PR widened the LSTM filter to Full/GPU_LstmMSRnn_FP32*. If the GRU flake behaves the same way, other bias-enabled GPU_GRU_* cases on Windows gfx1151 can still fail intermittently; the observed data (3 of these 8 cases, in one attempt) does not show that yet. Consider a suite-level pattern consistent with the LSTM entries, or a note that it will need widening.

Who is affected: Windows gfx1151 CI runs of the comprehensive/full MIOpen gtest tiers.

Checked against the code by an independent pass.

Related past reviews: #5766 on projects/miopen/test/gtest/test_categories.yaml

11. 🔵 Nit: ConvAIModelLoad exclusion duplicated across two gfx11 keys, risking a missed removal: this PR skips the shared anchor

projects/miopen/test/gtest/test_categories.yaml:664

The GPU_ConvAIModelLoad_FP32* exclusion and its near-identical ALMIOPEN-2966 comment are copied into both exclude_gpu_gfx110X and exclude_gpu_gfx115X, though the file already shares patterns via the &gfx11_common_patterns anchor. Use a shared anchor or a single common-list entry so there is one place to remove when the ticket is fixed.

Who is affected: Maintainers who later remove the ALMIOPEN-2966 exclusion; no runtime effect for test runs on gfx110X/gfx115X.

Checked against the code by an independent pass.

Shared from a pilot of PR Pundit, an agentic code reviewer that builds and tests the change and reads the project's past reviews. Reviewed at 7d71fd80; findings checked and posted by @peymanr; points already raised on this PR are left out.

aalabsi-amd added a commit that referenced this pull request Nov 2, 2026
… and Windows gfx1151

Quarantine the MIOpen failures seen on TheRock bump PRs #9651/#9680
(issue #14874) after #13107 widened the TheRock tiers:

- gfx120X: GPU_ConvAIModelLoad_FP32* (no bundled fdeep models,
  ALMIOPEN-2966) and Smoke/CPU_DBSync_NONE.StaticFDBSync/11 (no
  gfx120138 system db on 56-CU gfx1201 hosts, #13416).
- Linux gfx120X: GPU_SoftmaxFind20_FP16.softmaxBackward_log_channel_mode_fp16
  hangs to the ctest timeout on gfx1201 hosts.
- Windows gfx115X: CPU_PerfDb_NONE.{RamDb,PlainTextDb}_AllTests hang in
  the multiprocess write phase.
@assistant-librarian

Copy link
Copy Markdown
Contributor

TheRock Submodule Bump Activity

Newest first

aalabsi-amd added a commit that referenced this pull request Nov 3, 2026
… and Windows gfx1151 (#14882)

JIRA-ID : ROCM-31323 ALMIOPEN-2966, ALMIOPEN-3129, ALMIOPEN-3130

## Motivation

The rocm-libraries bump into TheRock went red with #13107
(ROCm/TheRock#9651, `f4e24d5` → `8c41584`; still red on #9680). #13107
added
Jenkins-only gtest families to the TheRock tiers, and TheRock tests
gfx120X and Windows gfx1151, which the rocm-libraries PR gate doesn't
cover. Tracking issue: #14874.

Bump PR #9651 run
[41113572856](https://github.com/ROCm/TheRock/actions/runs/41113572856)
failed 4 of 4 attempts. #9680 run
[41405101044](https://github.com/ROCm/TheRock/actions/runs/41405101044)
also failed. Develop nightlies

[41179300934](https://github.com/ROCm/rocm-libraries/actions/runs/41179300934)
and

[41283494663](https://github.com/ROCm/rocm-libraries/actions/runs/41283494663)
were read across all attempts too.

| # | Failure | Lane | Evidence | Action |
|---|---|---|---|---|
| 1 | `GPU_ConvAIModelLoad_FP32.BundledFdeepModelsLoad`:
`conv_ai_nd_heuristics_test.cpp:962` "no fdeep .tn.model files found" |
Linux + Windows gfx120X | 10 of 10 executions on 8 hosts (#9651 attempts
1–4, #9680) | **exclude** on `gfx120X` (ALMIOPEN-2966, already excluded
on gfx110X/gfx115X) |
| 2 | `GPU_SoftmaxFind20_FP16.softmaxBackward_log_channel_mode_fp16`
hangs after "Testing solution functions..." →
`miopen_gtest_standard_gfx120X_suite` ***Timeout 3600 s | Linux gfx1201
(CS-RORDMZ-DT87, -DT81) | 3 of 3 executions on Linux gfx1201. Passes in
< 1.2 s on Linux gfx1200 and Windows gfx1201 (5 of 5) | **exclude** on
`gfx120X_linux` (**ALMIOPEN-3130**). New with #13107
(`GPU_SoftmaxFind20_*`) |
| 3 | `Smoke/CPU_DBSync_NONE.StaticFDBSync/11`: "Db file does not exist
… gfx120138.HIP.fdb.txt" | Windows gfx120X, CS-RORDMZ-DT84 | 1 of 5
Windows gfx1201 executions. Only `gfx120140` dbs ship; the other hosts
pass | **exclude** on `gfx120X` (#13416, same cause as `StaticFDBSync/9`
on gfx115X). Existed before #13107 |
| 4 | `CPU_PerfDb_NONE.{RamDb,PlainTextDb}_AllTests` hang in the
multiprocess read or write phase ("Waiting for test processes...") until
the ctest or step timeout | Windows gfx1151 | 6 hangs on 5 hosts since
10-31: nightly 41179300934 (RamDb), nightly 41283494663 (RamDb;
PlainTextDb on attempts 1–3), #9680 (PlainTextDb). None in nightlies
40833587284 or 41018314721 | **exclude** on `gfx115X_windows`
(**ALMIOPEN-3129**) |
| 5 | Windows gfx1151 standard shard 3 ***Timeout 3600 s;
`Smoke/GPU_HipGraphExistTest_FP32.HipGraphExist/2` took 596 s (7.5 s
elsewhere) | #9680, windows-strix-halo-gpu-rocm-10 | runner-specific
slowness on top of #13107's larger standard tier | not excluded: time
budget, see below |
| 6 | Nightly Windows gfx1151 comprehensive shards hit the 120-min step
cap (killed in `Full/GPU_Pooling3d_FP16`, `Full/GPU_BnPeract_FP32`,
`Full/GPU_Reduce_FP16`) | nightlies 10-31, 11-01 | passed on rerun | not
excluded: time budget, see below |
| 7 | Linux gfx110X shard 2 ctest timeout (azure scale-set runner) |
#9651 attempt 1 | passed on attempts 2–4 | not excluded: flaky runner
(TheRock#3845) |
| 8 | gfx90a `CPU_PerfDb_NONE.MultiFileDb_AllTests` "terminate called
recursively" | #9651 attempt 1 | passed on attempts 2–4, seen once | not
excluded: one-off |
| 9 | gfx950 shards 1 and 3: no tests ran, `Unexpected HTTP response:
429` | #9651 attempt 1 | infra | not excluded |

## Technical Details

Only `projects/miopen/test/gtest/test_categories.yaml` changes. Each
entry has the narrowest arch/OS scope that covers the failures, plus an
inline ticket or issue reference:

- `exclude_gpu_gfx120X`: changed from the bare `*gfx11_common_patterns`
alias to a list that also holds `GPU_ConvAIModelLoad_FP32*`
  (ALMIOPEN-2966) and `Smoke/CPU_DBSync_NONE.StaticFDBSync/11` (#13416).
- New `exclude_gpu_gfx120X_linux`:
`GPU_SoftmaxFind20_FP16.softmaxBackward_log_channel_mode_fp16`, exact
name (ALMIOPEN-3130). The
other five `SoftmaxFind20` cases keep running. It only hangs on gfx1201,
but the exclusion covers all Linux gfx120X. TheRock takes the
arch from `AMDGPU_FAMILIES` (`gfx120X-all` → `gfx120X`), so gfx1200 and
gfx1201 runners share one suite. An `exclude_gpu_gfx1201_*`
  key would build a suite that no runner selects.
- `exclude_gpu_gfx115X_windows`: `CPU_PerfDb_NONE.RamDb_AllTests` and
`CPU_PerfDb_NONE.PlainTextDb_AllTests` (ALMIOPEN-3129). These
two spawn child processes (`DbMultiProcessReadTest`,
`DbMultiProcessTest`). `MultiFileDb_AllTests` doesn't, so it stays.
Linux gfx115X
  already excludes `CPU_PerfDb_NONE.*` (ALMIOPEN-2964).

Jenkins gets no `add_gtest_negative_filter` change. It has no gfx120X or
Windows stage, and these tests passed there before #13107
moved them into the TheRock tiers.

Not addressed here: Windows gfx1151 shard time. After #13107, a standard
shard runs about 6,550 cases, up from about 3,700. Windows
gfx120X shard 3 takes 32–51 min against the 60-min ctest limit, and slow
gfx1151 hosts push it over. Excluding single tests won't fix
that. It needs a tier move (for example `Full/GPU_Softmax_*` out of
standard, as proposed in #13107) or a timeout or shard change in a
separate PR.

## Test Plan

- `python3 shared/ctest/parse_test_categories.py test_categories.yaml
miopen_gtest …`: rc 0, 25 suites. The generated
`miopen_gtest_standard_gfx120X_suite` filter contains the three gfx120X
entries on Linux.
- `yaml_select.py diff --old git:origin/develop`, using the 40,957 case
names from the logs above, per arch/OS (every tier):

| GPU / OS | Removed (each tier) |
|---|---|
| gfx1201 Linux | 3: `ConvAIModelLoad`, `StaticFDBSync/11`,
`SoftmaxFind20_FP16…channel_mode_fp16` |
| gfx1201 Windows | 2: `ConvAIModelLoad`, `StaticFDBSync/11` |
| gfx1151 Windows | 2: `CPU_PerfDb_NONE.{RamDb,PlainTextDb}_AllTests` |
| gfx1151 Linux, gfx942 Linux, gfx1100 Windows | 0 |

- After merge: the next TheRock bump should be green on gfx120X shards 1
and 3 and Windows gfx1151 shard 2.

## Test Result

The selection diff above shows exactly the intended cases removed, with
no change on other archs.

## Submission Checklist

- [x] Each exclusion is scoped to arch/OS and cites a ticket or issue
- [x] YAML parses and the generator returns rc 0
- [x] Jira for the gfx1201 `SoftmaxFind20` hang (ALMIOPEN-3130) and the
Windows `PerfDb` multiprocess hang (ALMIOPEN-3129)
- [ ] Re-enable each entry when its ticket closes
- [ ] Look over the contributing guidelines at
https://github.com/ROCm/TheRock/blob/main/GOVERNANCE.md#pull-requests.
aalabsi-amd added a commit that referenced this pull request Nov 6, 2026
…14169 (#15031)

JIRA ID : ALMIOPEN-1926

## Motivation

#14169 (merged 2026-10-26, `cec66d06`) fixed the data race in
`RNNDescriptor::RNNForwardMS` that made bias-enabled
`Full/GPU_LstmMSRnn_FP32.TestFloat` cases fail intermittently. Every
quarantine of this family still in the tree predates that fix:

| Where | Pattern | Added by | Data it was based on |
|---|---|---|---|
| Jenkins `MIOPEN_TEST_GFX94X` negative filter |
`Full/GPU_LstmMSRnn_FP32*` | #13107 | Jenkins gfx942, 2026-08-24..10-23
|
| `comprehensive.exclude`, `full.exclude` |
`Full/GPU_LstmMSRnn_FP32.TestFloat/1095` | #13107 | Jenkins per-index
filter |
| `exclude_gpu_gfx94X` | `Full/GPU_LstmMSRnn_FP32*` | #13107 | Jenkins
gfx942 (above) |
| `exclude_gpu_gfx110X` | `Full/GPU_LstmMSRnn_FP32*` | #13107 | Windows
gfx110X runs of 10-15/10-16 |
| `exclude_gpu_gfx115X` | `Full/GPU_LstmMSRnn_FP32*` | #13107 | Windows
gfx1151 run of 10-20 |

The #14169 author planned this cleanup as a follow-up once the fix was
confirmed. While these quarantines stay, a regression in the
LSTM multi-stream forward pass (reachable from `miopenRNNForward`,
`miopenRNNForwardTraining` and `miopenRNNForwardInference`) goes
untested on gfx942, gfx110X and gfx1151.

## Technical Details

- `projects/miopen/test/gtest/test_categories.yaml`:
  - remove `/1095` from the comprehensive and full excludes;
- remove `Full/GPU_LstmMSRnn_FP32*` from `exclude_gpu_gfx110X` and
`exclude_gpu_gfx115X`;
- remove the `exclude_gpu_gfx94X` key. Its only pattern was this family,
so gfx94X goes back to the base suites (`-LE ex_gpu`),
    as before #13107. That's 21 suites instead of 25.
- `projects/miopen/test/gtest/CMakeLists.txt`: remove the Jenkins
`MIOPEN_TEST_GFX94X` block, which only held this filter.
- **Kept:** `exclude_gpu_gfx115X_windows`
`Full/GPU_GRU_Base_FP16…biasMode_1_*`. GRU doesn't use the multi-stream
LSTM forward that
  #14169 changed, so the fix doesn't cover that flake.
- **Kept:** `standard.exclude` `Full/GPU_LstmMSRnn_*`. That's tier
placement (the Full/ cases run in comprehensive), not a quarantine.

## Test Plan

1. `parse_test_categories.py`: rc 0, 21 suites.
2. `yaml_select.py diff --old git:origin/develop`, using the 69,069 case
names from `miopen_gtest --gtest_list_tests` of the post-fix build:

| GPU / OS | standard | comprehensive / full |
|---|---|---|
| gfx942 Linux | 0 | +1,536 `Full/GPU_LstmMSRnn_FP32` |
| gfx1100 Windows | 0 | +1,536 |
| gfx1151 Windows / Linux | 0 | +1,536 |
| gfx1201 Linux, gfx950 Linux | 0 | +1 (`/1095`; they already ran the
rest) |

3. **Local A/B stress on gfx942 (MI300X).** Same method as #14169. The
pre-fix build is TheRock CI artifacts of rl run 39358709264
(2026-10-20); the post-fix build is rl run 41582846076 (develop
`9953cb5` + PR #14882). Two modes: (A) one process with
`GPU_MAX_HW_QUEUES=16`; (B) 4 gtest shards sharing one GPU, as Jenkins
does. Rounds alternate pre/post, each with a fresh user db
   and kernel cache. Script: `/scratch/users/aalabsi/tmp/lstm_ab/ab.sh`.
4. **CI on this PR**, labels `test:miopen` + `test_filter:comprehensive`
+ `ci:gfx1151`. This runs
comprehensive (including all 1,536 `Full/GPU_LstmMSRnn_FP32` cases) on
Linux gfx94X, Windows gfx110X and Windows/Linux gfx1151.
   These are the lanes that failed before. Read every attempt.
5. **Jenkins PR**: the gfx942 stages run the family again now that the
filter is gone.

## Test Result

**Local A/B stress, gfx942 (MI300X, banff-cyxtera-s70-4)**, Slurm jobs
68262769 (3 rounds) and 68262798 (20 rounds),
23 rounds per build per mode, pre/post alternating. Each round runs all
1,536 cases: 1,152 execute and 384 skip by design at
`rnn_seq_api.cpp:61` in both builds.

| Build | Mode A: 1 process, `GPU_MAX_HW_QUEUES=16` | Mode B: 4 shards
on 1 GPU (Jenkins-like) |
|---|---|---|
| pre-fix (rl run 39358709264, 2026-10-20) | 0 failures / 26,496 | **150
failures / 26,496 (0.57%), in 23 of 23 rounds, 113 distinct indices**,
all at `rnn_seq_api.hpp:272` (the ALMIOPEN-1926 signature) |
| post-fix (rl run 41582846076, develop `9953cb5`) | 0 / 26,496 | **0 /
26,496, in 0 of 23 rounds** |

At the pre-fix rate, 26,496 post-fix executions would give about 150
failures. Seeing 0 by chance is effectively impossible
(p ≈ e^-150). Mode A didn't reproduce on this machine for either build;
#14169 also needed mode B or many passes. A round takes
77–81 s for both builds, so the fix costs no measurable test time. Logs:
`/scratch/users/aalabsi/tmp/lstm_ab/results-68262769/`,
`…/results-68262798/`.

**Jenkins develop, gfx942** (QE dashboard): 20 failures / 11,719
executions from 2026-09-01 to 10-26; 0 / 1,144 from 10-27 to 10-30,
after which #13107 filtered the whole family. gfx90a: 0 / 11,615 before
and 0 / 1,872 after; it was never quarantined.

**CI on this PR:** pending. Windows gfx110X and gfx1151 are the open
question: no Windows run of this family exists after the fix,
and the stress test above covers gfx942 only.

## Submission Checklist

- [x] Every removed entry cites ALMIOPEN-1926 and is covered by #14169
- [x] YAML parses; selection diff shows only the intended cases
- [x] gfx942 A/B: pre-fix fails under stress (150 / 26,496), post-fix
doesn't (0 / 26,496)
- [ ] PR CI comprehensive: Windows gfx110X / gfx1151 and Linux gfx94X
run `Full/GPU_LstmMSRnn_FP32` with 0 failures in every attempt
- [ ] Jenkins gfx942 PR stages green with the filter removed
- [ ] Remove the `test_filter:comprehensive` label before merge
- [ ] Close ALMIOPEN-1926, or narrow it to the GRU FP16 flake
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