Skip to content

[HLSL] Extend LinAlg exec test shapes and types - #9048

Open
Jack Elliott (JoeCitizen) wants to merge 1 commit into
microsoft:mainfrom
JoeCitizen:joecitizen-linalg-hlk-exec-coverage-9047
Open

Jack Elliott (JoeCitizen) wants to merge 1 commit into
microsoft:mainfrom
JoeCitizen:joecitizen-linalg-hlk-exec-coverage-9047

Conversation

@JoeCitizen

Copy link
Copy Markdown
Collaborator

Several LinAlg exec checks only ran at shapes below the usual native tile size, and Tier 1 I8/U8 support had little or no coverage. This adds tests at native granularity and fills the I8/U8 gaps.

  • Wave F16 multiply at 16x16x8, and I8/U8 to I32 at 16x32x8 and 32x32x32.
  • ThreadGroup multiply and load/store at fixed 128 and 256 thread groups. I8/U8 use 32x32x32 at 128 threads so K stays at 32.
  • F32 element access, layout round trips and I32/F32 contention on 16x16 and 16x32 accumulators, plus F32 accumulator to F16 A/B casts.
  • WaveScaled ThreadGroup load/store now sweeps group sizes.
  • Mandatory I8/U8 vector Convert tests: saturation, rounding, inf/NaN, a partial last word, and Convert feeding a MatVec.

All new matmul cases stay capability gated. Tested on WARP built from current Direct3D main: all new cases pass except the two I32 contention cases, which skip because I32 atomic accumulate isn't advertised.

Fixes #9047

Several LinAlg exec checks only ran at shapes below the usual native tile
size, and Tier 1 I8/U8 support had little or no coverage. This adds tests at
native granularity and fills the I8/U8 gaps.

- Wave F16 multiply at 16x16x8, and I8/U8 to I32 at 16x32x8 and 32x32x32.
- ThreadGroup multiply and load/store at fixed 128 and 256 thread groups.
  I8/U8 use 32x32x32 at 128 threads so K stays at 32.
- F32 element access, layout round trips and I32/F32 contention on 16x16
  and 16x32 accumulators, plus F32 accumulator to F16 A/B casts.
- WaveScaled ThreadGroup load/store now sweeps group sizes.
- Mandatory I8/U8 vector Convert tests: saturation, rounding, inf/NaN,
  a partial last word, and Convert feeding a MatVec.

Fixes microsoft#9047

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f05f926c-8544-4ea3-87aa-307088e1622a

Copilot AI 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.

🟢 Approval recommended

Static review found no blocking issues in the test-only changes, capability gating, or expected-result checks.

No open issues 🎉

What changed in this PR

Expands LinAlg execution coverage to address #9047, using hardware-relevant shapes and covering required I8/U8 conversions.

Changes:

  • Adds capability-gated Wave and fixed-size ThreadGroup matrix tests.
  • Extends F32 element access, layout, contention, and cast coverage.
  • Adds packed-byte conversion edge cases and Convert-to-MatVec tests.
File Description
tools/​clang/​unittests/​HLSLExec/​LinAlgTests.cpp Extends test shapes, types, conversion checks, and supporting helpers.

Review effort: Balanced

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

Labels

None yet

Projects

Status: New

Development

Successfully merging this pull request may close these issues.

LinAlg exec tests: extend shape and type coverage so tests run on more hardware

3 participants