個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證High-performance LLM operator library built on TileLang.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Spec-driven LLM operators across backends — built by agents
The spec is the source; kernels are derived from it and judged against it.
Operators are auto-tuned on first use, CUDA-Graph compatible, and declare their
torch.compile(fullgraph=True) support per op.
An implementation can be regenerated from its spec; a spec cannot be recovered from an
implementation. The project is organised around the spec rather than around the kernels:檢視完整 README ↗| TileOPsagents answer to specs | TileFoundrythe compiler answers to agents |
|---|---|
| Each op starts with a YAML spec. Tests and benchmarks use the reference implementation, workloads and roofline formula declared in the spec to check correctness and measure performance. | A tile-based AI compiler that coding agents use to generate high-performance programs across hardware platforms. |
TileOPs shows how a coding agent and TileFoundry can work together in a loop to build an operator library. Tests and benchmarks driven by each op's spec report failures and the gap to the roofline bound. The agent and compiler iterate on that feedback. Kernels that pass the checks become part of the library, where later work can build on them. This approach supports a growing, maintainable library rather than a few one-off kernels.
spec ──▶ coding agent ◀──▶ TileFoundry ──▶ kernel
▲ (AI compiler) │
│ ▼
└─ failures, roofline gap ◀── tests + benchmarks
│ pass
▼
TileOPs library
PRs whose kernels were generated with TileFoundry carry the foundry label. The badge above
counts merged PRs with this label. These PRs go through the same CI as every other PR.
import torch
from tileops.gemm import GEMMFwdOp
gemm = GEMMFwdOp() # shapes and dtype are inferred at call time
a = torch.randn(1024, 512, device="cuda", dtype=torch.float16)
b = torch.randn(1024, 512, device="cuda", dtype=torch.float16)
d = gemm(a, b) # equals a @ b.T
Operators autotune after op.request_tune(). CUDA Graph support on H200 is validated,
after warmup, for the calls in the graph test group.
Every op whose manifest entry has a call-time tensor input and no composition supports
torch.compile(fullgraph=True).
The release image contains TileOPs 0.1.0, TileFoundry 0.0.3 and the benchmark baselines, on CUDA 13.2, PyTorch 2.13 and TileLang 0.1.12.
docker run --rm -it --gpus all \
ghcr.io/tile-ai/tileops-release:tileops0.1.0-tilefoundry0.0.3-cuda13.2-torch2.13-tilelang0.1.12
To check the image on a GPU, run from a clone of this repository:
scripts/verify_release_image.sh
scripts/verify_release_image.sh --bench benchmarks/ops/bench_rope.py # also run a benchmark
An implementation can be regenerated from its spec, but a spec cannot be recovered from an implementation. Agents work on the whole library, not only its kernels, so it needs to stay consistent as it grows.
Each op has an entry in
src/tileops/manifest/spec/,
with one file per family. Abridged from gemm.yaml:
GEMMFwdOp:
ref_api: nvmath.linalg.advanced.Matmul.execute
family: gemm
signature:
forall: {M: Dim, N: Dim, K: Dim, T: "DType[float16 | bfloat16]"}
params: {trans_a: {type: bool, default: false}, trans_b: {type: bool, default: true}}
inputs: {a: {dtype: T, shape: "Mat[trans_a, M, K]"}, b: {dtype: T, shape: "Mat[trans_b, K, N]"}}
outputs: {d: {dtype: T, shape: "[M, N]"}}
workloads: [{M: 1024, N: 1024, K: 1024, trans_a: false, trans_b: false, dtype_cases: [{T: float16}, {T: bfloat16}], label: square-1k}]
roofline: {flops: "2 * M * N * K"}
Mat[t, R, C] is a type the entry declares: the shape [R, C], or [C, R] when t is true.
| Field | Role |
|---|---|
ref_api | The API whose semantics the operator follows, when applicable. |
signature | Tensor types over named indices. Each call is checked against it before dispatch. |
workloads | The concrete calls used by contract tests and nightly benchmarks. |
roofline | The performance model. eval_roofline() evaluates it for each checked call. |
A validator checks each entry against its implementation in CI. layer-boundaries.md states what each layer of an op owns.
pip install tileops
pip resolves PyTorch 2.13, TileLang 0.1.12 and PyYAML from PyPI. The machine provides the rest:
nvcc on PATH: TileLang compiles kernels at run timeThe release is verified on H200 with Python 3.12 and 3.13.
Some kernels also have SM80, SM86 or SM89 paths. They are tested on those devices when run there, and are outside the release verification.
To develop TileOPs, install it from source:
git clone https://github.com/tile-ai/TileOPs
cd TileOPs
pip install -e . --group dev -c constraints.txt # constraints.txt pins what CI validates
pre-commit install
python -m pytest -q tests -m smoke # verify; requires a CUDA GPU
A prebuilt Docker image includes the full stack and provides the CI environment. See development.md for details, test tiers, benchmarks and build troubleshooting.
TileOPs is released under the MIT License.