Skip to content

Repository files navigation

TIRx kernels

High-performance GPU kernels authored in tirx-lite and compiled through TIRx.

Kernels

Kernels are grouped by the upstream library and entry point they port. Unless annotated, a kernel runs on sm_100a, sm_103a and sm_107a, and its performance was measured and tuned on sm_100a; every listed architecture is gated by the registry correctness tests. Annotations mark the exceptions: ⟨sm_103a⟩ runs only on that architecture and was tuned there, and ⟨+sm_110a⟩ runs on that architecture in addition to the default three. Annotations follow KERNEL_META["runtime_cuda_archs"] and tests/lint/check_readme_kernels.py keeps them in sync.

Native TIRx

Agent-evolved TIRx

Curated kernels selected from measured agent-evolution runs. Their canonical modules retain the supported workload and stable provenance; run logs and intermediate candidates remain outside this package. See the measured speedups for the benchmark contract and results.

cuDNN Frontend ports

FlashAttention ports

FlashInfer ports

Grouped by the FlashInfer Python entry point each port backs.

FlashMLA ports

DeepGEMM ports

DeepEP ports

fast.cu ports

MSA ports

Performance

Per-workload numbers — our kernel time, every reference impl, and the ref/ours ratio (>1 means ours is faster) — are pinned in tirx_kernels/bench_suite/baseline.md, regenerated on every baseline promotion. See the bench-suite README for how the sweep runs and how to refresh the baseline.

Installation

pip install tirx-kernels          # from a release
# or, from a checkout:
pip install -e .

External dependencies

Correctness uses the original upstream implementations. Install the exact, mutually compatible revisions from the repository lock:

python scripts/install_reference_dependencies.py

reference-dependencies.json is the single source of truth for reference revisions and the shared CUTLASS DSL version. The same command installs the pinned pytest/xdist runner. torch and tvm.tirx remain externally managed runtime/compiler dependencies.

Dependency Needed by Notes
tvm.tirx all kernels (compile + run) The TIRx compiler. Put it on PYTHONPATH, e.g. /path/to/tir/python.
torch all kernels CUDA build matching your GPU.
deep_gemm FP8 GEMM and deepgemm_* baselines Used for optimized reference kernels and the MegaMoE timer.
cuDNN Frontend (cudnn) cudnn_* correctness and baselines Source install pinned in the lock (v1.28.0); replaces any released nvidia-cudnn-frontend wheel, which lacks the CuTeDSL kernel sources.
flashinfer all flashinfer.* ports, nvfp4_gemm and rmsnorm baselines Correctness reference and optimized baseline.
flash-attn + CUTLASS DSL flash_attention_backward_sm100 baseline Current SM100 forward/backward reference.
SGLang CuTeDSL kernels (vendored, + CUTLASS DSL) deepgemm_sm100_fp8_paged_mqa_logits reference sglang_cutedsl benchmark reference; copied into tirx_kernels/deepgemm/_sglang_cutedsl/, no SGLang install needed.
flash_mla sparse_flashmla_* / flash_mla_sparse_fwd baselines Reference impls.
deep_ep deepep_* correctness and baselines Reference implementation.
flash-linear-attention agent_evolved_kda_forward_b1_t8192 and agent_evolved_kda_backward_packed correctness Independent FLA BF16/Triton chunk reference.
flash_kda flashkda_* and agent_evolved_kda_forward_b1_t8192 optional baselines Raw FlashKDA benchmark peer.
fmha_sm100 (MSA) msa_* correctness and baselines Reference implementation; set MSA_PATH to use a checkout elsewhere.
NVSHMEM allgather_gemm, gemm_reduce_scatter Required to compile/run the GemmComm kernels.

Correctness tests import and run these upstream implementations. The bench suite does not launch or time benchmark reference implementations by default (kernel data-preparation helpers may still import their upstream package). Pass --with-references to enable reference launches; a missing enabled reference fails its workload. See tirx_kernels/bench_suite/README.md for the prerequisites and workarounds.

Usage

Command line

# List discovered kernels (with their config labels)
python -m tirx_kernels.registry --format json

# Run correctness tests (optionally filter by kernel / config label)
pytest -n 16 tests/test_correctness.py

# Benchmark
python -m tirx_kernels.bench --kernel nvfp4_gemm
python -m tirx_kernels.bench --kernel nvfp4_gemm --with-references

# Pre-commit regression benchmark sweep on the kcoral benchmark server
# (see tirx_kernels/bench_suite/README.md; needs `pip install -e '.[remote]'`)
python -m tirx_kernels.bench_suite --server http://127.0.0.1:8901

Programmatic API

Every kernel module exposes a small, uniform interface (see tirx_kernels/_protocol.py):

from tirx_kernels.registry import discover_kernels

kernels = discover_kernels()          # {name: module}
mod = kernels["fp16_bf16_gemm"]

mod.run_test(M=1024, N=1024, K=1024)  # compile + run + correctness check
mod.run_bench(M=1024, N=1024, K=1024) # profile (needs a GPU)

func = mod.get_kernel(M=1024, N=1024, K=1024)  # the TIRx PrimFunc

Each module also provides KERNEL_META: its name, category, exact runtime_cuda_archs, and optional correctness-only reference_requirements. The registry and test harness reject unsupported architectures before compile, and skip correctness before GPU work when a declared reference package, version, or Git source identity is unavailable. CONFIGS contains the test parameter sweep.

License

Except where otherwise noted, this project is licensed under the Apache License 2.0; see LICENSE. Required Apache attribution notices are collected in NOTICE.

Every Python source file carries SPDX tags. Kernel ports derived from third-party projects (cuDNN Frontend, DeepGEMM, DeepEP, fast.cu, FlashMLA, flash-attention, flash-attention-fp4, FlashInfer, MSA) additionally cite the upstream project and the exact commit ported, retain the upstream copyright notice, and declare the combined terms — for example Apache-2.0 AND MIT. Where an upstream license requires its conditions text to travel with the source, that text is kept in the file verbatim. The third-party section at the end of LICENSE lists which components fall under which license, and licenses/ holds the corresponding license texts.

About

High-performance GPU kernels written in TIRx.

Resources

Stars

102 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages