Skip to content

fix(hipblaslt): drop stale KernArgsVersion 2 overrides from gfx950 logic - #12017

Open
jaopaulolc wants to merge 1 commit into
developfrom
users/jolabega/fix-gfx950-stale-kernargsversion
Open

fix(hipblaslt): drop stale KernArgsVersion 2 overrides from gfx950 logic#12017
jaopaulolc wants to merge 1 commit into
developfrom
users/jolabega/fix-gfx950-stale-kernargsversion

Conversation

@jaopaulolc

Copy link
Copy Markdown
Contributor

JIRA ID : N/A

Motivation

467 solution entries across 9 gfx950 logic files still pin
InternalSupportParams.KernArgsVersion to 2, while the rest of the gfx950 logic
has moved to the default version 3. When such an entry is selected, the host packs
kernel arguments in v2 order (D, C, A, B, ...) but the generated kernel reads them
in v3 order (A, B, strides, ...); the kernel dereferences D as A and faults on
its first global load.

This is a pre-existing defect on develop that causes HSA_STATUS_ERROR_MEMORY_FAULT
on gfx950, and it blocks other gfx950 work by making any exhaustive solution run abort.

It also causes the current gfx950 precheckin failure on develop: test
_/matmul_test.matmul/pre_checkin_matmul_128_f32_rf32_rf32_rf32_rf32_r_NT_128_128_128_5_128_128_0_128_128_1
faults in kernel Cijk_Ailk_Bjlk_S_B_Bias_HA_S_SAV_UserArgs_MT32x32x32_MI16x16x1_..._WG32_8_1,
which is one of the stale entries in gfx950_Cijk_Ailk_Bjlk_S_B_BiasS_HAS_SAV_UserArgs.yaml.

PR #11943 contains a 34-entry subset of this change (one file); expect an overlap when
merging.

Technical Details

The KernArgsVersion: 2 token is removed from each affected
InternalSupportParams mapping so the entry inherits the default version 3.
Nothing else changes: per file the diff has equal insertions and deletions, and the
solution count of every file is unchanged.

file (under Logic/asm_full/gfx950/) solutions entries fixed
gfx950/Equality/gfx950_Cijk_Ailk_Bjlk_BBS_BH_BiasSB_HAS_SAV_UserArgs.yaml 593 50
gfx950/Equality/gfx950_Cijk_Ailk_Bjlk_S_B_BiasS_HAS_SAV_UserArgs.yaml 411 71
gfx950/Equality/gfx950_Cijk_Ailk_Bljk_BBS_BH_BiasSB_HAS_SAV_UserArgs.yaml 882 117
gfx950/Equality/gfx950_Cijk_Ailk_Bljk_S_B_BiasS_HAS_SAV_UserArgs.yaml 414 34
gfx950/Equality/gfx950_Cijk_Alik_Bjlk_S_B_BiasS_HAS_SAV_UserArgs.yaml 292 38
gfx950/Equality/gfx950_Cijk_Alik_Bljk_BBS_BH_BiasSB_HAS_SAV_UserArgs.yaml 2374 87
gfx950/Equality/gfx950_Cijk_Alik_Bljk_S_B_BiasS_HAS_SAV_UserArgs.yaml 552 31
gfx950_id75a3/Equality/gfx950_Cijk_Alik_Bljk_BBS_BH_BiasSB_HAS_SAV_UserArgs.yaml 2773 29
gfx950_id75a3/Equality/gfx950_Cijk_Alik_Bljk_S_MX_B_BiasS_HAS_SAV_UserArgs.yaml 164 10

These 9 files are the only shipped logic files in the repository that reference
KernArgsVersion; no other architecture is affected. The remaining v2 kernels in a
built gfx950 library are all hand-written Custom_* kernels, which are not sourced
from logic files and are out of scope here.

Test Plan

gfx950 (MI355X), build from source with GPU_TARGETS=gfx950, A/B against the same
tree with and without this change:

  1. Per-solution runs of hipblaslt-bench --algo_method index on entries that carried
    the override, plus unaffected entries from the same files as controls.
  2. hipblaslt-bench --algo_method all over every supported solution for
    fp32 NN/NT/TN/TT and bf16 NN/NT/TN, checking both the fault count and that the
    supported-solution count is unchanged.
  3. The failing precheckin gtest above.
  4. The uniform-summation-order gtest surface.

Test Result

  1. Per-solution: 7 of 8 sampled affected entries faulted before the change (exit 134,
    Memory access fault) and all pass after; 7 of 7 control entries pass in both arms.
    Covers 6 of the 9 files.
  2. Exhaustive sweeps: before, all 7 problem types aborted with exit 134 and one fault;
    after, all 7 pass with exit 0 and no faults. Supported-solution counts identical in
    both arms (645, 648, 781, 519, 1124, 802, 2689).
  3. pre_checkin_matmul_128_f32_rf32_rf32_rf32_rf32_r_NT_128_128_128_5_128_128_0_128_128_1:
    exit 134 with a memory fault before, [ PASSED ] 1 test after.
  4. Uniform-summation-order surface: 72 tests from 10 suites, 72 passed, 0 failed,
    0 faults.

The two gfx950_id75a3 files (39 entries) are not built in this configuration and were
verified statically only: zero KernArgsVersion references remain in the logic tree and
their solution counts are unchanged.

Submission Checklist

Risk level

Low. Data-only change to gfx950 heuristic logic that removes an override and restores
the default already used by the rest of the file. No solution is added or removed, and
solution counts are unchanged.

467 solution entries across 9 gfx950 logic files still pin
InternalSupportParams.KernArgsVersion to 2. The host then packs kernel
arguments in v2 order (D, C, A, B, ...) while the generated kernel
reads them in v3 order (A, B, strides, ...), so the kernel dereferences
D as A and faults on its first global load.

Remove the override so the affected entries inherit the default
version 3. Only the KernArgsVersion token is removed; no solution
entry is added, removed, or otherwise altered.
@jaopaulolc
jaopaulolc requested a review from a team as a code owner September 13, 2026 00:13
@therock-pr-bot

therock-pr-bot Bot commented Sep 13, 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.

@codecov

codecov Bot commented Sep 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #12017      +/-   ##
===========================================
- Coverage    70.23%   70.23%   -0.00%     
===========================================
  Files         2810     2810              
  Lines       462535   462535              
  Branches     68105    68105              
===========================================
- Hits        324828   324821       -7     
- Misses      114187   114191       +4     
- Partials     23520    23523       +3     
Flag Coverage Δ *Carryforward flag
TensileLite-CPP 46.40% <ø> (ø) Carriedforward from 2e146c4
TensileLite-Unit 76.07% <ø> (ø) Carriedforward from 2e146c4
hipBLAS 90.62% <ø> (ø) Carriedforward from 2e146c4
hipBLASLt 35.23% <ø> (-0.03%) ⬇️
hipCUB 82.68% <ø> (ø) Carriedforward from 2e146c4
hipDNN 87.02% <ø> (ø) Carriedforward from 2e146c4
hipFFT 43.07% <ø> (ø) Carriedforward from 2e146c4
hipRAND 76.12% <ø> (ø) Carriedforward from 2e146c4
hipSOLVER 68.92% <ø> (ø) Carriedforward from 2e146c4
hipSPARSE 86.99% <ø> (ø) Carriedforward from 2e146c4
rocBLAS 48.31% <ø> (ø) Carriedforward from 2e146c4
rocFFT 47.16% <ø> (ø) Carriedforward from 2e146c4
rocRAND 56.90% <ø> (ø) Carriedforward from 2e146c4
rocSOLVER 76.83% <ø> (ø) Carriedforward from 2e146c4
rocSPARSE 74.61% <ø> (ø) Carriedforward from 2e146c4
rocThrust 91.60% <ø> (ø) Carriedforward from 2e146c4

*This pull request uses carry forward flags. Click here to find out more.
see 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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