📌 项目地址:tile-ai/tilelang | ⭐ 8,037 颗星 | 🔧 Python | 📜 未标注
写 GPU 内核的痛点,它来解决什么
高性能算子开发长期面临一个两难:用 PyTorch 这类框架写,够简单但性能受限;手写 CUDA,性能能拉满,但开发一个优化的 GEMM 或 FlashAttention 内核动辄上千行,还得精通 shared memory、warp 同步、寄存器排布这些细节。
TileLang(tile-ai/tilelang,8k+ Star)给出的方案是一个基于 TVM 编译器基础设施的领域专用语言(DSL)。它用 Python 语法描述分块(tile)级别的计算,底层编译器负责生成和调度这些优化。官方定位很明确:针对 GEMM、Dequant GEMM、FlashAttention、LinearAttention 这类可分块的计算密集型内核,让你”专注生产力,同时不牺牲 SOTA 级性能所需的底层优化”。
一个直观的对比:官方文档中展示的 FlashAttention 内核用 TileLang 只需约 100 行代码,而对应的手写 CUDA 实现需要超过 1000 行。这不是比喻,是代码行数。
实际怎么用
安装(具体版本和平台要求参考官方文档的 Installation 页面:tilelang.com/get_started/Installation.html):
# 通过 PyPI 安装,README 提供了 badge 指向的安装方式
# 详细步骤见官方文档
典型的开发流程是:用 TileLang 的 Python DSL 描述算法和分块策略 → 编译生成目标平台内核 → 在 PyTorch 中调用。官方提供了多个可运行的参考实现:
- examples 目录:https://github.com/tile-ai/tilelang/tree/main/examples
- tilelang-puzzles:https://github.com/tile-ai/tilelang-puzzles ,通过解谜方式学习 TileLang 编程模型
- tilelang-lsp:https://github.com/tile-ai/tilelang-lsp ,语言服务器,提供 buffer 形状、dtype、推断布局的 inlay hints、hover 详情和精确诊断——说明这个 DSL 已经有了完整的工具链支持
和同类工具的区别
- 对比 Triton(OpenAI):Triton 已经很流行,但主要围绕 NVIDIA GPU 生态。TileLang 的后端覆盖明显更广。
- 对比手写 CUDA:TileLang 的抽象层级更高(Tiled Abstraction),编译器承担了线程映射和内存调度的大部分工作。
- 硬件覆盖是当前最大的差异化:从 README 的更新记录看,它支持 NVIDIA(包括最新的 Blackwell SM120 NVF4 block-scaled MMA 路径)、AMD ROCm、Apple Metal(M5 的 cooperative-tensor GEMM),2026 年 9 月还新增了华为昇腾 950 NPU 后端,含原生代码生成、自动调度同步、SIMD/SIMT 向量编程。一个 DSL 同时覆盖 GPU/CPU/NPU 三类加速器,这在同类项目里很少见。
需要注意的事项
- API 稳定性:v0.1.13 移除了多个 legacy API,升级前必须读 compatibility notes。项目还在 0.x 阶段,接口可能继续变动。
- 学习曲线仍然存在:虽然语法是 Python,但要写出高性能内核,你需要理解 tiling、流水线并行这些概念。tilelang-puzzles 值得先刷一遍。
- 适用范围有边界:它优化的是分块式稠密计算(GEMM、Attention 类)。如果你的负载是大量不规则的小算子或动态控制流,这不是合适的工具。
- 社区与文档:有 Discord 社区和 deepwiki.com/tile-ai/tilelang 可查询代码细节;文档在 tilelang.com。
一句话判断
如果你在做大模型推理/训练的算子优化,或者在非 NVIDIA 硬件(尤其昇腾、Apple Silicon)上需要高性能 Attention/GEMM 内核,又不想陷入手写 CUDA 的泥潭,TileLang 值得认真评估。