Update qutlass cmake for stable abi (#47879)
Signed-off-by: Chris Leonard <chleonar@redhat.com>
Chris Leonard committed
Jul 20, 2026 at 21:31 UTC
97a98006b0895bc3d488ec19e898f56c777150b6
2 files changed
+11
-9
cmake/external_projects/qutlass.cmake
+5
-5
@@ -22,7 +22,7 @@ if(QUTLASS_SRC_DIR)
22
set(qutlass_BINARY_DIR "${CMAKE_BINARY_DIR}/qutlass-binary-dir-unused")
23
else()
24
set(_QUTLASS_UPSTREAM_REPO "https://github.com/IST-DASLab/qutlass.git")
25
- set(_QUTLASS_UPSTREAM_TAG "830d2c4537c7396e14a02a46fbddd18b5d107c65")
25
+ set(_QUTLASS_UPSTREAM_TAG "e74319e3405ce6d71965732880f5dc1f52371f64")
26
27
set(_qutlass_fc_root "${FETCHCONTENT_BASE_DIR}")
28
if(NOT _qutlass_fc_root)
@@ -125,8 +125,6 @@ if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL 12.8 AND QUTLASS_ARCHS)
125
CUDA_ARCHS "${QUTLASS_ARCHS}"
126
)
127
128
- # QuTLASS uses legacy ATen headers and cannot be built with TORCH_TARGET_VERSION.
129
- # Keep it as its own extension (registers torch.ops._qutlass_C).
128
define_extension_target(
129
_qutlass_C
130
DESTINATION vllm
@@ -139,9 +137,11 @@ if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL 12.8 AND QUTLASS_ARCHS)
137
WITH_SOABI)
138
139
target_compile_definitions(_qutlass_C PRIVATE
142
- QUTLASS_DISABLE_PYBIND=1
140
+ QUTLASS_MINIMAL_BUILD=1
141
TARGET_CUDA_ARCH=${QUTLASS_TARGET_CC}
144
- CUTLASS_ENABLE_DIRECT_CUDA_DRIVER_CALL=1)
142
+ CUTLASS_ENABLE_DIRECT_CUDA_DRIVER_CALL=1
143
+ TORCH_TARGET_VERSION=0x020B000000000000ULL
144
+ USE_CUDA)
145
146
set_property(SOURCE ${QUTLASS_SOURCES} APPEND PROPERTY COMPILE_OPTIONS
147
$<$<COMPILE_LANGUAGE:CUDA>:--expt-relaxed-constexpr --use_fast_math -O3>
vllm/_custom_ops.py
+6
-4
@@ -3863,10 +3863,10 @@ def fusedQuantizeMx(
3863
raise ValueError(f"invalid method {method!r}, must be 'quest' or 'abs_max'")
3864
3865
3866
-if hasattr(torch.ops._qutlass_C, "fusedQuantizeNv"):
3866
+if hasattr(torch.ops._qutlass_C, "fusedQuantizeNvAbsMax"):
3867
3868
- @register_fake("_qutlass_C::fusedQuantizeNv")
3869
- def _fake_fused_quantize_nv(
3868
+ @register_fake("_qutlass_C::fusedQuantizeNvAbsMax")
3869
+ def _fake_fused_quantize_nv_absmax(
3870
a: torch.Tensor,
3871
b: torch.Tensor,
3872
xh_e2m1: torch.Tensor,
@@ -3892,7 +3892,9 @@ def fusedQuantizeNv(
3892
padded_rows, padded_cols, dtype=torch.float8_e4m3fn, device=a.device
3893
)
3894
3895
- return torch.ops._qutlass_C.fusedQuantizeNv(a, b, xh_e2m1, xh_e4m3, global_scale)
3895
+ return torch.ops._qutlass_C.fusedQuantizeNvAbsMax(
3896
+ a, b, xh_e2m1, xh_e4m3, global_scale
3897
+ )
3898
3899
3900
def hadacore_transform(x: torch.Tensor, inplace: bool = True) -> torch.Tensor: