vllm - ✅(Solved) Fix [Bug]: No sm_121 (Blackwell) support on aarch64 — NVIDIA DGX Spark / Acer GN100 [4 pull requests, 5 comments, 5 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
vllm-project/vllm#36821Fetched 2026-04-08 00:34:28
View on GitHub
Comments
5
Participants
5
Timeline
16
Reactions
3
Timeline (top)
commented ×5cross-referenced ×5subscribed ×4labeled ×1

Error Message

Error behavior

Root Cause

vLLM fails to start on NVIDIA DGX Spark (GB10 Blackwell, sm_121) because the bundled PyTorch binary only includes compiled CUDA kernels through sm_120. The GPU is detected but no compatible kernels exist for the actual compute capability.

Fix Action

Fix / Workaround

This is a build-time issue — the shipped .so files lack sm_121 targets. Runtime workarounds (TORCH_CUDA_ARCH_LIST, LD_LIBRARY_PATH compat libs) have no effect on prebuilt binaries.

Workaround

PR fix notes

PR #174065: Avoid wrong transform when auto-detecting cuda arch in cmake for SM121

Description (problem / solution / changelog)

current implementation of CUDA_DETECT_INSTALLED_GPUS will transform all cuda arch code 12.1 to 12.1(2.0), which will eventually feed a wrong argument -gencode;arch=compute_20,code=sm_121 to nvcc.

Changed files

  • cmake/Modules_CUDA_fix/upstream/FindCUDA/select_compute_arch.cmake (modified, +1/-1)

PR #173754: [NVIDIA] DGX Spark: Fix wrong computing capabilities replacement in cmake

Description (problem / solution / changelog)

Nvidia DGX Spark [0] has computing-cap = 12.1, however, due to an incorrect replacement (2.1 -> 2.1(2.0)), 12.1 has been replaced with 12.1(2.0), which will incorrectly set the nvcc parameter:

$ nvcc ... -gencode arch=compute_20,code=sm_121
nvcc fatal   : Unsupported gpu architecture 'compute_20'

[0] https://docs.nvidia.com/dgx/dgx-spark/

Changed files

  • cmake/Modules_CUDA_fix/upstream/FindCUDA/select_compute_arch.cmake (modified, +2/-1)

PR #38484: [Build] Add SM121 (DGX Spark / GB10) to published build targets

Description (problem / solution / changelog)

Summary

  • Add compute capability 12.1 (SM121) to TORCH_CUDA_ARCH_LIST in all build configurations: release wheel CI, Dockerfile, docker-bake.hcl, versions.json, and FlashInfer AOT build
  • CMakeLists.txt already lists 12.1 in CUDA_SUPPORTED_ARCHS for CUDA 12.8+ and 13.0+, and all kernel-specific arch lists (CUTLASS, Marlin FP8, MoE, NVFP4) already include 12.1 — but the build scripts never passed 12.1 in TORCH_CUDA_ARCH_LIST, so the intersection filtering excluded it from all published artifacts
  • This is the minimal change needed so that published wheels and Docker images include SM121 kernels for DGX Spark / GB10 users out of the box

Context

The NVIDIA GB10 GPU in DGX Spark reports compute capability 12.1 (SM121). Without native kernels in published builds, users must either build from source or rely on PTX JIT compilation via the 12.0+PTX forward-compat path (slower first-run, no guarantee of correctness for all kernels).

Upstream PyTorch fix: The CMake auto-detection bug that corrupts 12.112.1(2.0) when building PyTorch from source on SM121 hardware has fixes in review: pytorch/pytorch#174065 and pytorch/pytorch#173754. I independently reproduced and verified both fixes on DGX Spark hardware (see comments on those PRs). PyTorch cu130 aarch64 nightly wheels already ship with 12.0+PTX which covers SM121 via JIT.

Relationship to existing PRs: #31740 includes these build config changes among 27 files of broader SM121 platform support, but has been CONFLICTING since January. This PR extracts just the build target additions — 5 files, 6 lines changed — to unblock SM121 in published artifacts independently.

Addresses #36821.

Test evidence

Tested on NVIDIA DGX Spark:

ComponentValue
GPUNVIDIA GB10
Compute capability12.1 (SM121)
Architectureaarch64
OSUbuntu 24.04.4 LTS
CUDA13.0, V13.0.88
Driver590.48.01

Confirmed that CMakeLists.txt already supports 12.1 in CUDA_SUPPORTED_ARCHS and all kernel-specific arch lists (SCALED_MM_ARCHS, FP4_ARCHS, MLA_ARCHS, CUTLASS_MOE_DATA_ARCHS, MARLIN_FP8_ARCHS, MARLIN_MOE_FP8_ARCHS). The only gap was the TORCH_CUDA_ARCH_LIST in build scripts.

Files changed

FileChange
.github/workflows/scripts/build.shAdd 10.0 12.0 12.1+PTX to release wheel arch list
docker/DockerfileAdd 12.1 to both torch_cuda_arch_list ARGs (lines 191, 804)
docker/docker-bake.hclAdd 12.0 12.1 to default arch list
docker/versions.jsonMatch Dockerfile ARG update
tools/flashinfer-build.shAdd 12.1 to CUDA 13.0+ FlashInfer AOT arch list

Test plan

  • Verify docker buildx bake --print shows 12.1 in resolved torch_cuda_arch_list
  • Verify wheel build with CUDA 13.0 includes SM121 kernels (cuobjdump check)
  • Run vLLM inference on DGX Spark with published image (no --enforce-eager needed)

Changed files

  • .github/workflows/scripts/build.sh (modified, +1/-1)
  • docker/Dockerfile (modified, +2/-2)
  • docker/docker-bake.hcl (modified, +1/-1)
  • docker/versions.json (modified, +1/-1)
  • tools/flashinfer-build.sh (modified, +1/-1)

Code Example

Your output of `python collect_env.py` here
RAW_BUFFERClick to expand / collapse

Your current environment

<details>**System Info** - GPU: NVIDIA GB10 Grace Blackwell Superchip (sm_121) - Architecture: aarch64 (ARM v9.2-A) - CUDA: 13.0 - OS: NVIDIA DGX OS (Ubuntu 24.04 base) - RAM: 128 GB LPDDR5x unified memory (CPU + GPU shared pool) - Device: NVIDIA DGX Spark / Acer Veriton GN100 - vLLM image tested: avarok/vllm-dgx-spark:v11

Describe the issue

vLLM fails to start on NVIDIA DGX Spark (GB10 Blackwell, sm_121) because the bundled PyTorch binary only includes compiled CUDA kernels through sm_120. The GPU is detected but no compatible kernels exist for the actual compute capability.

This is a build-time issue — the shipped .so files lack sm_121 targets. Runtime workarounds (TORCH_CUDA_ARCH_LIST, LD_LIBRARY_PATH compat libs) have no effect on prebuilt binaries.

Error behavior

vLLM crashes at startup during CUDA kernel initialization. PyTorch reports supported architectures up to sm_120 but the GPU requires sm_121.

Expected behavior

vLLM should support sm_121 (Blackwell) on aarch64, either via:

  1. Official PyTorch wheels built with sm_121 + aarch64 targets
  2. vLLM Docker images compiled against sm_121-capable PyTorch
  3. Documentation of the supported build path for DGX Spark users

Context

The NVIDIA DGX Spark (and its OEM variant Acer Veriton GN100) is shipping to customers now. It is an ARM64-only device with 128 GB unified memory and sm_121 Blackwell GPU. This is becoming a common edge AI inference platform. Currently the only working local LLM serving option on this hardware is Ollama (which ships its own llama.cpp backend with Blackwell support).

Workaround

Use Ollama for inference. vLLM is not functional on this hardware with any available container image.

Additional context

  • PyTorch nightly may have sm_121 support but no official aarch64 + cu130 wheels are published yet
  • NVIDIA NIM containers may work but are model-limited and require enterprise licensing
  • Community image avarok/vllm-dgx-spark:v11 was the closest attempt but its PyTorch build stops at sm_120
<summary>The output of <code>python collect_env.py</code></summary>
Your output of `python collect_env.py` here
</details>

🐛 Describe the bug

vLLM's prebuilt container ships PyTorch binaries compiled with CUDA kernels for GPU architectures up to sm_120. The DGX Spark's Blackwell GPU requires sm_121. Since there are no matching kernels in the binary, vLLM crashes at startup. It's a compile-time gap — the fix has to come from rebuilding PyTorch and vLLM with sm_121 targets, not from runtime configuration.

Before submitting a new issue...

  • Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.

extent analysis

Fix Plan

To resolve the issue, we need to rebuild PyTorch and vLLM with sm_121 targets. Here are the steps:

  • Step 1: Install dependencies
    • Install CUDA 13.0 and cuDNN for aarch64
    • Install PyTorch nightly with sm_121 support
  • Step 2: Rebuild PyTorch
    • Clone the PyTorch repository and checkout the latest branch
    • Configure the build with sm_121 targets using TORCH_CUDA_ARCH_LIST=8.1
    • Build PyTorch using python setup.py build
  • Step 3: Rebuild vLLM
    • Clone the vLLM repository and checkout the latest branch
    • Update the PyTorch dependency to the rebuilt version
    • Build vLLM using docker build -t vllm-dgx-spark:v12 .
  • Example Code
    • Configure PyTorch build with sm_121 targets:

TORCH_CUDA_ARCH_LIST=8.1 python setup.py build

  * Update vLLM Dockerfile to use the rebuilt PyTorch:
    ```dockerfile
FROM pytorch/pytorch:latest

# Update PyTorch dependency
RUN pip install --force-reinstall /path/to/rebuilt/pytorch.whl

# Build vLLM
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt

Verification

To verify that the fix worked, run the rebuilt vLLM container on the DGX Spark device and check that it starts successfully without crashing during CUDA kernel initialization.

Extra Tips

  • Make sure to use the correct CUDA and cuDNN versions for the DGX Spark device
  • Consider publishing the rebuilt PyTorch and vLLM images for the community to use
  • Keep an eye on the official PyTorch wheels and vLLM Docker images for future updates with sm_121 support.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

vllm - ✅(Solved) Fix [Bug]: No sm_121 (Blackwell) support on aarch64 — NVIDIA DGX Spark / Acer GN100 [4 pull requests, 5 comments, 5 participants]