Repository navigation
Conversation
…nternal_collectives_warpreduce On gfx8/gfx9 the DPP-based wfreduce_sum/_max/_min leave the result only in lane wf-1, and wfreduce_partial_sum<WFSIZE, SUB> in the last SUB lanes. The unit tests asserted the result in every lane, so 14 tests failed on gfx90a/gfx94x/gfx950 (wave64) while passing on gfx1201. Verify the lanes the implementation specifies: every lane on the shuffle path, only the top lanes on the gfx8/gfx9 DPP path.
❌ PR Check — Action Required
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
|
🚫 Please fix the failed policies before requesting reviews. The following policy checks failed:
The |
3 tasks
Contributor
Author
|
Closing for #13389. |
kliegeois
added a commit
that referenced
this pull request
Oct 12, 2026
…13389) ## Summary - Register `rocsparse-unit-test` and `rocsparse-unit-test-device` on the `standard`, `comprehensive`, and `full` ctest labels, including the installed `bin/rocsparse/CTestTestfile.cmake` that TheRock runs. `quick` does not include them. - Each binary is registered twice. TheRock on gfx1151 requires the `ex_gpu_gfx1151` label, and on every other GPU it excludes `ex_gpu`, so one entry cannot satisfy both. - Include the gfx8/gfx9 wfreduce lane check from #13388. Without it, `rocsparse-unit-test-device` fails 14 cases on gfx94X and gfx950, which are TheRock Linux test targets. This supersedes #13388. ## Test plan - [ ] TheRock `standard` on gfx94X and gfx950 runs both unit-test binaries, and the wfreduce cases pass - [ ] gfx1151 selects the `ex_gpu_gfx1151` entries rather than the plain ones - [ ] `ctest -L quick` does not run either unit-test binary --------- Co-authored-by: Kim Liegeois <kliegeois@users.noreply.github.com> Co-authored-by: James Sandham <33790278+jsandham@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
rocsparse-unit-test-devicereports 14 failures on every wave64 gfx9 part (gfx90a / gfx94x / gfx950). They are not seen on gfx1201 (wave32), so they only show up on MI-series CI and local MI300X runs:Cause
The tests assert the reduction result in every lane. That is only what the shuffle-based implementations (
ROCSPARSE_USE_MOVE_DPP == 0: gfx10+) guarantee. On gfx8/gfx9 thewfreduce_*routines are built from DPProw_shr/row_bcaststeps, which accumulate the result only in the top lanes of the wavefront:wfreduce_sum/_max/_min: lanewf-1.wfreduce_partial_sum<WFSIZE, SUB>withSUB < 16: the lastSUBlanes. TheSUB == 16andSUB == 32cases use__shfl_xorthroughout and already pass.The routines are internal helpers whose results the library reads from those lanes, so this is a test expectation problem rather than a library bug.
Change
Test-only.
rocsparse_ut::device_uses_dpp_wfreduce()selects gfx8/gfx9 fromgcnArchName(the macro only exists in the device pass), androcsparse_ut::wfreduce_first_valid_lane(wf, sub)returns the first lane to check: lane 0 on the shuffle path (every lane is still checked there),wf - subon the DPP path. Both wfreduce unit-test files check lanes[first, wf). No library change.Testing
rocsparse-unit-test-device, merged on top ofdevelopaa96660108: