Skip to content

[None][perf] Select CuTeDSL for low-M MXFP8 decode graphs - #17287

Draft
zheyuf wants to merge 1 commit into
NVIDIA:feat/m3_with_msafrom
brb-nv:zheyu/perf/mxfp8-cutedsl-decode-graphs
Draft

[None][perf] Select CuTeDSL for low-M MXFP8 decode graphs#17287
zheyuf wants to merge 1 commit into
NVIDIA:feat/m3_with_msafrom
brb-nv:zheyu/perf/mxfp8-cutedsl-decode-graphs

Conversation

@zheyuf

@zheyuf zheyuf commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

What changed

  • Add an opt-in FlashInfer inner-backend selector for MXFP8 linear GEMMs.
  • In the existing automatic generation-graph path, dispatch 1 <= M <= 32
    to CuTeDSL and retain FlashInfer CUTLASS for larger M.
  • Keep eager/prefill execution native and preserve the explicit all-call
    FlashInfer override.
  • Continue CUTLASS autotuning so the high-M fallback is ready before graph
    capture.

Enable the qualified policy with:

unset TRTLLM_MXFP8_GEMM_BACKEND
export TRTLLM_MXFP8_FLASHINFER_BACKEND=cute-dsl

The default remains unchanged when the new environment variable is unset.

Why

MiniMax-M3/B300 decode traces showed repeatable MXFP8 projection gaps versus
vLLM. An exhaustive 32-tactic CUTLASS sweep established that this is not only
an autotuner artifact: at M=1, CuTeDSL is 14.3-20.8% faster than the
empirical-best CUTLASS tactic across all seven projection roles.

A 147-case qualification found that CuTeDSL wins every tested role at exact
M={1,2,4,8,16,32}, while six of seven roles cross to CUTLASS at M=64 and
all roles favor CUTLASS at M=512/1024. The cutoff therefore keeps the
well-supported low-M gain without broadening CuTeDSL into risky high-M or
prefill/eager execution.

E2E impact

On the 12-point Alex MiniMax-M3 B300 AGG Pareto cohort, each point used four
independent same-node cold deployments in A-H-H-A order. All 48 arms passed
request-integrity, request-count, provenance, dispatch-scope and node-cleanliness
validation.

  • c1 through c128: output tok/s/GPU improved 1.97-10.46% and
    inverse-mean-TPOT generation tok/s/user improved 2.53-12.75%.
  • DEP8-c256 is a boundary point: output tok/s/GPU improved 2.01%, while
    generation changed sign between the two candidate arms.
  • c512/c1024 high-M controls remained near zero, as expected from their tiny
    low-M replay share.

TTFT changes were mixed and did not track selector hit rate or decode gain.
The selector does not directly alter the context forward that produces the
first token, although faster decode can indirectly affect admission under
saturation. If TTFT is a merge gate, TP4-c2 should receive a targeted repeat
with more cold deployments and per-request admission/first-token telemetry.

Validation

  • Python formatting/lint and git diff --check.
  • 39 passed in the pinned B300 serving container. MXFP8 dispatch unit tests
    cover M=1,32,33,64, eager/native behavior,
    CUTLASS fallback autotuning, explicit all-call CuTeDSL, and invalid config.
  • Existing model-engine warmup tests verify the automatic graph-capture
    lifecycle.
  • Controlled kernel and 12-point E2E results are documented in
    m3_mxfp8_gemm_investigation/FINAL_REPORT.md outside this source tree.

Scope and risk

The patch changes only MXFP8LinearMethod and its unit tests. It adds no model
or operator-role allowlist, no version-specific signature database, and no
new model-engine state. Non-MXFP8 kernels and the default configuration are
unchanged.

Signed-off-by: Zheyu Fu <zheyuf@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant