跳转至

IR

PyPTO 的中间表示 —— 其他所有层都依赖的契约。

IR 定义是整个编译器的真源:pass 可以重写,IR 节点定义不可以。先读概览, 再读与你所改动内容对应的页面。

页面 内容
概览 从 Python DSL 到生成 kernel 的编译流水,以及 IR 在其中的位置
节点层次 所有 IR 节点类型的完整参考,按类别组织
类型与示例 类型系统及其实际用法示例
结构化比较 按结构而非指针身份比较 IR 节点
序列化 基于 MessagePack 的 .pto 序列化
算子系统 带自动类型推导的类型安全算子定义
Tensor 与 Tile 算子 数据算子 API、gather 形式、有效区域与 Tile 布局
IR Builder 增量构造 IR —— Python 用上下文管理器,C++ 用 Begin/End
IR Parser 通过 @pl.function / @pl.program 把 Python DSL 转成 IR,以及它强制的 SSA 性质
参数方向 In/Out/InOut 如何被推导——各阶段共同读取的注册表声明,以及基于它的四个 pass
多输出算子 产生多个值的算子:TupleType 结果、为什么目的地绝不作为参数,以及注册表强制的规则

另请参阅