Skip to content

test(miopen)[ALMIOPEN-1926]: re-enable Full/GPU_LstmMSRnn_FP32 after #14169 - #15031

Merged
aalabsi-amd merged 3 commits into
developfrom
users/aalabsi-amd/miopen-reenable-lstmmsrnn
Nov 6, 2026
Merged

aalabsi-amd merged 3 commits into
developfrom
users/aalabsi-amd/miopen-reenable-lstmmsrnn

Conversation

@aalabsi-amd

Copy link
Copy Markdown
Contributor

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:
  • 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
    fix(miopen): order LSTM multi-stream fwd bias add before GEMM #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)
  1. Local A/B stress on gfx942 (MI300X). Same method as fix(miopen): order LSTM multi-stream fwd bias add before GEMM #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 test(miopen)[ALMIOPEN-2966]: exclude TheRock bump failures on gfx120X and Windows gfx1151 #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.
  2. 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.
  3. 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

  • Every removed entry cites ALMIOPEN-1926 and is covered by fix(miopen): order LSTM multi-stream fwd bias add before GEMM #14169
  • YAML parses; selection diff shows only the intended cases
  • 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

…14169

#14169 (merged 2026-10-26) fixed the data race in RNNDescriptor::RNNForwardMS
that made bias-enabled Full/GPU_LstmMSRnn_FP32.TestFloat cases fail
intermittently. Remove the quarantines that cite ALMIOPEN-1926 for this
family:

- test_categories.yaml: Full/GPU_LstmMSRnn_FP32.TestFloat/1095 in the
  comprehensive and full excludes; Full/GPU_LstmMSRnn_FP32* in
  exclude_gpu_gfx110X and exclude_gpu_gfx115X; the exclude_gpu_gfx94X key,
  whose only pattern was this family.
- CMakeLists.txt: the Jenkins MIOPEN_TEST_GFX94X negative filter.

The Windows gfx115X GRU FP16 entry stays: GRU does not use the multi-stream
LSTM forward that #14169 fixed.
@aalabsi-amd aalabsi-amd added project: miopen ci:gfx1151 Opt-in to gfx1151 builds/tests test_filter:comprehensive If enabled, the PR will run comprehensive tests labels Nov 4, 2026
@therock-pr-bot

therock-pr-bot Bot commented Nov 4, 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 Nov 4, 2026 •

Copy link
Copy Markdown

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

@aalabsi-amd
aalabsi-amd marked this pull request as ready for review November 4, 2026 18:57
@aalabsi-amd
aalabsi-amd requested a review from a team as a code owner November 4, 2026 18:57

@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.

The yaml and CMake cleanup is correct and complete. MIOPEN_TEST_GFX94X is still used elsewhere, so removing only the filter block is right. The kept GRU FP16 and standard-tier entries are also right.

Needs a follow-up when merging with develop: #15021 added projects/miopen/AGENTS.md, whose example ctest ... -L '^ex_gpu_gfx94X$' uses the label this PR deletes. After merge that command fails with --no-tests=error. Please update it in this PR once you rebase or merge develop, or in a follow-up. Suggested change (untested; ex_gpu_gfx950 still exists at test_categories.yaml:753):

-# test_categories.yaml, often a family name (gfx942 -> ex_gpu_gfx94X).
-ctest ... -L '^quick$' -L '^ex_gpu_gfx94X$'
+# test_categories.yaml, often a family name (gfx950 -> ex_gpu_gfx950).
+ctest ... -L '^quick$' -L '^ex_gpu_gfx950$'

Request: read every Windows gfx110X and gfx1151 attempt of Full/GPU_LstmMSRnn_FP32, because the stress evidence covers gfx942 only.

No blockers. 0 suggestion blocks are included, since the AGENTS.md line is not in this PR's diff.

Co-authored by Claude (AI).

…l that still exists

This PR removes exclude_gpu_gfx94X, so ctest -L '^ex_gpu_gfx94X$' would
select nothing and fail under --no-tests=error. Use gfx1100 ->
ex_gpu_gfx110X, which keeps the family-name example.
@aalabsi-amd
aalabsi-amd merged commit 8deaef8 into develop Nov 6, 2026
318 of 324 checks passed
@aalabsi-amd
aalabsi-amd deleted the users/aalabsi-amd/miopen-reenable-lstmmsrnn branch November 6, 2026 19:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:gfx1151 Opt-in to gfx1151 builds/tests documentation organization: ROCm project: miopen test_filter:comprehensive If enabled, the PR will run comprehensive tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants