A high-throughput and memory-efficient inference and serving engine for LLMs
[Bugfix] Restrict FlashInfer cuDNN FP8 ViT attention gate to Blackwell (SM 100) (#45251)
Signed-off-by: Wentian Byte <3400259131@qq.com>
wentian-byte committed
Jun 12, 2026 at 00:39 UTC
b8142294b7e757f3a39729c4f400bafaed534681
2 files changed
+14
-6
vllm/model_executor/layers/attention/mm_encoder_attention.py
+3
-2
@@ -396,8 +396,9 @@ class MMEncoderAttention(CustomOp):
396
if not is_flashinfer_cudnn_fp8_prefill_attn_supported():
397
raise ValueError(
398
"mm_encoder_attn_dtype='fp8' requires the FlashInfer "
399
- "cuDNN backend with cuDNN >= 9.17.1 on a GPU with native "
400
- "FP8 support."
399
+ "cuDNN backend with cuDNN >= 9.17.1 on Blackwell (SM 100) "
400
+ "or newer. cuDNN's FP8 SDPA path with bf16/fp16 output is "
401
+ "not available on Hopper (H100/H200) or earlier."
402
)
403
404
self.fp8_enabled = True
vllm/utils/flashinfer.py
+11
-4
@@ -934,20 +934,27 @@ def should_use_flashinfer_for_blockscale_fp8_gemm(
934
return should_use_flashinfer
935
936
937
-_MIN_CUDNN_FP8 = 91701 # cuDNN >= 9.17.1 required for FP8 attention
937
+_MIN_CUDNN_FP8 = 91701 # cuDNN >= 9.17.1 required for FP8 ViT attention
938
939
940
@functools.cache
941
def is_flashinfer_cudnn_fp8_prefill_attn_supported() -> bool:
942
"""Check if FP8 ViT attention is supported on this platform.
943
944
- Requires native FP8 hardware support, the FlashInfer cuDNN backend,
944
+ Requires Blackwell (SM 100) or newer, the FlashInfer cuDNN backend,
945
and cuDNN >= 9.17.1.
946
+
947
+ cuDNN's FP8 SDPA forward path with bf16/fp16 output (used by
948
+ ``MMEncoderAttention._forward_flashinfer``) gates internally on
949
+ ``prop.major >= 10``; on Hopper it raises a misleading
950
+ ``cudnnGraphNotSupportedError: ... cuDNN version 9.13.0 and newer``
951
+ even when the installed cuDNN is new enough. See PR #38065 for the
952
+ original Blackwell-only design intent.
953
"""
954
from vllm.v1.attention.backends.registry import AttentionBackendEnum
955
949
- # cuDNN SDPA FP8 requires Hopper (SM 90) or newer.
950
- if not current_platform.has_device_capability(90):
956
+ # cuDNN SDPA FP8 with bf16/fp16 output requires Blackwell (SM 100) or newer.
957
+ if not current_platform.has_device_capability(100):
958
return False
959
960
try: