Skip to content

[HLSL] Add LinAlg group-shared I/O coverage#8670

Draft
JoeCitizen wants to merge 8 commits into
microsoft:mainfrom
JoeCitizen:linalg-hlk-groupshared-io-coverage
Draft

[HLSL] Add LinAlg group-shared I/O coverage#8670
JoeCitizen wants to merge 8 commits into
microsoft:mainfrom
JoeCitizen:linalg-hlk-groupshared-io-coverage

Conversation

@JoeCitizen

Copy link
Copy Markdown
Collaborator

Summary

  • fix the existing group-shared load/store/accumulate shaders so all threads participate in required group barriers and readback writes are race-free
  • add exact-wave Wave F16 RowMajor and Wave F32 ColumnMajor transfer coverage with non-zero offsets, padded strides, and full-buffer guards
  • add ThreadGroup F16 transfer coverage and capability-gated Wave F16 atomic accumulation with coordinate-derived values

Transfer cases run in both directions through a canonical packed RowMajor representation. The accumulation case adds logical values 1..32 to an independently initialized destination and verifies the exact 13..44 result plus untouched padding.

This PR intentionally covers matching matrix and group-shared component types only. Cross-component conversion remains separate pending runtime triage; expectations were not widened to accept the preview WARP behaviour.

Validation

  • built the Release ExecHLSLTests target
  • passed all seven group-shared methods, including the three corrected baselines
  • passed the capability-policy and typed CPU-oracle host tests, all five element tests, all seven descriptor tests, and all three CopyConvert regressions: 24 focused cases total
  • ran on WARP 1.65535.20-preview, Agility SDK 1.721.2-preview, and ExperimentalShaders=*
  • compiled HlslExecTestUtils.cpp and LinAlgTests.cpp against the preview D3D12 headers
  • clang-format 17.0.1 and git diff --check pass

No physical GPU or HLK lab execution is claimed.

Stack

This draft is stacked on PR #8669, which is stacked on PR #8668, PR #8667, PR #8666, PR #8665, and PR #8662. Until those ancestors land, this diff contains their commits as well. The group-shared I/O change itself is commit adc962200.

This remains a draft for named human review. The reviewer should verify the barrier uniformity, bidirectional layout oracle, exact-wave applicability, and coordinate-derived atomic expectation before requesting maintainer review.

Refs #7841
Refs #8651
Refs #8652
Refs #8654
Refs #8548
Refs #8554
Refs #8562

Assisted-by: GitHub Copilot

Jack Elliott and others added 8 commits July 23, 2026 14:52
Use the shared MatrixUse parameter for the OuterProduct result and set it to Accumulator, matching proposal 0035 and the public dx::linalg API. Add a host-side invariant to prevent the legacy A-use declaration from returning.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Create SRV buffers without UAV flags and transition them for both pixel and non-pixel shader access. Use a direct resource-initialization list so the graphics-only pixel state is legal.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Add typed F16, F32, I32, and U32 matrix data with safe byte encoding, rectangular row/column-major storage mapping, and explicit exact, permitted-result, or excluded comparison policy. Cover offsets and padded strides with independent host goldens, and migrate the existing CopyConvert tests onto the oracle.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Add ABI-checked wrappers for the six D3D12 Linear Algebra capability
query categories and explicit applicability classification. Gate the
rectangular F32 CopyConvert case using concrete supported wave sizes.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Compile capability-gated CopyConvert coverage at the exact wave size whose MatrixConstruction support was queried. Keep mandatory baseline cases on the existing ranged WaveSize attribute.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Add rectangular Length/GetCoordinate/GetElement coverage and the specified Get/Set out-of-bounds behaviour. Capture thread-local matrix records without UAV races and gate optional F32 cases at the exact queried wave size.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Add bounded raw descriptor-table bindings and independent whole-buffer
oracles for LinAlg descriptor operations. Cover non-zero offsets, padded
strides, row/column-major transfer, descriptor bounds, and capability-gated
atomic accumulation.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
Add race-free Wave and ThreadGroup group-shared transfer coverage for row/column-major layouts, non-zero offsets, padded strides, and exact whole-buffer guards. Add capability-gated Wave atomic accumulation with coordinate-derived values, while keeping cross-component conversion out of scope pending runtime conformance.

Assisted-by: GitHub Copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 83725f5d-8e98-4c1d-91ee-ad47629e007b
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.

1 participant