2025-05-08 17:09:55 -05:00
|
|
|
#include "c3x/scaled_mm_helper.hpp"
|
2025-01-30 21:33:00 -05:00
|
|
|
#include "c3x/scaled_mm_kernels.hpp"
|
2024-05-31 20:21:38 -04:00
|
|
|
|
2024-05-16 18:32:50 -04:00
|
|
|
/*
|
2024-06-13 14:22:19 -04:00
|
|
|
This file defines quantized GEMM operations using the CUTLASS 3.x API, for
|
2025-03-08 03:11:56 -05:00
|
|
|
NVIDIA GPUs with sm90a (Hopper).
|
2024-05-16 18:32:50 -04:00
|
|
|
*/
|
|
|
|
|
|
2025-03-08 03:11:56 -05:00
|
|
|
#if defined ENABLE_SCALED_MM_SM90 && ENABLE_SCALED_MM_SM90
|
|
|
|
|
|
2024-06-26 11:16:00 -04:00
|
|
|
void cutlass_scaled_mm_sm90(torch::Tensor& c, torch::Tensor const& a,
|
|
|
|
|
torch::Tensor const& b,
|
|
|
|
|
torch::Tensor const& a_scales,
|
|
|
|
|
torch::Tensor const& b_scales,
|
2025-01-04 17:20:34 -08:00
|
|
|
std::optional<torch::Tensor> const& bias) {
|
2025-05-08 17:09:55 -05:00
|
|
|
dispatch_scaled_mm(c, a, b, a_scales, b_scales, bias,
|
|
|
|
|
vllm::cutlass_scaled_mm_sm90_fp8,
|
|
|
|
|
vllm::cutlass_scaled_mm_sm90_int8,
|
|
|
|
|
vllm::cutlass_scaled_mm_blockwise_sm90_fp8);
|
2024-06-26 11:16:00 -04:00
|
|
|
}
|
|
|
|
|
|
2024-08-06 14:17:08 -04:00
|
|
|
void cutlass_scaled_mm_azp_sm90(torch::Tensor& out, torch::Tensor const& a,
|
|
|
|
|
torch::Tensor const& b,
|
|
|
|
|
torch::Tensor const& a_scales,
|
|
|
|
|
torch::Tensor const& b_scales,
|
|
|
|
|
torch::Tensor const& azp_adj,
|
2025-01-04 17:20:34 -08:00
|
|
|
std::optional<torch::Tensor> const& azp,
|
|
|
|
|
std::optional<torch::Tensor> const& bias) {
|
2024-08-06 14:17:08 -04:00
|
|
|
TORCH_CHECK(a_scales.dtype() == torch::kFloat32);
|
|
|
|
|
TORCH_CHECK(b_scales.dtype() == torch::kFloat32);
|
|
|
|
|
|
2025-01-30 21:33:00 -05:00
|
|
|
vllm::cutlass_scaled_mm_azp_sm90_int8(out, a, b, a_scales, b_scales, azp_adj,
|
|
|
|
|
azp, bias);
|
2024-08-06 14:17:08 -04:00
|
|
|
}
|
2025-03-04 07:55:07 -08:00
|
|
|
|
|
|
|
|
#endif
|