Files
wehub-resource-sync 94057c3d3e
PR Test (NPU) / check-changes (push) Has been cancelled
PR Test (NPU) / pr-gate (push) Has been cancelled
PR Test (NPU) / set-image-config (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-4-npu-a3 (push) Has been cancelled
PR Test (NPU) / stage-b-test-16-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-1-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-2-npu-a3 (push) Has been cancelled
PR Test (Arm64) / pr-gate (push) Has been cancelled
PR Test (Arm64) / check-changes (push) Has been cancelled
PR Test (Arm64) / build-test (push) Has been cancelled
PR Test (sgl-router) / gate (push) Has been cancelled
PR Test (sgl-router) / tier-1 — lint (push) Has been cancelled
PR Test (sgl-router) / tier-2 — build + test (push) Has been cancelled
PR Test (sgl-router) / tier-3 — docker (placeholder) (push) Has been cancelled
PR Test (sgl-router) / tier-3 — k8s integration (push) Has been cancelled
PR Test (sgl-router) / tier-3 — e2e (push) Has been cancelled
PR Test (sgl-router) / finish (push) Has been cancelled
PR Test (NPU) / single-node-poc (map[name:qwen3_6_27b_w8a8_1p_in64k_out1k_50ms runner:linux-aarch64-a3-2 test_case:test/registered/ascend/performance/qwen3_6_27b/test_npu_qwen3_6_27b_w8a8_1p_in64k_out1k_50ms.py test_type:perf]) (push) Has been cancelled
PR Test (NPU) / pr-test-npu-finish (push) Has been cancelled
PR Test (Xeon) / pr-gate (push) Has been cancelled
PR Test (Xeon) / check-changes (push) Has been cancelled
PR Test (Xeon) / build-test (, xeon-gnr, base-b-test-cpu) (push) Has been cancelled
PR Test (XPU) / check-changes (push) Has been cancelled
PR Test (XPU) / pr-gate (push) Has been cancelled
PR Test (XPU) / stage-a-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / wait-for-stage-a (push) Has been cancelled
PR Test (XPU) / stage-b-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / finish (push) Has been cancelled
CI Model Inventory / build-inventory (push) Has been cancelled
Lint / lint (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Compilation Check (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Manual Policy (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Request Processing (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Summary (push) Has been cancelled
PR Test (SMG) / build-wheel (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on windows (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (x86_64 - auto) (push) Has been cancelled
PR Test (SMG) / python-unit-tests (push) Has been cancelled
PR Test (SMG) / unit-tests (push) Has been cancelled
PR Test (SMG) / benchmarks (push) Has been cancelled
PR Test (SMG) / chat-completions (push) Has been cancelled
PR Test (SMG) / chat-completions-4gpu (push) Has been cancelled
PR Test (SMG) / e2e (push) Has been cancelled
PR Test (SMG) / docker-build-test (push) Has been cancelled
PR Test (SMG) / k8s-integration (push) Has been cancelled
PR Test (SMG) / finish (push) Has been cancelled
PR Test (SMG) / summarize-benchmarks (push) Has been cancelled
Release SGLang Model Gateway Docker Image / publish (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Build SDist (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Upload to PyPI (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (aarch64, 12.9, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (x86_64, 12.9, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu129 (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (aarch64, 13.0, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (x86_64, 13.0, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu130 (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 700) (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 720) (push) Has been cancelled
Release SGLang Kernels / release-rocm700 (push) Has been cancelled
Release SGLang Kernels / release-rocm720 (push) Has been cancelled
Release SGLang Kernels / build-musa43 (43, 3.10) (push) Has been cancelled
Release SGLang Kernels / release-musa43 (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:38:16 +08:00

103 lines
3.2 KiB
Python

import torch
import triton
import triton.language as tl
@triton.jit
def _ltx2_split_rotary_kernel(
out_ptr,
x_ptr,
cos_ptr,
sin_ptr,
seq_len: tl.constexpr,
num_heads: tl.constexpr,
head_dim: tl.constexpr,
half_dim: tl.constexpr,
stride_cos_b: tl.constexpr,
stride_cos_h: tl.constexpr,
stride_cos_t: tl.constexpr,
stride_sin_b: tl.constexpr,
stride_sin_h: tl.constexpr,
stride_sin_t: tl.constexpr,
BLOCK_HEADS: tl.constexpr,
BLOCK_HALF: tl.constexpr,
):
pid_bt = tl.program_id(0)
head_block = tl.program_id(1)
batch = pid_bt // seq_len
token = pid_bt - batch * seq_len
heads = head_block * BLOCK_HEADS + tl.arange(0, BLOCK_HEADS)
offsets = tl.arange(0, BLOCK_HALF)
mask = (heads[:, None] < num_heads) & (offsets[None, :] < half_dim)
x_base = ((batch * seq_len + token) * num_heads + heads[:, None]) * head_dim
cos_base = (
batch * stride_cos_b + heads[:, None] * stride_cos_h + token * stride_cos_t
)
sin_base = (
batch * stride_sin_b + heads[:, None] * stride_sin_h + token * stride_sin_t
)
x_first = tl.load(x_ptr + x_base + offsets[None, :], mask=mask, other=0.0)
x_second = tl.load(
x_ptr + x_base + half_dim + offsets[None, :], mask=mask, other=0.0
)
cos = tl.load(cos_ptr + cos_base + offsets[None, :], mask=mask, other=0.0)
sin = tl.load(sin_ptr + sin_base + offsets[None, :], mask=mask, other=0.0)
# Match the original PyTorch order: x * cos is written as BF16 first, then
# addcmul_ computes the sine product in FP32 before the final BF16 store.
out_first = (x_first * cos).to(tl.bfloat16).to(tl.float32) + (
-x_second.to(tl.float32) * sin.to(tl.float32)
)
out_second = (x_second * cos).to(tl.bfloat16).to(tl.float32) + (
x_first.to(tl.float32) * sin.to(tl.float32)
)
tl.store(out_ptr + x_base + offsets[None, :], out_first, mask=mask)
tl.store(out_ptr + x_base + half_dim + offsets[None, :], out_second, mask=mask)
def apply_ltx2_split_rotary_emb(
x: torch.Tensor, cos: torch.Tensor, sin: torch.Tensor
) -> torch.Tensor:
batch, seq_len, inner_dim = x.shape
cos_batch, num_heads, cos_seq_len, half_dim = cos.shape
head_dim = half_dim * 2
if (
cos_batch != batch
or cos_seq_len != seq_len
or inner_dim != num_heads * head_dim
or sin.shape != cos.shape
):
raise ValueError(
"LTX2 split RoPE shape mismatch: "
f"x={tuple(x.shape)}, cos={tuple(cos.shape)}, sin={tuple(sin.shape)}"
)
out = torch.empty_like(x)
block_half = triton.next_power_of_2(half_dim)
block_heads = min(16, triton.next_power_of_2(num_heads))
num_warps = min(8, max(1, block_heads))
grid = (batch * seq_len, triton.cdiv(num_heads, block_heads))
_ltx2_split_rotary_kernel[grid](
out,
x,
cos,
sin,
seq_len,
num_heads,
head_dim,
half_dim,
cos.stride(0),
cos.stride(1),
cos.stride(2),
sin.stride(0),
sin.stride(1),
sin.stride(2),
BLOCK_HEADS=block_heads,
BLOCK_HALF=block_half,
num_warps=num_warps,
)
return out