Skip to content

fix(hipblaslt): order solution keys while preserving argument versions - #14615

Draft
ThanHenderson wants to merge 2 commits into
developfrom
users/nhenders/fix-dict-solution-order
Draft

ThanHenderson wants to merge 2 commits into
developfrom
users/nhenders/fix-dict-solution-order

Conversation

@ThanHenderson

Copy link
Copy Markdown
Contributor

JIRA ID : AIHPBLAS-5250

Motivation

The execution-policy normalization introduced in #12537 rebuilds solution dictionaries during merging, changing their key order. Geko edits can also append keys outside the expected order.

This restores the ordering fix from #14195, reverted in #14565, while preserving explicit kernel-argument versions.

Technical Details

  • Remove the KernArgsVersion filtering introduced in #11923 from reorderSolutionDictForDictMerge. The existing helper now preserves every field and value. Its library-generation and list-to-dict conversion callers also retain explicit versions.
  • Reorder merged solutions after normalization and default cleanup, immediately before writing YAML. Naming keys come first, remaining keys are alphabetical, and InternalSupportParams keys are sorted.
  • Apply the same ordering to geko’s dict-format output using an output copy. Dumping leaves the in-memory library and legacy list-format output unchanged.

Test Plan

Run the affected TensileLite unit modules (test_LibraryIO.py and test_TensileMergeLibrary.py), their characterization suites, and geko’s test_library_unit.py.

Cover real renaming, explicit and missing argument versions, key ordering, and input immutability. Compare a self-merge of an existing gfx90a library logic file against develop and run pre-commit on the changed files.

Test Result

  • Affected TensileLite unit and characterization tests passed without snapshot updates.
  • Geko library unit tests passed.
  • Ordering and version-preservation regression cases failed before their respective fixes and passed afterward.
  • The gfx90a logic-file comparison retained explicit version-2 entries and identical payload values; only key order changed.
  • Pre-commit and diff whitespace checks passed. Flake8 reported only pre-existing findings.
  • Validation was performed on the host; no GPU build or runtime tests were run.

Submission Checklist

Risk level

Low: changes are confined to serialization and merge output. Explicit argument versions now remain explicit in generated and converted logic, with regression tests covering their preservation.

@therock-pr-bot

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

Copy link
Copy Markdown

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

@codecov

codecov Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #14615      +/-   ##
===========================================
- Coverage    77.35%   77.28%   -0.06%     
===========================================
  Files         2893     2893              
  Lines       485890   485742     -148     
  Branches     73442    73414      -28     
===========================================
- Hits        375816   375405     -411     
- Misses       85263    85579     +316     
+ Partials     24811    24758      -53     
Flag Coverage Δ *Carryforward flag
TensileLite-CPP 50.82% <ø> (ø)
TensileLite-Unit 84.14% <100.00%> (-<0.01%) ⬇️
hipBLAS 90.62% <ø> (ø) Carriedforward from fe0452a
hipBLASLt 68.55% <ø> (+<0.01%) ⬆️
hipCUB 82.68% <ø> (ø) Carriedforward from fe0452a
hipDNN 86.86% <ø> (-0.05%) ⬇️ Carriedforward from fe0452a
hipFFT 38.02% <ø> (-5.16%) ⬇️ Carriedforward from fe0452a
hipRAND 76.12% <ø> (ø) Carriedforward from fe0452a
hipSOLVER 69.67% <ø> (ø) Carriedforward from fe0452a
hipSPARSE 87.03% <ø> (ø) Carriedforward from fe0452a
rocBLAS 68.95% <ø> (ø) Carriedforward from fe0452a
rocFFT 47.34% <ø> (ø) Carriedforward from fe0452a
rocRAND 57.31% <ø> (-0.01%) ⬇️ Carriedforward from fe0452a
rocSOLVER 76.74% <ø> (ø) Carriedforward from fe0452a
rocSPARSE 83.54% <ø> (ø) Carriedforward from fe0452a
rocThrust 93.15% <ø> (ø) Carriedforward from fe0452a

*This pull request uses carry forward flags. Click here to find out more.

Files with missing lines Coverage Δ
...cts/hipblaslt/tensilelite/tensilelite/LibraryIO.py 94.87% <100.00%> (-0.03%) ⬇️
...slt/tensilelite/tensilelite/TensileMergeLibrary.py 97.14% <100.00%> (+0.01%) ⬆️

... and 22 files 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.

This branch has not been deployed

No deployments
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