Repository navigation
[Triton/Gluon] [GFX950] Add split-k support for fp8 mqa logits - #5603
Conversation
🏷️ CI GuideRuns automatically on every PR:
Extended tests (opt-in via labels):
PR title tags & labels: |
There was a problem hiding this comment.
🟡 Changes recommended
Critical compatibility and correctness issues remain unresolved.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds dynamic split-K support for gfx950 FP8 MQA logits and expands large-shape correctness coverage.
Changes:
- Adds gfx950 split-K dispatch and 2D launch geometry.
- Partitions KV processing across runtime splits.
- Extends split-K and large-shape tests.
File summaries
| File | Summary |
|---|---|
op_tests/triton_tests/attention/test_fp8_mqa_logits.py |
Expands split-K correctness coverage. |
aiter/ops/triton/attention/fp8_mqa_logits.py |
Selects split counts and launches updated kernels. |
aiter/ops/triton/_gluon_kernels/gfx950/attention/fp8_mqa_logits.py |
Implements KV splitting and split-aware masking/stores. |
Critical issues remain: gfx1250 receives an unsupported argument, and odd query lengths can cause duplicate writes and a race. Tuning thresholds are also hardcoded instead of using configuration.
Review details
Suppressed comments (1)
aiter/ops/triton/attention/fp8_mqa_logits.py:227
MIN_BLOCK_M2_WGSis another new gfx950-specific tuning threshold hardcoded in Python. Please put this threshold in the architecture tuning configuration and resolve it through the existing config machinery rather than baking it into the wrapper.
MIN_BLOCK_M2_WGS = 1024
- Files reviewed: 3/3 changed files
- Comments generated: 3
- Review effort level: Lite
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…ing fixes, fp8 MQA logits split-k and DSv4 tunings (#5573, #5295, #5558, #5603, #5627, #5485) (#5638) Cherry-picks six already-merged `main` PRs onto `release/v0.1.22` for the `v0.1.22.post1` post release. | PR | `main` commit | Backport commit | What | |---|---|---|---| | #5485 | `9252f4672` | `155534984` | Extend the DeepSeek-V4 a8w8 blockscale GEMM tunings for gfx950 (tuning CSV only) | | #5573 | `22d2c7c91` | `6b23ba866` | Pad the MXFP4 A4W4 MoE sort extent to a block_size multiple (fixes a HIP illegal memory access) | | #5295 | `972c8e1fd` | `7d68b0edb` | Skip invalid expert IDs in MoE sorting | | #5558 | `3fdfca11e` | `dd83a9d17` | Fix MoE routing kernel compile failure | | #5603 | `a84bd368c` | `a96461997` | Add split-k support for fp8 MQA logits on gfx950 | | #5627 | `f5ed7dc54` | `a41214712` | Follow-up to #5603: drop chunking when summation folding is unavailable (fixes Triton 3.6 compile) | Original PRs: - #5485: #5485 - #5573: #5573 - #5295: #5295 - #5558: #5558 - #5603: #5603 - #5627: #5627 To be published as `v0.1.22.post1` once merged (tag on the merge commit, release automation builds the wheel set).
Motivation
For agentic workloads, we might have very large kv length with very few queries. So, enabling splitk help such workloads by splitting the kv length.
Num splits defined as dynamic arg to reduce unexpected compilations during runtime.
Tests are extended to trigger split-k with better coverage, with some cleanup.
Triton 3.7.0+amd.rocm7.2.0.git89002410
Triton 3.8.0+amd.rocm7.2.0.git111ff227