跳转至

TileOPs

TileOPs 是一个面向大模型推理的算子库,构建在 TileLang 之上,同一套算子接口可以由不同后端在不同硬件上实现。

它与手写算子库的不同之处在于组织方式:每个算子先以一份 spec 声明,再由 agent 依据这份 spec 生成实现。spec 既是代码生成的唯一依据,也是验收的标准 —— 正确性对照 spec 指定的参考实现,性能对照 roofline 模型给出的上界,两项都不依赖人的判断。因此一个实现可以随时从 spec 重新生成,而反过来做不到。

对使用者而言,它就是一批可以直接调用的算子:形状与 dtype 在调用时确定,特化后的 kernel 在首次使用时自动调优并缓存,随后可以与 CUDA graph 配合使用;每个算子各自声明是否支持 torch.compile(fullgraph=True)

安装

pip install tileops

快速开始

算子在构造时不绑定任何形状。形状和 dtype 取自调用传入的张量,特化后的 kernel 于首次调用时编译并缓存。

import torch
from tileops.ops import GemmOp

a = torch.randn(4096, 4096, device="cuda", dtype=torch.float16)
b = torch.randn(4096, 4096, device="cuda", dtype=torch.float16)

op = GemmOp()                        # 默认 NT 布局:a=[M, K], b=[N, K]
d = op(a, b)                         # -> [M, N]
flops, nbytes = op.eval_roofline()   # 本次调用所需的计算量与访存量

从这里继续

  • 使用指南 —— 读写 manifest、接入 torch.compile、benchmark 怎么计时、接入新硬件后端
  • API 参考 —— 各算子族的构造参数与调用方式
  • 性能数据 —— 每晚在 H200 上实测,逐个 workload 与其他实现对比

相关链接