背景
延续 #1(deepx-cpu-compute 重建为 kvlang main-runtime + CPU tensor myrwircaps)。现状:后端算子以 deepx/<author>·<op> 注册为 def rwir(myrwircaps_find 精确串匹配,无优先级/无 fallback/无版本),.kv 里直接写死具体后端,无前端抽象层。
kvlang 核心契约见 array2d/kvlang#273(spec 卷 06-编译器语义)。本 issue 实现 deepx 侧的前端算子目录与编译器 pass。
范围
1. 前端算子(抽象)目录 —— deepx·<op>
2. 编译器 pass —— 读 /lib,生成新函数
3. 对照 PyTorch(参照,不照搬)
- 后端绑定 ≈ TorchInductor lowering 表(编译期静态绑定),非
c10::Dispatcher 运行期 device 派发。
deepx·op/deepx/author·op ≈ TORCH_LIBRARY m.def / TORCH_LIBRARY_IMPL(deepx,<author>,m).impl。
- 复合算子 ≈
CompositeImplicitAutograd + torch/_decomp;融合 ≈ Inductor Scheduler → 单 kernel;版本择优 ≈ autotune 缓存最优。
验收
关联
array2d/kvlang#273(核心契约 + spec 卷 06)、#1、kvlang#166 #189 #202。
背景
延续 #1(deepx-cpu-compute 重建为 kvlang main-runtime + CPU tensor myrwircaps)。现状:后端算子以
deepx/<author>·<op>注册为 def rwir(myrwircaps_find精确串匹配,无优先级/无 fallback/无版本),.kv里直接写死具体后端,无前端抽象层。kvlang 核心契约见 array2d/kvlang#273(spec 卷 06-编译器语义)。本 issue 实现 deepx 侧的前端算子目录与编译器 pass。
范围
1. 前端算子(抽象)目录 ——
deepx·<op>/lib/deepx·<op>,schema-only def rwir + abstract 标记,只承诺签名与语义,无实现、无 author。首批对齐已有/在建后端:argmax、matmul、softmax(复合)等。argmax(tensor<any>:A, var<int32>:axis, var<bool>:keepdims) -> (tensor<int64|int32>:B)。属性(axis/keepdims)作普通位置参数(var/vector),非独立 attribute 字段——与 deepx reduce 族一致。miaobyte/cblas/cublas/default_(见 deepx-coretensorfunc/authors.hpp)。前端deepx·op无 author,后端deepx/<author>·op有。2. 编译器 pass —— 读
/lib,生成新函数/lib全部调用点,对抽象算子deepx·<op>,枚举已注册deepx/*·<op>后端,按策略选一,就地改写调用点 opcode 为deepx/<author>·<op>。deepx/cblas·matmul)保留 → ② 默认 author 表(authormap 式:matmul→cblas、argmax→miaobyte,可配置)→ ③ 唯一可用者 → ④ 皆无则诊断「op 无已注册后端」。deepx·softmax(= exp/sum/broadcast/div 组合的 rwfunc)→ 融合成单条自解释 rwir,登记为版本softmax.1(写/lib/deepx·softmax.1+ 基键 maxversion 标记)。runtime 侧高版本优先由 kvlang#273 兑现。/lib树上(复用 core 骨架,见 kvlang#166)。产物仍是合法/lib树。3. 对照 PyTorch(参照,不照搬)
c10::Dispatcher运行期 device 派发。deepx·op/deepx/author·op≈TORCH_LIBRARY m.def/TORCH_LIBRARY_IMPL(deepx,<author>,m).impl。CompositeImplicitAutograd+torch/_decomp;融合 ≈ Inductor Scheduler → 单 kernel;版本择优 ≈ autotune 缓存最优。验收
deepx·argmax(v0, axis0, false) -> vmax编译为deepx/miaobyte·argmax(...)并正确执行。softmax编译前后输出逐字节一致,编译后走softmax.1。关联
array2d/kvlang#273(核心契约 + spec 卷 06)、#1、kvlang#166 #189 #202。