llvm / llvm/offload-test-suite

[AMD][DirectX ] WavePrefixProduct.* tests fail on AMD + DirectX

Open
#1,102 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
18
Forks
39
Avg merge
2d 18h
Merged PRs (30d)
40

Description

WavePrefixProduct tests fail on AMD for floating point vectors of size 4 that are not 32 bits, and in the constant folding case.
A link to the logs:
https://github.com/llvm/offload-test-suite/actions/runs/24374208768/job/71184136405?pr=1074#step:13:688

A failure log snippet below:
```

# .---command stdout------------
# | Using DirectX API
# | Configuring execution on device: AMD Radeon RX 9070
# | RootSignature created.
# | Descriptor heap created.
# | Command structures created.
# | Creating SRV: { Size = 8, Register = t0, Space = 0 }
# | Creating UAV: { Size = 32, Register = u1, Space = 0, HasCounter = 0 }
# | Creating UAV: { Size = 32, Register = u2, Space = 0, HasCounter = 0 }
# | Creating UAV: { Size = 32, Register = u3, Space = 0, HasCounter = 0 }
# | Creating UAV: { Size = 32, Register = u4, Space = 0, HasCounter = 0 }
# | Creating UAV: { Size = 32, Register = u5, Space = 0, HasCounter = 0 }
# | EltSize = 8 NumElts = 1
# | SRV: HeapIdx = 0 EltSize = 8 NumElts = 1
# | EltSize = 8 NumElts = 4
# | UAV: HeapIdx = 1 EltSize = 8 NumElts = 4 HasCounter = 0
# | EltSize = 8 NumElts = 4
# | UAV: HeapIdx = 2 EltSize = 8 NumElts = 4 HasCounter = 0
# | EltSize = 8 NumElts = 4
# | UAV: HeapIdx = 3 EltSize = 8 NumElts = 4 HasCounter = 0
# | EltSize = 8 NumElts = 4
# | UAV: HeapIdx = 4 EltSize = 8 NumElts = 4 HasCounter = 0
# | EltSize = 8 NumElts = 4
# | UAV: HeapIdx = 5 EltSize = 8 NumElts = 4 HasCounter = 0
# | Buffers created.
# | PSO created.
# | Compute command list created.
# | Compute commands executed.
# | Read data back.
# `-----------------------------
# .---command stderr------------
# | Test failed: ExpectedOut4
# | Comparison Rule: BufferFloatULP
# | ULP: 2
# | Expected:
# | ---
# | Name: ExpectedOut4
# | Format: Float16
# | Stride: 8
# | Data: [ 0x3C00, 0x3C00, 0x3C00, 0x3C00, 0x4000, 0x4200, 0x4500,
# | 0x4700, 0x4400, 0x4880, 0x4E40, 0x5220, 0x4800, 0x4EC0,
# | 0x57D0, 0x5D5C ]
# | OutputProps:
# | Height: 0
# | Width: 0
# | Depth: 0
# | ...
# | Got:
# | ---
# | Name: Out4
# | Format: Float16
# | Stride: 8
# | Data: [ 0x3C00, 0x3C00, 0x3C00, 0x3C00, 0x4000, 0x4200, 0x4500,
# | 0x4700, 0x4400, 0x4880, 0x4E40, 0x5220, 0x4800, 0x4EC0,
# | 0x57D0, 0x4000 ]
# | OutputProps:
# | Height: 0
# | Width: 0
# | Depth: 0
# | ...
# | Full Hex representation of Expected Buffer Values:
# | [ 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x4000, 0x4200, 0x4500, 0x4700, 0x4400, 0x4880, 0x4e40, 0x5220, 0x4800, 0x4ec0, 0x57d0, 0x5d5c ]
# | Full Hex representation of Actual Buffer Values:
# | [ 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x4000, 0x4200, 0x4500, 0x4700, 0x4400, 0x4880, 0x4e40, 0x5220, 0x4800, 0x4ec0, 0x57d0, 0x4000 ]
# |
# | Test failed: ExpectedOut5
# | Comparison Rule: BufferFloatULP
# | ULP: 2
# | Expected:
# | ---
# | Name: ExpectedOut5
# | Format: Float16
# | Stride: 8
# | Data: [ 0x3C00, 0x3C00, 0x3C00, 0x3C00, 0x4000, 0x4200, 0x4500,
# | 0x4700, 0x4400, 0x4880, 0x4E40, 0x5220, 0x4800, 0x4EC0,
# | 0x57D0, 0x5D5C ]
# | OutputProps:
# | Height: 0
# | Width: 0
# | Depth: 0
# | ...
# | Got:
# | ---
# | Name: Out5
# | Format: Float16
# | Stride: 8
# | Data: [ 0x4200, 0x4500, 0x4700, 0x3C00, 0x4200, 0x4500, 0x4700,
# | 0x4700, 0x4200, 0x4500, 0x4700, 0x5220, 0x4200, 0x4500,
# | 0x4700, 0x5D5C ]
# | OutputProps:
# | Height: 0
# | Width: 0
# | Depth: 0
# | ...
# | Full Hex representation of Expected Buffer Values:
# | [ 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x4000, 0x4200, 0x4500, 0x4700, 0x4400, 0x4880, 0x4e40, 0x5220, 0x4800, 0x4ec0, 0x57d0, 0x5d5c ]
# | Full Hex representation of Actual Buffer Values:
# | [ 0x4200, 0x4500, 0x4700, 0x3c00, 0x4200, 0x4500, 0x4700, 0x4700, 0x4200, 0x4500, 0x4700, 0x5220, 0x4200, 0x4500, 0x4700, 0x5d5c ]
# |
# `-----------------------------
# error: command failed with exit status: 1

--

********************
```

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the WavePrefixProduct.* test definitions and the DirectX execution path, then reproduce the AMD failures using the linked workflow logs as reference. Compare the floating-point vector-size-4 and constant-folding cases with passing cases; done means these cases produce the expected buffers on AMD/DirectX without regressing other WavePrefixProduct tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.