Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
84255d3
[sgl-kernel] Add CuTe DSL GDN Decode Kernel
liz-badada Dec 22, 2025
e60d50c
fix
liz-badada Dec 24, 2025
c06e841
fix
liz-badada Dec 25, 2025
064d5eb
Merge branch 'main' into cutedsl_gdn
liz-badada Dec 25, 2025
d6e9b51
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 4, 2026
da82716
fix
liz-badada Jan 4, 2026
ed78dd0
move to jit_kernels
liz-badada Jan 4, 2026
73dd968
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 4, 2026
4cc4ae2
update
liz-badada Jan 4, 2026
5b814fd
fix
liz-badada Jan 4, 2026
42c50d8
fix
liz-badada Jan 4, 2026
2ad57f0
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 4, 2026
4a825b7
fix cute dsl version to 4.3.0
liz-badada Jan 5, 2026
f5ce9d3
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 5, 2026
027a6e1
update & fix
liz-badada Jan 5, 2026
f9ac9e2
fix
liz-badada Jan 5, 2026
ec3ee18
fix
liz-badada Jan 5, 2026
c2342a8
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 5, 2026
9621db7
back to old version 4.2.1
liz-badada Jan 6, 2026
f1bcb4d
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 6, 2026
110100b
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 6, 2026
ecbb098
code clean
liz-badada Jan 6, 2026
95ecaa3
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 7, 2026
740b0ae
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 7, 2026
169f82f
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 14, 2026
26e7eaf
update
liz-badada Jan 15, 2026
174ff72
update
liz-badada Jan 15, 2026
e6ad906
update
liz-badada Jan 15, 2026
5df3d34
update
liz-badada Jan 15, 2026
01e87c8
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 15, 2026
848ec60
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 16, 2026
b6d53f7
remove redundant check
liz-badada Jan 16, 2026
0d01cbe
Merge branch 'main' into cutedsl_gdn
liz-badada Jan 16, 2026
9b609fc
code clean
liz-badada Jan 16, 2026
4319186
code clean
liz-badada Jan 16, 2026
efb6366
code clean
liz-badada Jan 16, 2026
736e6c2
update
liz-badada Jan 17, 2026
a8d8b93
remove unnecessary code
liz-badada Jan 17, 2026
3cb0153
update
liz-badada Jan 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ dependencies = [
"msgspec",
"ninja",
"numpy",
"nvidia-cutlass-dsl==4.2.1",
"nvidia-cutlass-dsl>=4.3.0",
Comment thread
liz-badada marked this conversation as resolved.
Outdated
"nvidia-ml-py",
"openai-harmony==0.0.4",
"openai==2.6.1",
Expand Down
92 changes: 77 additions & 15 deletions python/sglang/srt/layers/attention/hybrid_linear_attn_backend.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import logging
import os
from typing import Optional, Union

import torch
Expand Down Expand Up @@ -38,6 +40,43 @@
from sglang.srt.speculative.spec_info import SpecInput
from sglang.srt.utils import is_cuda, is_npu

logger = logging.getLogger(__name__)

USE_CUTEDSL_GDN_DECODE = os.environ.get("SGLANG_USE_CUTEDSL_GDN_DECODE", "0") == "1"
Comment thread
liz-badada marked this conversation as resolved.
Outdated
_cutedsl_gdn_available = None
_cutedsl_fused_sigmoid_gating_delta_rule_update = None
_cutedsl_gdn_logged = False


def _check_cutedsl_gdn_available():
Comment thread
liz-badada marked this conversation as resolved.
Outdated
"""Check if CuTe DSL GDN kernel is available and import it."""
global _cutedsl_gdn_available, _cutedsl_fused_sigmoid_gating_delta_rule_update

if _cutedsl_gdn_available is not None:
return _cutedsl_gdn_available

try:
from sgl_kernel.cutedsl_gdn import (
cutedsl_fused_sigmoid_gating_delta_rule_update,
is_cutedsl_gdn_available,
)

if is_cutedsl_gdn_available():
_cutedsl_fused_sigmoid_gating_delta_rule_update = (
Comment thread
liz-badada marked this conversation as resolved.
Outdated
cutedsl_fused_sigmoid_gating_delta_rule_update
)
_cutedsl_gdn_available = True
logger.info("CuTe DSL GDN decode kernel is available")
else:
_cutedsl_gdn_available = False
logger.info("CuTe DSL GDN decode kernel: cutlass/cute not installed")
except ImportError as e:
_cutedsl_gdn_available = False
logger.debug(f"CuTe DSL GDN decode kernel not available: {e}")

return _cutedsl_gdn_available


if is_cuda():
from sglang.srt.layers.attention.mamba.causal_conv1d import (
causal_conv1d_fn as causal_conv1d_fn_cuda,
Expand Down Expand Up @@ -897,21 +936,44 @@ def forward_decode(
key = key.view(1, seq_len, num_heads, head_k_dim)
value = value.view(1, seq_len, value.shape[1] // head_v_dim, head_v_dim)

core_attn_out = fused_sigmoid_gating_delta_rule_update(
A_log=A_log,
dt_bias=dt_bias,
q=query,
k=key,
v=value,
a=a,
b=b,
initial_state_source=ssm_states,
initial_state_indices=cache_indices,
cu_seqlens=query_start_loc,
use_qk_l2norm_in_kernel=True,
softplus_beta=1.0,
softplus_threshold=20.0,
)
global _cutedsl_gdn_logged
use_cutedsl = USE_CUTEDSL_GDN_DECODE and _check_cutedsl_gdn_available()
if not _cutedsl_gdn_logged and USE_CUTEDSL_GDN_DECODE:
logger.info(f"Using CuTe DSL GDN kernel for decode: {use_cutedsl}")
Comment thread
liz-badada marked this conversation as resolved.
Outdated
_cutedsl_gdn_logged = True

if use_cutedsl:
core_attn_out = _cutedsl_fused_sigmoid_gating_delta_rule_update(
A_log=A_log,
dt_bias=dt_bias,
q=query,
k=key,
v=value,
a=a,
b=b,
initial_state_source=ssm_states,
initial_state_indices=cache_indices,
cu_seqlens=query_start_loc,
use_qk_l2norm_in_kernel=True,
softplus_beta=1.0,
softplus_threshold=20.0,
)
else:
core_attn_out = fused_sigmoid_gating_delta_rule_update(
A_log=A_log,
dt_bias=dt_bias,
q=query,
k=key,
v=value,
a=a,
b=b,
initial_state_source=ssm_states,
initial_state_indices=cache_indices,
cu_seqlens=query_start_loc,
use_qk_l2norm_in_kernel=True,
softplus_beta=1.0,
softplus_threshold=20.0,
)

self._track_mamba_state_decode(
forward_batch, conv_states, ssm_states, cache_indices
Expand Down
10 changes: 10 additions & 0 deletions sgl-kernel/python/sgl_kernel/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,16 @@
)
from sgl_kernel.version import __version__

# CuTe DSL GDN kernel (optional - requires cutlass/cute)
Comment thread
liz-badada marked this conversation as resolved.
Outdated
Comment thread
liz-badada marked this conversation as resolved.
Outdated
try:
from sgl_kernel.cutedsl_gdn import (
cutedsl_fused_sigmoid_gating_delta_rule_update,
is_cutedsl_gdn_available,
)
except ImportError:
# cutlass/cute not available
pass

if torch.version.hip is not None:
from sgl_kernel.elementwise import gelu_quick

Expand Down
Loading
Loading