[XPU] Route grouped_topk to the fused _moe_C kernel on XPU (#53580)
Signed-off-by: Marceli Fylcek <marceli.fylcek@intel.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7dbe386833
commit
9b85112e13
+22
-2
@@ -2500,9 +2500,9 @@ def grouped_topk(
|
||||
bias: Bias tensor (e_score_correction_bias). Always fused in kernel.
|
||||
scoring_func: 0=none (no activation), 1=sigmoid
|
||||
"""
|
||||
if not current_platform.is_cuda():
|
||||
if not (current_platform.is_cuda() or current_platform.is_xpu()):
|
||||
raise NotImplementedError(
|
||||
"The fused grouped_topk kernel is only available on CUDA platforms"
|
||||
"The fused grouped_topk kernel is only available on CUDA and XPU platforms"
|
||||
)
|
||||
return torch.ops._moe_C.grouped_topk(
|
||||
scores,
|
||||
@@ -2516,6 +2516,26 @@ def grouped_topk(
|
||||
)
|
||||
|
||||
|
||||
if hasattr(torch.ops, "_moe_C") and hasattr(torch.ops._moe_C, "grouped_topk"):
|
||||
|
||||
@register_fake("_moe_C::grouped_topk")
|
||||
def _grouped_topk_fake(
|
||||
scores: torch.Tensor,
|
||||
num_expert_group: int,
|
||||
topk_group: int,
|
||||
topk: int,
|
||||
renormalize: bool,
|
||||
routed_scaling_factor: float,
|
||||
bias: torch.Tensor,
|
||||
scoring_func: int = 0,
|
||||
) -> tuple[torch.Tensor, torch.Tensor]:
|
||||
num_tokens = scores.size(0)
|
||||
return (
|
||||
scores.new_empty((num_tokens, topk), dtype=torch.float32),
|
||||
scores.new_empty((num_tokens, topk), dtype=torch.int32),
|
||||
)
|
||||
|
||||
|
||||
def moe_wna16_marlin_gemm(
|
||||
input: torch.Tensor,
|
||||
output: torch.Tensor | None,
|
||||
|
||||
@@ -90,7 +90,7 @@ def grouped_topk(
|
||||
) -> tuple[torch.Tensor, torch.Tensor]:
|
||||
if (
|
||||
envs.VLLM_USE_FUSED_MOE_GROUPED_TOPK
|
||||
and current_platform.is_cuda()
|
||||
and (current_platform.is_cuda() or current_platform.is_xpu())
|
||||
and num_expert_group <= 32
|
||||
and topk <= 32
|
||||
and e_score_correction_bias is not None
|
||||
|
||||
Reference in New Issue
Block a user