sgl-project/sglang · error · ValueError
CuteDSL MLA backend is only supported on Blackwell GPUs…
Error message
CuteDSL MLA backend is only supported on Blackwell GPUs (SM100). Please use a different backend.
What it means
Configuration override error: the CuteDSL MLA attention backend requires Blackwell (SM100) GPUs; a different attention backend must be selected on older hardware.
Solutions
- Run on an SM100 (B200/GB200) GPU
- Switch prefill backend, e.g. --prefill-attention-backend trtllm_mla or leave default
Example fix
# before (on H100) --prefill-attention-backend cutedsl_mla # after --prefill-attention-backend trtllm_mla
Defensive patterns
Strategy: validation
Validate before calling
import torch assert torch.cuda.get_device_capability()[0] == 10 and torch.cuda.get_device_capability()[1] == 0, "cutedsl_mla requires SM100"
Prevention
- Note cutedsl_mla is SM100-only, stricter than other Blackwell checks
When it happens
Trigger: Setting --prefill-attention-backend cutedsl_mla on a GPU without SM100 compute capability (H100, A100, or SM120-class parts).
Common situations: Enabling cutedsl_mla for DeepSeek prefill on a mixed cluster where some nodes are Hopper; note this check is stricter than the TRTLLM one (SM100 only, not SM12x).
Related errors
- CuteDSL MLA backend only supports kv-cache-dtype of…
- tokenspeed_mla backend is only supported on Blackwell GPUs…
- Currently only attention backends are supported for…
- cutedsl_mla backend can only be used with MLA models.
- DFLASH speculative decoding only supports CUDA and NPU…
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/bcb79228700f4cda.
Report an issue: GitHub.
Appendix: source
Thrown at python/sglang/srt/arg_groups/overrides.py:2541
@register_post_process
def _cutedsl_prefill_backend_fill(view: Any) -> dict:
"""Slot pass in the attention-backend compatibility handler: CuteDSL MLA
is decode-only, so validate the combination and default the prefill side
to trtllm_mla. The trtllm_mha check that follows at the legacy slot reads
the resolved value through the view."""
if not (
view.attention_backend == "cutedsl_mla"
or view.decode_attention_backend == "cutedsl_mla"
or view.prefill_attention_backend == "cutedsl_mla"
):
return {}
assert (
view.prefill_attention_backend != "cutedsl_mla"
), "CuteDSL MLA only supports decoding for now"
if not is_sm100_supported():
raise ValueError(
"CuteDSL MLA backend is only supported on Blackwell GPUs (SM100). Please use a different backend."
)
if view.kv_cache_dtype not in [
"fp8_e4m3",
"bf16",
"bfloat16",
"auto",
]:
raise ValueError(
"CuteDSL MLA backend only supports kv-cache-dtype of fp8_e4m3, bf16, or auto."
)
if view.prefill_attention_backend is None:
return {"prefill_attention_backend": "trtllm_mla"}
return {}
@register_post_process
def _attention_backend_fa3_fp8_fallback(view: Any) -> dict:View on GitHub (pinned to 0132848349)