09 添加算子
适用版本:Frame v1.3 M28,C++20;Python 绑定 0.1.0(可选)
最后更新:2026-07-23
本章是非规范性使用说明;冲突时以算子系统和相关规范为准。
学习目标
通过可运行 C++ 示例理解算子的注册、构图、编译和执行,并区分实验与正式贡献。
运行入口
构建并运行 frame_example_03_custom_op;完整源码为03_custom_op。正式贡献前先完成08 开发者导览。
核心概念与分步讲解
FRAME_REGISTER_OP("scaled_relu")声明 schema、静态 shape 推断与 trait。- CPU kernel 通过
dispatch_dtype进行编译期类型分派,并以FRAME_REGISTER_KERNEL注册。 create_node_with_inferred_types构图后,仍由runtime::compile形成执行计划。
外部可执行文件可保留自己的静态注册以验证应用自用算子;Python 绑定不是该核心实现的一部分。
能力边界
外部实验不等同于仓内支持。若要成为正式算子,必须按算子系统与权威规范完成复用搜索、schema、CPU reference、后端路线、梯度、测试、绑定和审查;本章不替代这些判据。
本章小结
- schema 与 kernel 注册是不同职责。
- 示例走完整编译路径,不是 eager 替代。
- 正式贡献有额外测试和治理要求。
练习
- 运行示例 03,定位 schema 注册、kernel 注册和
compile三处代码。 - 为一个假想算子列出需先搜索的同名实现、算子组合和后端能力。
下一步
提交仓内改动前回到08 开发者导览并执行其权威流程入口。