TileOPs is a high-performance LLM operator library built on TileLang. The goal is to provide efficient, modular, and maintainable AI workload implementations.
This project follows design-first, spec-driven development: design docs and tileops/manifest/ are the authoritative spec; code conforms to the spec, not the other way around.
Activate a virtual environment, then make install (deps + pre-commit hooks).
- architecture.md — system modules (M1-M8), data flow, agent production loop, directory structure
- ops-design.md — Op interface execution guide (how to add a new op)
- ops-design-reference.md — Op interface detail reference (interface tables, codegen, naming, protocol)
- manifest.md —
tileops/manifest/spec format (signature, workloads, roofline, source) - roofline.md —
tileops/manifest/rooflinefield spec: performance model, authoring, and per-consumer contracts (validator / benchmark / M5 / codegen)
- trust-model.md — trust boundaries (manifest → test → implementation → benchmark), workloads layer contract
- testing.md — test/benchmark framework, core abstractions, tolerances, reporting rules
- tileops-skills.md — developer decision guide: which repo-provided skill to use for which task
The manifest lives at tileops/manifest/, one or more YAML files per op family — most families use a single file; large families may be sharded across multiple files. The tileops.manifest package merges them into a single ops dict at runtime.
- Programmatic reads: prefer
from tileops.manifest import load_manifest, load_workloads. Never re-implement the merge. - Structural inspection: parse the relevant family file with
yaml.safe_loadand indexopsby op name. Pick the file from the op's family field rather than scanning all of them. - Edits: edit the single family file that owns the op. Use a round-trip parser (
ruamel.yaml) to preserve comments and key order. Op names must remain unique across files — duplicates raise at load time. - Reserve
Read/grepfor targeted line lookups inside one family file, not structural reading.
Read the relevant context file before modifying files in that domain. Do not load them if your task does not touch that domain.
| When you modify | Read first |
|---|---|
tests/ |
.claude/domain-rules/testing-budget.md |
tileops/manifest/ |
.claude/domain-rules/manifest-spec.md |
scripts/validate_manifest.py, tests/test_validate_manifest.py |
.claude/domain-rules/manifest-validator.md |
tileops/ops/, tileops/kernels/ |
.claude/domain-rules/ops-design.md |
benchmarks/ |
.claude/domain-rules/benchmark.md |
workloads/ |
docs/design/trust-model.md |
docs/design/ |
.claude/domain-rules/design-docs.md |