IR¶
PyPTO 的中间表示 —— 其他所有层都依赖的契约。
IR 定义是整个编译器的真源:pass 可以重写,IR 节点定义不可以。先读概览, 再读与你所改动内容对应的页面。
| 页面 | 内容 |
|---|---|
| 概览 | 从 Python DSL 到生成 kernel 的编译流水,以及 IR 在其中的位置 |
| 节点层次 | 所有 IR 节点类型的完整参考,按类别组织 |
| 类型与示例 | 类型系统及其实际用法示例 |
| 结构化比较 | 按结构而非指针身份比较 IR 节点 |
| 序列化 | 基于 MessagePack 的 .pto 序列化 |
| 算子系统 | 带自动类型推导的类型安全算子定义 |
| IR Builder | 增量构造 IR —— Python 用上下文管理器,C++ 用 Begin/End |
| IR Parser | 通过 @pl.function / @pl.program 把 Python DSL 转成 IR,以及它强制的 SSA 性质 |
另请参阅¶
- Passes —— 运行在该 IR 之上的各种变换。
- Python IR 语法规范 —— parser 接受的表层语法。
- IR 验证器 —— 在 pass 之间检查 IR 合法性的属性验证器。