[Kernel] Expand SM70 75T prefill to Q8192 and concurrent requests - #635
Merged
Merged
Conversation
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
yangzhuxinyzx
marked this pull request as ready for review
September 14, 2026 11:45
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.
Purpose
The default SM70 75-TFLOP/s long-prefill path only admitted Q8000 with a single-request paged-gather gate and an 8000-token KV step. That kept normal Q8192 chunks and concurrent scheduler batches off the optimized path.
This change adds a native Q8192 FP16 Tensor Core / FP32 MMA-accumulation specialization, dispatches Q8001-Q8191 by causality-preserving leading padding, and removes the single-request admission gate. Each eligible request in a scheduler batch now gathers paged KV into the reusable dense workspace and enters the same architecture path. The admitted KV range is Q through 262144 with 32-token alignment; boundary testing showed that smaller prefix PV remainders remain finite but are numerically invalid, so those shapes keep the general fallback.
The two-request end-to-end run also exposed an existing E4M3 batched-XQA planner mismatch: the Python planner could choose partition 1024 although the native B2-B16 kernel accepts 64/128/256. Automatic batched E4M3 planning is now capped at 256, while incompatible explicit overrides fail clearly.
Test Plan
Test Result
9f55da1ae54d87b008cb3452e23e1e4b272dd66115d37620d63674f3841c0055.pytest: 172 passed.