Module neuralops.core.triton_kernels.gla_scan
Triton-accelerated Gated Linear Attention (GLA) recurrent scan (Forward & Backward).
Recurrence (dynamic per-token decay gating): q_t, k_t, v_t in R^{B x H x L x D} lam_t in R^{B x H x L} (sigmoid decay values clamped to [1e-4, 1 - 1e-4])
S_t = lam_t * S_{t-1} + k_t^T @ v_t # (D, D) matrix
Z_t = lam_t * Z_{t-1} + k_t # (D,) vector
num_t = q_t @ S_t # (D,)
den_t = q_t @ Z_t + 1e-4 # scalar
y_t = num_t / den_t # (D,)
All ops are per-(batch, head) stream with S and Z maintained in registers. Supports head_dim D <= 64.
Functions
def gla_scan_triton(q: torch.Tensor, k: torch.Tensor, v: torch.Tensor, lambdas: torch.Tensor) ‑> torch.Tensor-
Expand source code
def gla_scan_triton( q: torch.Tensor, k: torch.Tensor, v: torch.Tensor, lambdas: torch.Tensor ) -> torch.Tensor: """Triton-accelerated GLA scan function. head_dim must be <= 64.""" B, H, L, D = q.shape if D > MAX_REGISTER_DIM: raise ValueError(f"GLA Triton head_dim {D} > {MAX_REGISTER_DIM}") return _GLAScanFn.apply(q, k, v, lambdas)Triton-accelerated GLA scan function. head_dim must be <= 64.
Classes
class triton-
Methods
def autotune(*a, **kw)-
Expand source code
"autotune": lambda *a, **kw: lambda f: f, def heuristics(*a, **kw)-
Expand source code
"heuristics": lambda *a, **kw: lambda f: f, def jit(f)-
Expand source code
"jit": lambda f: f,