Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
d0cb637
doc: update README with bigger logo (#53)
icavan Apr 16, 2026
e8a7098
[KDA] Adapt recompute_wu and delta_h for backward (#54)
KevinZeng08 Apr 16, 2026
a78819f
perf(kda_decode): optimize GMEM coalescing, V-tile parallelism (#52)
icavan Apr 18, 2026
50dd3f1
fix(linter): fix linter & updates kda decode perf (#60)
icavan Apr 22, 2026
33ec0b3
feat: BHVK (K-last) state layout for Lightning Attention prefill & de…
icavan Apr 22, 2026
2c8c6fa
perf(la_decode): boost small-batch (B<=32) by 33% via 8-warp CTA (#59)
icavan Apr 23, 2026
fa742a2
[KDA] Optimize recompute_wu with better register allocation (#61)
KevinZeng08 Apr 24, 2026
9d8eed6
fix output_final_state wrapper issue (#63)
yechenzhi May 6, 2026
a6d9572
[KDA] fix internal output_final_state wrapper issue in SM90 (#66)
yechenzhi May 9, 2026
8289976
[Fix] change to umma pipelines for SM100 KDA (#68)
KevinZeng08 May 13, 2026
d4fd474
[Fix] delta_h race risk (#69)
KevinZeng08 May 14, 2026
437dc21
[KDA] sm90 GVA enhance (#64)
sjmshsh May 14, 2026
e4ea536
[Feat] upgrade FLA to v0.5.0 (#72)
KevinZeng08 May 22, 2026
f17c36d
[Fix] add cross-proxy fence for recomp_wu kernel (#77)
KevinZeng08 May 22, 2026
bb39cf9
[KDA] sm100 GVA enhance for chunk_intra and recomp_wu (#65)
sjmshsh May 23, 2026
7960942
fix: wire h0_indices into Lightning Attention decode for state-pool i…
Emre-Dinc May 23, 2026
e871b96
Unify the naming convention (#79)
icavan May 24, 2026
7564280
Consolidate duplicated benchmark helper logic into `benchmarks/utils.…
icavanyu May 25, 2026
4571c7d
[KDA] support GVA for SM100 end-to-end (#73)
KevinZeng08 May 25, 2026
99d4bbc
[KDA] add backward chunk_wy_dqkg kernel for SM10X (#74)
KevinZeng08 May 26, 2026
85dbcb7
[KDA] split unit tests into fast/slow modes
Longxmas May 29, 2026
b6d8b2d
[KDA] Add intra-card CP for chunk_delta_h forward in SM100 (#70)
cherhh Jun 3, 2026
3006957
Relax dependency minimum versions (#87)
icavan Jun 10, 2026
7b1e127
[CI] Add GitHub workflow for building and releasing fat wheels (#91)
tongke6 Jun 23, 2026
ff1b236
ci: add prek lint workflow (#98)
tongke6 Jun 23, 2026
6cacc37
ci: align pytorch version requirements in wheel build (#99)
tongke6 Jun 25, 2026
f8d7db2
refactor(kda): reorganize KDA backends into arch-first layout and add…
cherhh Jul 7, 2026
ca6f174
feat: intracard cp for sm90 (#86)
Hyaloid Jul 7, 2026
8d572b9
[KDA] KDA MTP decode: recurrent + KVBuffer chunkwise verify + flush (…
Longxmas Jul 9, 2026
0be4e50
[LA] Lightning Attention MTP decode + KVBuffer parallel verify / comm…
fkuner Jul 9, 2026
abfd99f
feat: add packed kda decode (#102)
zhouaihui Jul 9, 2026
9ff1edb
[Feature] Add GVA support for Lightning (#85)
sjmshsh Jul 13, 2026
326a307
[Fix] Wire cudac bindings (#105)
cherhh Jul 20, 2026
568789c
Add SM90 fused WY-DqKG backward
zheyang0825 Jul 20, 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
158 changes: 158 additions & 0 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
name: Build & Release Wheels

on:
push:
tags:
- "v*"
workflow_dispatch:

concurrency:
group: build-release-${{ github.ref }}
cancel-in-progress: true

jobs:
build-wheel:
name: "wheel / ${{ matrix.cuda }} / cp312 / ${{ matrix.arch }}"
runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
cuda:
- cu129
- cu130
arch:
- x86_64
- aarch64
container:
# UBI 8 provides the glibc 2.28 baseline required by manylinux_2_28.
image: "nvidia/cuda:${{ matrix.cuda == 'cu129' && '12.9.0' || '13.0.0' }}-devel-ubi8"

steps:
- name: Free disk space
run: |
rm -rf /opt/hostedtoolcache /usr/local/lib/android /usr/share/dotnet \
/usr/local/share/boost /opt/ghc 2>/dev/null || true
dnf clean all 2>/dev/null || true
df -h / || true

- name: Install system dependencies
run: |
dnf install -y \
git \
gcc-toolset-13-gcc \
gcc-toolset-13-gcc-c++ \
python3.12 \
python3.12-devel \
python3.12-pip
dnf clean all

- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: recursive

- name: Configure git safe directory
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"

- name: Install Python dependencies
run: |
python3.12 -m pip install --no-cache-dir --upgrade pip
python3.12 -m pip install --no-cache-dir torch==2.9.1 --index-url ${{ matrix.cuda == 'cu129' && 'https://download.pytorch.org/whl/cu129' || 'https://download.pytorch.org/whl/cu130' }}
python3.12 -m pip install --no-cache-dir setuptools wheel "setuptools_scm>=6.0" build ninja auditwheel patchelf

- name: Expose PyTorch CUDA libraries
# The nvidia/cuda devel image ships the CUDA toolkit but not cuDNN.
# torch's pip wheels bundle cuDNN inside site-packages/nvidia/*/lib/,
# which is not on the linker search path β€” add it so torch._C can load.
run: |
LIB_DIRS="$(python3.12 <<'EOF'
import glob, os, site
dirs = []
for sp in site.getsitepackages():
for p in [os.path.join(sp, "torch", "lib")] + glob.glob(os.path.join(sp, "nvidia", "*", "lib")):
if os.path.isdir(p):
dirs.append(p)
print(":".join(dirs))
EOF
)"
echo "LD_LIBRARY_PATH=${LIB_DIRS}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> "$GITHUB_ENV"

- name: Compute version
id: version
run: |
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
BASE="${GITHUB_REF#refs/tags/v}"
else
# Strip any local segment (+gXXX) so we get a clean base
BASE=$(python3.12 -c "from setuptools_scm import get_version; print(get_version().split('+')[0])")
fi
echo "version=${BASE}+${{ matrix.cuda }}" >> "$GITHUB_OUTPUT"

- name: Build fat-binary wheel
env:
CC: /opt/rh/gcc-toolset-13/root/usr/bin/gcc
CXX: /opt/rh/gcc-toolset-13/root/usr/bin/g++
CUDAHOSTCXX: /opt/rh/gcc-toolset-13/root/usr/bin/g++
CULA_BUILD_ALL_ARCHS: "1"
SETUPTOOLS_SCM_PRETEND_VERSION: "${{ steps.version.outputs.version }}"
NVCC_THREADS: "4"
MAX_JOBS: "4"
run: |
"$CC" --version
"$CXX" --version
python3.12 -m build --wheel --no-isolation --outdir dist-raw

- name: Repair wheel for manylinux_2_28
run: |
# These libraries are supplied by the NVIDIA driver, PyTorch, or
# PyTorch's CUDA runtime dependency and must remain external.
python3.12 -m auditwheel repair \
--plat manylinux_2_28_${{ matrix.arch }} \
--exclude libcuda.so.1 \
--exclude 'libcudart.so.*' \
--exclude 'libc10*.so' \
--exclude 'libtorch*.so' \
--wheel-dir dist \
dist-raw/*.whl

- name: Verify wheel
run: |
echo "Built wheel:"
ls -lh dist/*.whl
ls dist/*.whl | grep -q "+${{ matrix.cuda }}" \
|| { echo "ERROR: wheel name missing +${{ matrix.cuda }} suffix"; exit 1; }
ls dist/*.whl | grep -q "manylinux_2_28_${{ matrix.arch }}" \
|| { echo "ERROR: wheel is not tagged manylinux_2_28_${{ matrix.arch }}"; exit 1; }
python3.12 -m auditwheel show dist/*.whl

- name: Upload wheel artifact
uses: actions/upload-artifact@v6
with:
name: wheel-${{ matrix.cuda }}-${{ matrix.arch }}
path: dist/*.whl

release:
name: Create GitHub Release
needs: [build-wheel]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v6
with:
path: artifacts/

- name: Create release
uses: softprops/action-gh-release@v3
with:
files: |
artifacts/wheel-*/*.whl
generate_release_notes: true
draft: true
prerelease: ${{ contains(github.ref, 'rc') || contains(github.ref, 'beta') || contains(github.ref, 'alpha') }}
40 changes: 40 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Lint

on:
pull_request:
branches:
- main
push:
branches:
- main

concurrency:
group: lint-${{ github.ref }}
cancel-in-progress: true

jobs:
clang-format:
name: clang-format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v2
with:
install-only: true
- name: Check clang-format
run: prek run clang-format --all-files --show-diff-on-failure --color=always

ruff:
name: Ruff
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v2
with:
install-only: true

- name: Check Ruff lint
run: prek run ruff --all-files --show-diff-on-failure --color=always

- name: Check Ruff format
run: prek run ruff-format --all-files --show-diff-on-failure --color=always
Loading