diff --git a/cmake/external_projects/qutlass.cmake b/cmake/external_projects/qutlass.cmake index 29c5c6528b..44b82f6be9 100644 --- a/cmake/external_projects/qutlass.cmake +++ b/cmake/external_projects/qutlass.cmake @@ -22,7 +22,7 @@ if(QUTLASS_SRC_DIR) set(qutlass_BINARY_DIR "${CMAKE_BINARY_DIR}/qutlass-binary-dir-unused") else() set(_QUTLASS_UPSTREAM_REPO "https://github.com/IST-DASLab/qutlass.git") - set(_QUTLASS_UPSTREAM_TAG "830d2c4537c7396e14a02a46fbddd18b5d107c65") + set(_QUTLASS_UPSTREAM_TAG "e74319e3405ce6d71965732880f5dc1f52371f64") set(_qutlass_fc_root "${FETCHCONTENT_BASE_DIR}") if(NOT _qutlass_fc_root) @@ -125,8 +125,6 @@ if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL 12.8 AND QUTLASS_ARCHS) CUDA_ARCHS "${QUTLASS_ARCHS}" ) - # QuTLASS uses legacy ATen headers and cannot be built with TORCH_TARGET_VERSION. - # Keep it as its own extension (registers torch.ops._qutlass_C). define_extension_target( _qutlass_C DESTINATION vllm @@ -139,9 +137,11 @@ if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL 12.8 AND QUTLASS_ARCHS) WITH_SOABI) target_compile_definitions(_qutlass_C PRIVATE - QUTLASS_DISABLE_PYBIND=1 + QUTLASS_MINIMAL_BUILD=1 TARGET_CUDA_ARCH=${QUTLASS_TARGET_CC} - CUTLASS_ENABLE_DIRECT_CUDA_DRIVER_CALL=1) + CUTLASS_ENABLE_DIRECT_CUDA_DRIVER_CALL=1 + TORCH_TARGET_VERSION=0x020B000000000000ULL + USE_CUDA) set_property(SOURCE ${QUTLASS_SOURCES} APPEND PROPERTY COMPILE_OPTIONS $<$:--expt-relaxed-constexpr --use_fast_math -O3> diff --git a/vllm/_custom_ops.py b/vllm/_custom_ops.py index 588e0fc654..df57bc0f77 100644 --- a/vllm/_custom_ops.py +++ b/vllm/_custom_ops.py @@ -3863,10 +3863,10 @@ def fusedQuantizeMx( raise ValueError(f"invalid method {method!r}, must be 'quest' or 'abs_max'") -if hasattr(torch.ops._qutlass_C, "fusedQuantizeNv"): +if hasattr(torch.ops._qutlass_C, "fusedQuantizeNvAbsMax"): - @register_fake("_qutlass_C::fusedQuantizeNv") - def _fake_fused_quantize_nv( + @register_fake("_qutlass_C::fusedQuantizeNvAbsMax") + def _fake_fused_quantize_nv_absmax( a: torch.Tensor, b: torch.Tensor, xh_e2m1: torch.Tensor, @@ -3892,7 +3892,9 @@ def fusedQuantizeNv( padded_rows, padded_cols, dtype=torch.float8_e4m3fn, device=a.device ) - return torch.ops._qutlass_C.fusedQuantizeNv(a, b, xh_e2m1, xh_e4m3, global_scale) + return torch.ops._qutlass_C.fusedQuantizeNvAbsMax( + a, b, xh_e2m1, xh_e4m3, global_scale + ) def hadacore_transform(x: torch.Tensor, inplace: bool = True) -> torch.Tensor: