Skip to content

[Bug]: FlashInfer sampler JIT fails on Blackwell SM120f with CUDA 13.3: CUDA compiler and toolkit headers are incompatible #44305

Description

@yzhbradoodrrpurp

Your current environment

--2026-06-02 17:33:54-- https://raw.githubusercontent.com/vllm-project/vllm/main/vllm/collect_env.py
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.111.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response...

🐛 Describe the bug

Description

I hit a FlashInfer sampler JIT compilation failure when launching vLLM with a Qwen3.5 model on NVIDIA RTX PRO 6000 Blackwell GPUs.

The model can be loaded by Transformers and vLLM can create the engine config successfully. vLLM also starts and responds correctly if I disable FlashInfer sampler with:

VLLM_USE_FLASHINFER_SAMPLER=0

However, when FlashInfer sampler is enabled, vLLM fails during startup while running the dummy sampler/profile stage. The failure happens in FlashInfer JIT compilation for cached_ops/sampling.

Environment

GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition
Architecture: SM120f / compute_120f
Python: 3.12.13
PyTorch: 2.11.0+cu130
torch.version.cuda: 13.0
vLLM: 0.22.1rc1.dev58+g68dafcca7
Transformers: 5.9.0
FlashInfer: 0.6.12.dev20260602
flashinfer-cubin: 0.6.12.dev20260602
flashinfer-jit-cache: Not installed
CUDA_HOME: /root/miniconda3/envs/verl/lib/python3.12/site-packages/nvidia/cu13
CUDA_VERSION: 13.3
FLASHINFER_CUDA_VERSION: 13.3
NVCC: 13.3.33
FLASHINFER_CUDA_ARCH_LIST: {(12, '0f')}

python -m flashinfer show-config reports:

FlashInfer version: 0.6.12.dev20260602
flashinfer-cubin version: 0.6.12.dev20260602
flashinfer-jit-cache: Not installed
Torch version: 2.11.0+cu130
CUDA runtime available: Yes
FLASHINFER_CUDA_ARCH_LIST: {(12, '0f')}
FLASHINFER_CUDA_VERSION: 13.3
CUDA_VERSION: 13.3
CUDA_HOME: /root/miniconda3/envs/verl/lib/python3.12/site-packages/nvidia/cu13
NVCC found: Yes

Reproduction

Launch vLLM with FlashInfer sampler enabled:

python -m vllm.entrypoints.openai.api_server \
  --model /root/autodl-tmp/models/Qwen3.5-4B \
  --tokenizer /root/autodl-tmp/models/Qwen3.5-4B \
  --tensor-parallel-size 1 \
  --max-model-len 32768 \
  --gpu-memory-utilization 0.4 \
  --enforce-eager \
  --port 8008

vLLM fails during startup.

If I disable FlashInfer sampler:

VLLM_USE_FLASHINFER_SAMPLER=0 \
python -m vllm.entrypoints.openai.api_server \
  --model /root/autodl-tmp/models/Qwen3.5-4B \
  --tokenizer /root/autodl-tmp/models/Qwen3.5-4B \
  --tensor-parallel-size 1 \
  --max-model-len 32768 \
  --gpu-memory-utilization 0.4 \
  --enforce-eager \
  --port 8008

the server starts successfully and /v1/chat/completions works.

Error

The failure happens while compiling FlashInfer sampling JIT ops:

subprocess.CalledProcessError: Command '['ninja', '-v', '-C',
'/root/.cache/flashinfer/0.6.12.dev20260602/120f/cached_ops/sampling',
'-f',
'/root/.cache/flashinfer/0.6.12.dev20260602/120f/cached_ops/sampling/build.ninja']'
returned non-zero exit status 1.

Manually running ninja shows:

FAILED: /root/.cache/flashinfer/0.6.12.dev20260602/120f/cached_ops/sampling/csrc_renorm.cuda.o

/root/miniconda3/envs/verl/lib/python3.12/site-packages/nvidia/cu13/bin/nvcc
...
-gencode=arch=compute_120f,code=sm_120f
...
-c /root/miniconda3/envs/verl/lib/python3.12/site-packages/flashinfer/data/csrc/renorm.cu
-o /root/.cache/flashinfer/0.6.12.dev20260602/120f/cached_ops/sampling/csrc_renorm.cuda.o

In file included from
/root/miniconda3/envs/verl/lib/python3.12/site-packages/flashinfer/data/cccl/libcudacxx/include/cuda/std/__cccl/extended_data_types.h:26,
...
/root/miniconda3/envs/verl/lib/python3.12/site-packages/flashinfer/data/cccl/libcudacxx/include/cuda/std/__cccl/cuda_toolkit.h:41:8:
error: #error "CUDA compiler and CUDA toolkit headers are incompatible, please check your include paths"
   41 | #      error "CUDA compiler and CUDA toolkit headers are incompatible, please check your include paths"
      |        ^~~~~

ninja: build stopped: subcommand failed.

Expected Behavior

FlashInfer sampler JIT should compile successfully for Blackwell SM120f with CUDA 13.3, or the wheel should provide compatible cached sampling kernels for this environment.

Additional notes

Before setting CUDA 13.3 paths correctly, flashinfer show-config reported CUDA 12.8 and printed:

Failed to get device capability: SM 12.x requires CUDA >= 12.9

After exporting CUDA 13.3 paths, that issue disappeared:

export CUDA_HOME=/root/miniconda3/envs/verl/lib/python3.12/site-packages/nvidia/cu13
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib:$LD_LIBRARY_PATH

But the sampler JIT still fails with the CCCL/libcudacxx header compatibility error above.

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions