{"record":{"id":"6d233a3659328c70","repo":"sgl-project/sglang","slug":"unsupported-compute-capability-major-minor","errorCode":null,"errorMessage":"Unsupported compute capability: {major}.{minor}","messagePattern":"Unsupported compute capability: (.+?)\\.(.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/multiplex/pdmux_context.py","lineNumber":67,"sourceCode":"        manual_divisions=manual_divisions,\n        split_forward_token_budget=raw.get(\"split_forward_token_budget\", 65536),\n        decode_bs_divisor=raw.get(\"decode_bs_divisor\", 36),\n    )\n\n\ndef get_arch_constraints(compute_capability):\n    major, minor = compute_capability\n    # green context constraints for different architectures\n    if major == 6:\n        return 1, 1  # min_per_part, multiple\n    elif major == 7:\n        return 2, 2\n    elif major == 8:\n        return 4, 2\n    elif major == 9 and minor >= 0:\n        return 8, 8\n    else:\n        raise ValueError(f\"Unsupported compute capability: {major}.{minor}\")\n\n\ndef divide_sm(total_sms, compute_capability, groups):\n    \"\"\"\n    :param total_sms: total sm count on a single GPU\n    :param compute_capability: (major, minor)\n    :return: SM partition group(prefill sm, decode sm)\n    \"\"\"\n    min_per_part, multiple = get_arch_constraints(compute_capability)\n    possible_values = [\n        x\n        for x in range(min_per_part, total_sms - min_per_part + 1, multiple)\n        if x >= total_sms - x and total_sms - x >= 16\n    ]\n    if not possible_values:\n        raise ValueError(\n            f\"No valid partitions found for total SMs {total_sms} \"\n            f\"with constraints (min per part: {min_per_part}, multiple: {multiple})\"","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/multiplex/pdmux_context.py#L49-L85","documentation":"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.","triggerScenarios":"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.","commonSituations":"Trying the new pdmux feature on newly released hardware before sglang adds a constraints entry; misreported capability from a patched driver/CUDA.","solutions":["Disable PD multiplexing (don't init_pdmux) on unsupported GPUs","Upgrade sglang to a version with constraints for your architecture (check release notes/changelog)","If experimental, patch get_arch_constraints with a validated (min, multiple) pair for your CC and report upstream"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"major, _ = torch.cuda.get_device_capability()\nassert major in (7, 8, 9), 'pdmux unsupported on this GPU architecture'","typeGuard":"def pdmux_supported(device) -> bool:\n    return device.major in (7, 8, 9) if device else False","tryCatchPattern":null,"preventionTips":["Gate pdmux activation on a compute-capability allowlist","Track sglang release notes for new-architecture support"],"tags":["pdmux","gpu-architecture","compatibility"],"backgroundTag":"unsupported-hardware","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}