sgl-project/sglang · error · ValueError

Unsupported compute capability: {major}.{minor}

Error message

Unsupported compute capability: {major}.{minor}

What it means

get_arch_constraints maps GPU compute capability to (min SMs per partition, alignment multiple): CC 7.x->(2,2), 8.x->(4,2), 9.x (Hopper)->(8,8). Anything else (e.g. Blackwell 10.x, or old 6.x) has no validated constraints and is rejected.

Source

Thrown at python/sglang/srt/multiplex/pdmux_context.py:67

        manual_divisions=manual_divisions,
        split_forward_token_budget=raw.get("split_forward_token_budget", 65536),
        decode_bs_divisor=raw.get("decode_bs_divisor", 36),
    )


def get_arch_constraints(compute_capability):
    major, minor = compute_capability
    # green context constraints for different architectures
    if major == 6:
        return 1, 1  # min_per_part, multiple
    elif major == 7:
        return 2, 2
    elif major == 8:
        return 4, 2
    elif major == 9 and minor >= 0:
        return 8, 8
    else:
        raise ValueError(f"Unsupported compute capability: {major}.{minor}")


def divide_sm(total_sms, compute_capability, groups):
    """
    :param total_sms: total sm count on a single GPU
    :param compute_capability: (major, minor)
    :return: SM partition group(prefill sm, decode sm)
    """
    min_per_part, multiple = get_arch_constraints(compute_capability)
    possible_values = [
        x
        for x in range(min_per_part, total_sms - min_per_part + 1, multiple)
        if x >= total_sms - x and total_sms - x >= 16
    ]
    if not possible_values:
        raise ValueError(
            f"No valid partitions found for total SMs {total_sms} "
            f"with constraints (min per part: {min_per_part}, multiple: {multiple})"

View on GitHub (pinned to 0132848349)

Solutions

  1. Disable PD multiplexing (don't init_pdmux) on unsupported GPUs
  2. Upgrade sglang to a version with constraints for your architecture (check release notes/changelog)
  3. If experimental, patch get_arch_constraints with a validated (min, multiple) pair for your CC and report upstream
Defensive patterns

Strategy: fallback

Validate before calling

major, _ = torch.cuda.get_device_capability()
assert major in (7, 8, 9), 'pdmux unsupported on this GPU architecture'

Type guard

def pdmux_supported(device) -> bool:
    return device.major in (7, 8, 9) if device else False

Prevention

When it happens

Trigger: Running PD multiplexing on a GPU with compute capability outside 7/8/9 — e.g. a Blackwell B100/B200 (CC 10.0) or a pre-Volta card.

Common situations: Trying the new pdmux feature on newly released hardware before sglang adds a constraints entry; misreported capability from a patched driver/CUDA.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/6d233a3659328c70. Report an issue: GitHub.