Open
docs(lp-norm-reduce): 对齐交付通路与精度证据 #8
docs(lp-norm-reduce): 对齐交付通路与精度证据 #8
Open
raoliang_sacAdd on Sep 27
Total: 17 files changed+4310-4188
Mchangwei-op-dev/scripts/audit_deliverables.py+23-2File content is under review, please try again later
Achangwei-op-dev/scripts/tests/test_audit_deliverables.py+48-0File content is under review, please try again later
Mchangwei_deliverables/september/LpNormReduce/00_check_findings.md+27-27File content is under review, please try again later
Mchangwei_deliverables/september/LpNormReduce/01_requirement.md+4-4File content is under review, please try again later
Mchangwei_deliverables/september/LpNormReduce/02_design.md+1-1File content is under review, please try again later
Mchangwei_deliverables/september/LpNormReduce/03_spec.yaml+2-2File content is under review, please try again later
Mchangwei_deliverables/september/LpNormReduce/04_golden/GOLDEN_REF.md+2-2File content is under review, please try again later
Binary files do not support preview
@@ -0,0 +1,14 @@
1+# LpNormReduce 结果与归档索引
2+ 
3+正式泛化1836唯一定义:1835原TTK PASS、1验收接受(±1ULP);正式精度1856:1853原TTK PASS、3验收接受(±1ULP)。验收接受行仍保留原TTK FAIL,未接受数值失败为0。本次约定数值口径满足,不等于全部质量门禁关闭。
4+ 
5+选定FAIL来源:泛化`ratio_stability_2_p3_f32_0336`;精度`p3_baseline_restore_0336`、`sys_tpl2_p2_f32_0239`、`sys_tpl6_p4_f32_0663`,逐行原始CSV位置见05。7条关键失败输出已独立复核为正确舍入值相邻一档以内,不修改cross_check容差。
6+ 
7+原始交付1897/2100执行记录、23连接失败、1旧scalar配置及重复尝试保存在工作证据`formal_validation/LpNormReduce/investigation_20260928/delivery_selection_archive/`。16条历史普通数值FAIL由同定义最终测量替代,原件仍可追溯;回放输入SHA和来源见明细/账本,**不证明与原FINAL执行输入逐字节相同,也不宣称原FAIL已变为PASS**。
8+ 
9+迁移定位:`LpNormReduce/evidence/current_quality/formal_validation/LpNormReduce/investigation_20260928/`,其中`delivery_selection_archive/original_delivery/`是清理前完整交付;`selection_ledger.json`记录每条旧记录的选择/归档原因和最终输入来源。38份manual input的压缩原件与恢复哈希清单、7条ULP关键输入/输出/golden、原生rank-0/keepdim=true显式GE证据均随迁移保存。
10+ 
11+- 原交付文件SHA索引:`523d4820a41dd6321edc00abd9271f82abe1cc802ba6ccff8c8dfc6131abcba0`
12+- 选择ledger SHA-256:`ad09d9c58a6ca3cb622867557a396b3e183b8a706f423b0f65be447587a268f7`
13+ 
14+性能200和GEIR50正式表未因本次清理改值。构建同源哈希、unknown-rank独立端到端、Host负例UT仍是证据/覆盖缺口,详见`codecheck_closure.md`。
Dchangwei_deliverables/september/LpNormReduce/HANDOFF_MANIFEST.md+0-34File content is under review, please try again later
@@ -0,0 +1,19 @@
1+# LpNormReduce CodeCheck 判读与闭环
2+ 
3+本文件只判读本算子现状,不修改源码,也不把静态候选当成已验证问题。原始扫描见 `codecheck_report.md`,交付格式扫描见 `00_check_findings.md`。扫描源码为 ops-nn `682c7f87e`;`changwei-code-check/scripts/check.py` 按 `--ops lp_norm_reduce` 扫描 23 个文件、25 个组,输出 3 条高、12 条中、48 条低、18 条待人工判定。未运行构建、TTK 或本地 CI。
4+ 
5+| 扫描项 | 人工判读 | 依据与后续动作 |
6+|---|---|---|
7+| G18 两条通路自相矛盾(GEIR、aclnn) | 规则误报;通路声明不矛盾 | `01_requirement.md`、`02_design.md`、`03_spec.yaml` 均区分 GEIR 支持、aclnn 不支持。正则把“不支持 aclnn”和“支持 GEIR”同段文字交叉命中。06/07 也明确只有 Kernel、GEIR;A100 Torch 仅为第三方比较器。原始两条红项仍保留在报告中。 |
8+| G23 性能表旧于源码提交 | **时间戳告警,构建同源性未完全闭环** | 源码提交 `682c7f87e` 时间为 2026-09-27 17:20:30;kernel 源文件 mtime 为 15:59:08,部署 vendor 的 3 个 LpNormReduce `.o` mtime 为 16:00:00,原始 kernel200 结果文件 mtime 为 17:12:56、性能交付表为 17:19:15。时间顺序与“先编测、后提交”相符,200/200 原始 `BINARY_MATCH`、结果 SHA-256 `e5ffb6f9a2e7c2b4252bd71a27a2a93da68cc97cea97bf608184fff9b04fd43e`;但尚无将提交 tree/blob 与该 vendor binary 密码学绑定的构建清单,因此不能仅凭 mtime 和 BINARY_MATCH 宣称完全闭环。保留构建 provenance 缺口,必要时在现提交上最小重建和复测。 |
9+| G22 52/200 低于 0.5、均值低于 1.2 | 扫描器使用通用门槛,不适用于本次用户明确约定 | 本算子验收门槛为逐例及均值 `folded G/N ≥0.1`、NO_FOLD 系数 1;冻结 kernel200 的最小 0.123777506、均值 0.979005841,均满足 0.1。原扫描数值未篡改,阈值差异在性能表说明块亦有说明。 |
10+| G9 golden 不可运行两条 | 探针入口误判;不等同于 TTK 实际失败 | `tests/assets/golden.py` 注册 `__spec__`,`_golden_perf.py` 以 `from golden import ...` 供 TTK 资产目录加载;扫描器的独立导入方式不同于 TTK。现有原始 kernel200、GEIR50 运行记录证明 TTK 能加载并执行;不据此改 golden。 |
11+| G9 缺 examples、host UT;G16/G17 校验负例与拒收覆盖 | **未闭环工程缺口** | 算子目录确无 `examples/`、`tests/ut/op_host/`;扫描器找不到对应拒收断言。这不推翻已有正例精度/性能,但不能声称 host 非法输入全面覆盖。需源码/测试负责人决定补样例和负例的范围。 |
12+| G16/G26 dtype/组合覆盖、缺省 p | 扫描器覆盖识别不完整;零覆盖结论不成立 | 明细已有三dtype及省略属性。清理前省略p为8条(7 PASS/1连接失败),并非零覆盖;最终按唯一定义重算:泛化省略p/axes各7、keepdim16、epsilon18;精度省略p/axes各7、keepdim/epsilon各6,均rawTTK PASS。这仅证明对应kernel档,不声称全部通路省略属性组合均覆盖。 |
13+| G27 README 引用 LpNormUpdate | 非问题 | README 是在描述完整 norm 可与 LpNormUpdate 串接,不是把本算子名称误写成彼算子;应保留语义说明。 |
14+| G10/G11/G12 低优先级卫生项及 18 条语义待判 | 未全面闭环 | 格式工具版本为 clang-format 21.1.4,而仓 pin 18.1.8;不自动批量改源码。函数大小、空白、接口/公式及除零候选需要逐项源码审阅或专门负例,脚本未下结论,不能标为 PASS。 |
15+| `scan_handover` 两条 H-table-many-na | 经支持面人工复核,属合理“不涉及” | 06/07 的 aclnn、Torch 单算子、Torch 图模式、TF/ONNX 等栏均因本算子无这些对外接口而填“不涉及”;Kernel 和 GEIR 支持项分别保留。扫描器摘要“06/07 表取值有问题”仅由两条低级提示汇总得出,不代表通路真的错误。 |
16+ 
17+正式泛化选定1836唯一定义(1835 TTK PASS/1验收接受±1ULP),精度1856(1853 TTK PASS/3验收接受±1ULP),原始FAIL仍保留。原表1897/2100执行记录及选择账本归档;23条连接失败不等于数值超差,旧“39条全ratio失败”描述已纠正。由同定义最新测量替代历史数值FAIL,不证明原FINAL输入已经通过。归档索引见`EVIDENCE_INDEX.md`。
18+ 
19+仍未独立端到端验证 `[-2]` unknown-rank;07不补写PASS。GEIR50选定静态/动态50/50 PASS,隧道中断主队列与11条定向重试原件保留。kernel200原始198 PASS/2 FAIL,两条独立±1ULP验收接受,不改TTK状态。原生rank-0/keepdim=true的显式GE输出[4.0] PASS证据保留。
@@ -0,0 +1,192 @@
1+# 代码检查报告 —— ops-nn
2+ 
3+此为清理前真实扫描快照,原始提示不改写;最终交付统计、默认属性覆盖和人工判读见`codecheck_closure.md`及`EVIDENCE_INDEX.md`。扫描中性能默认门槛与本项目用户约定不同,不直接作为验收结论。
4+ 
5+- 生成时间:2026-09-28
6+- 扫描范围:23 个文件(算子目录全量),1 个算子目录(norm/lp_norm_reduce)
7+- 检查组:1、2、3、5、6、7、8、9、10、11、12、14、15、16、17、18、19、20、21、22、23、24、25、26、27
8+ 
9+## 结论:63 条问题(🔴 3 / 🟡 12 / 🟢 48)
10+ 
11+ 
12+### 🔴 组 18 · 与 A2 既有实现差分
13+ 
14+- **`norm/lp_norm_reduce`** `需人工复核`
15+ - `G18-handover-pathway-contradictory` 交付件对「GE 图」通路的表述**自相矛盾**:既写支持又写不支持。测试按哪一处排计划都可能错,评审也无从判定。请统一口径后再转测。
16+ - 证据:`01_requirement.md、02_design.md、03_spec.yaml:| GEIR | 支持 | 私有 REG_OP、V1/V2 推导、Host/Kernel 注册 | | Kernel 验收确认 BINARY_MATCH,GEIR 单独验证`
17+- **`norm/lp_norm_reduce`** `需人工复核`
18+ - `G18-handover-pathway-contradictory` 交付件对「aclnn」通路的表述**自相矛盾**:既写支持又写不支持。测试按哪一处排计划都可能错,评审也无从判定。请统一口径后再转测。
19+ - 证据:`01_requirement.md、02_design.md、03_spec.yaml:| aclnn | 不支持;转测不涉及 | CMake ACLNNTYPE aclnn_exclude,没有 op_api | | | aclnn / Torch 算子接口 | 不支持,不在本次交付范围 | | 不提供 aclnn 或本算子的 Torch 单算子、Torch 图模式/e2e 接口`
20+ 
21+### 🔴 组 23 · 产物新鲜度(红线 R1)
22+ 
23+- **`/tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september/LpNormReduce/05_test_result`**
24+ - `G23-stale-result-vs-source` 1/4 个验证结果产物**旧于算子源码**。源码改过之后这几条腿没重跑——红线 R1:内核一改,泛化/精度/性能/DFX 全部要重跑,别只补当下那条。旧结果得出的结论一律作废。
25+ - 证据:`源码最新 2026-09-27 17:20(末次功能性提交 682c7f87e perf(lp_norm_reduce): fast-path huge finite p and add compiled baseline)|stale:LpNormReduce_performance.csv`
26+ 
27+### 🟡 组 9 · 交付件完整性
28+ 
29+- **`norm/lp_norm_reduce/examples`**
30+ - `G9-deliverable-missing` 缺 调用示例(GE 图 / aclnn)。本仓 637 个算子里有 575 个(90%)带这一项,属既定约定。
31+ - 证据:`norm/lp_norm_reduce/ 下未找到 examples;本仓 637 个算子里有 575 个(90%)带这一项,属既定约定`
32+- **`norm/lp_norm_reduce/tests/assets/_golden_perf.py`**
33+ - `G9-golden-not-runnable` golden 跑不起来:ModuleNotFoundError: No module named 'golden'。标杆脚本必须能被 TTK 直接调用,否则泛化/精度验证拿不到真值。(探测用的是通用 2x4 fp32 输入,若该算子对入参形状有语义要求——如 shape_hw 必须是 2 元素——报错可能来自探测输入而非 golden 本身,请人工确认)
34+ - 证据:`ModuleNotFoundError: No module named 'golden'`
35+- **`norm/lp_norm_reduce/tests/assets/golden.py`**
36+ - `G9-golden-not-runnable` golden 跑不起来:找不到 golden 入口函数(无 __golden__ 注册、也无 *_golden 函数)。标杆脚本必须能被 TTK 直接调用,否则泛化/精度验证拿不到真值。(探测用的是通用 2x4 fp32 输入,若该算子对入参形状有语义要求——如 shape_hw 必须是 2 元素——报错可能来自探测输入而非 golden 本身,请人工确认)
37+ - 证据:`找不到 golden 入口函数(无 __golden__ 注册、也无 *_golden 函数)`
38+- **`norm/lp_norm_reduce/tests/ut/op_host`**
39+ - `G9-deliverable-missing` 缺 host 侧 UT(tiling + infershape)。本仓 637 个算子里有 588 个(92%)带这一项,属既定约定。
40+ - 证据:`norm/lp_norm_reduce/ 下未找到 tests/ut/op_host;本仓 637 个算子里有 588 个(92%)带这一项,属既定约定`
41+ 
42+### 🟡 组 16 · 声明-实现-测试三角
43+ 
44+- **`norm/lp_norm_reduce`**
45+ - `G16-validation-no-negative-case` host 侧有 44 处返回 GRAPH_FAILED 的校验分支,但测试里一个期望失败的用例都没有。输入校验写了却从没验证过它真会拦下来。
46+ - 证据:`GRAPH_FAILED 分支 44 处,UT 期望失败断言 0 处`
47+- **`norm/lp_norm_reduce/op_host/lp_norm_reduce_def.cpp`**
48+ - `G16-dtype-declared-untested` def 注册了 bfloat16、float16、float32,但测试里找不到 bfloat16 的用例。声明支持就要有对应用例,否则那条 dtype 路径从未被验证过。
49+ - 证据:`declared=['bfloat16', 'float16', 'float32'] tested=['float16', 'float32']`
50+ 
51+### 🟡 组 17 · 测试工程质量
52+ 
53+- **`norm/lp_norm_reduce/op_host/arch35/lp_norm_reduce_tiling_arch35.cpp`**
54+ - `G17-tiling-reject-branch-uncovered` host tiling 有 39 条 `return GRAPH_FAILED` 拒收分支,UT 里只有 0 处断言拒收 —— 差额那些分支**一次都没被执行过**。从没执行过的错误分支是覆盖盲区:它既可能是死代码,也可能像 ArgMaxGrad 那样把**支持面内的形状**判成 GRAPH_FAILED(UB 记账漏算一个通道,兜底把它降级成干净拒收,泛化 1224+384 例一次都没撞到)。每条拒收要么补触发用例,要么在注释里写明为何不可达。
55+ - 证据:`tiling 拒收分支 39 条 vs UT 拒收断言 0 处`
56+ 
57+### 🟡 组 22 · 性能达标预判
58+ 
59+- **`/tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september/LpNormReduce/05_test_result/performance/LpNormReduce_performance.csv`**
60+ - `G22-perf-below-threshold` 52/200 例的折算后 G/N < 0.5(团队要求最低不小于 0.5)。最低 0.12。转测性能评估会逐例判,这些必然红。
61+ - 证据:`取 folded_G/N 列(判据:folded_G/N 低于该算子适用阈值即判不达标,阈值~1.2 之间挂待判定)|最低 5 例:sys_tpl6_p5_bf16_0848(0.12)、sys_tpl6_p5_f16_0813(0.13)、sys_tpl3_p3_f16_0381(0.16)、sys_tpl2_p2_bf16_0308(0.16)、sys_tpl6_p4_bf16_0738(0.19)`
62+- **`/tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september/LpNormReduce/05_test_result/performance/LpNormReduce_performance.csv`**
63+ - `G22-perf-mean-below-threshold` 折算后 G/N 均值 0.979 未超过 1.2(团队要求均值 > 1.2)。即使逐例都不低于 0.5,整体性能仍判不达标。
64+ - 证据:`取 folded_G/N 列(判据:folded_G/N 低于该算子适用阈值即判不达标,阈值~1.2 之间挂待判定)|200 例均值 0.979|最低 0.12@sys_tpl6_p5_bf16_0848`
65+ 
66+### 🟡 组 26 · 交付件准确性
67+ 
68+- **`norm/lp_norm_reduce`**
69+ - `G26-caseset-optional-default-missing` `p` 在 def 里是 OPTIONAL 属性,但泛化用例集里**每一例都显式传了值**,没有「不传」这一档。缺省路径(走 def 里的默认值)等于零覆盖,而用户最常走的恰恰是缺省。(R2 缺省档必测:不传与传了某值同权。)
70+ - 证据:`LpNormReduce_generalization.csv: 1897 例全部含 `p``
71+- **`norm/lp_norm_reduce`** `需人工复核`
72+ - `G26-caseset-combination-uncovered` 功能组合覆盖:1-way 88%(22/25)、2-way 61%(135/220)。逐档漏:[('dtype', 'bfloat16'), ('dtype', 'float16'), ('dtype', 'float32')]1-way 是「有没有测到这一档」,2-way 是「两维档位有没有同时测到」——一档缺失会连带毁掉它与其它所有维的交互组合。(分母取自算子声明的功能空间,与例数无关;例数达标不等于覆盖达标。)
73+ - 证据:`LpNormReduce_generalization.csv: 1897 例|维度 ['align', 'attr', 'dtype', 'rank']|分母来源:def 声明面`
74+ 
75+### 🟡 组 27 · 资料内容 vs 实现
76+ 
77+- **`norm/lp_norm_reduce/README.md:16`** `需人工复核`
78+ - `G27-doc-desc-foreign-op` 「算子功能」这一句里出现了另一个算子的名字 `LpNormUpdate`(仓内确有该算子)。若不是刻意引用,就是从兄弟算子抄描述忘改——描述抄错是功能性误导。
79+ - 证据:`LpNormUpdate`
80+ 
81+### 🟢 规范与卫生 48 条(已收起)
82+ 
83+多数跑一遍 pre-commit 能统一清掉。
84+ 
85+| 条数 | 规则 | 涉及文件 |
86+|---|---|---|
87+| 28 | `G12-redundant-space` | 1 个文件 |
88+| 8 | `G11-oversized-function` | 4 个文件 |
89+| 5 | `G12-readme-missing-section` | 1 个文件 |
90+| 3 | `G10-clang-format` | 3 个文件 |
91+| 2 | `G11-oversized-header` | 2 个文件 |
92+| 1 | `G10-tool-version-mismatch` | 1 个文件 |
93+| 1 | `G12-readme-product-diff-in-cell` | 1 个文件 |
94+ 
95+## ⏳ 待判定 18 条 —— 脚本**未下结论**
96+ 
97+这些点脚本只能定位、判不了(可达性要跨函数追数据流,「是迁移还是 hack」要读懂意图)。**没人答 = 没有结论,既不是有问题也不是没问题,不许当成通过。**
98+ 
99+1. **[LpNormReduce 资料描述的支持范围是否与 A2 契约一致]** `norm/lp_norm_reduce/README.md` ---- A2 契约(来源:canndev ascend910b op_info_cfg)----
100+输入 x: dtype=float16、float32 format=ND required
101+输出 y: dtype=f
102+2. **[该算子到底有没有 aclnn 对外接口]** `norm/lp_norm_reduce/README.md` 未见 op_api/aclnn_* 且 README 未明确声明
103+3. **[lp_norm_reduce 的 golden 实现是否与 README 计算公式一致]** `norm/lp_norm_reduce/tests/assets/_golden_perf.py` README 公式:计算公式:记$a_i = \lvert x_i \rvert$,$S$为规范化后的归约轴集合(`axes`为空表示全轴,负轴按`axis + rank`折算,重复轴去重)。 当`p`为0时,统计非零元
104+4. **[lp_norm_reduce 的 golden 实现是否与 README 计算公式一致]** `norm/lp_norm_reduce/tests/assets/golden.py` README 公式:计算公式:记$a_i = \lvert x_i \rvert$,$S$为规范化后的归约轴集合(`axes`为空表示全轴,负轴按`axis + rank`折算,重复轴去重)。 当`p`为0时,统计非零元
105+5. **[整型除零可达性:除数 rSplitChunkCnt_]** `norm/lp_norm_reduce/op_kernel/arch35/lp_norm_reduce_base.h:634` rChunkIdx = rIdx % rSplitChunkCnt_;
106+6. **[整型除零可达性:除数 rSplitChunkCnt_]** `norm/lp_norm_reduce/op_kernel/arch35/lp_norm_reduce_base.h:635` int64_t rLoopRem = rIdx / rSplitChunkCnt_;
107+7. **[整型除零可达性:除数 axisSize]** `norm/lp_norm_reduce/op_kernel/arch35/lp_norm_reduce_base.h:933` const int64_t axisIdx = outerRem % axisSize;
108+8. **[整型除零可达性:除数 dtBytes]** `norm/lp_norm_reduce/op_kernel/arch35/lp_norm_reduce_base.h:938` const int64_t ubOffElems = addUbOffBytes / dtBytes;
109+9. **[lp_norm_reduce 的空 Tensor 是否逐轴枚举过]** `norm/lp_norm_reduce/tests` 测试里出现的含 0 shape 形态:['(0,', ', 0)', ', 0,', ',0,', '[\n 0\n ]', '[\n
110+10. **[golden 判据说明 vs 实际实现]** `/tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september/LpNormReduce/04_golden/GOLDEN_REF.md` # LpNormReduce Golden 标杆
111+11. **[07 表每格 PASS 的依据是否成立]** `/tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september/LpNormReduce/07_self_verification.xlsx` 07_self_verification.xlsx
112+12. **[06_operator_info.xlsx 的「不涉及」依据]** `/tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september/LpNormReduce/06_operator_info.xlsx` aclnn 接口、torch 单算子接口、torch 图模式接口、tf 接口、onnx 接口、融合规则名称
113+13. **[07_self_verification.xlsx 的「不涉及」依据]** `/tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september/LpNormReduce/07_self_verification.xlsx` 通路验证
114+14. **[lp_norm_reduce 的功能说明与计算公式是否与内核实现一致]** `norm/lp_norm_reduce/README.md` - 算子功能:计算Lp范数的归约段。对输入`x`逐元素取绝对值后,沿属性`axes`指定的轴做归约,归约算子由属性`p`决定。本算子只做归约,不做最后的$\frac{1}{p}$次开方。完整的Lp范数由LpNormRed
115+15. **[lp_norm_reduce 的约束说明是否属实且齐全]** `norm/lp_norm_reduce/README.md` - 本算子是面向旧GEIR固化图的兼容算子,新增场景请使用LpNormReduceV2算子。
116+- 本算子只输出Lp范数的归约结果,不做$\frac{1}{p}$次开方;FLOAT16/FLOAT完整范数可再串联匹配的Lp
117+16. **[lp_norm_reduce 的 A5 独有约束是否在资料里独立描述、且未改动 A2 表述]** `norm/lp_norm_reduce/README.md` ---- arch35(A5) 侧独有拒收点 ----
118+lp_norm_reduce_tiling_arch35.cpp:49 #include "op_common/log/log.h"
119+17. **[lp_norm_reduce 参数表里的语义描述是否与实现一致]** `norm/lp_norm_reduce/README.md` x|公式中的`x`,表示待归约张量。rank范围为0到8,支持动态shape与动态rank。
120+y|公式中的输出`y`。数据类型与`x`一致,shape由`axes`与`keepdim`决定。
121+p|公式中的`p`,表示
122+18. **[lp_norm_reduce 资料里的数值/规模断言是否有代码依据]** `norm/lp_norm_reduce/README.md` - 算子功能:计算Lp范数的归约段。对输入`x`逐元素取绝对值后,沿属性`axes`指定的轴做归约,归约算子由属性`p`决定。本算子只做归约,不做最后的$\frac{1}{p}$次开方。完整的Lp范数由LpNormRed
123+ 
124+## 执行记录(真跑过的检查,过与不过都在这)
125+ 
126+| 组 | 查了什么 | 结果 |
127+|---|---|---|
128+| 0 | lp_norm_reduce 扫描定义域 | 实现闭包 14 个文件,全在算子目录内 |
129+| 1 | 位宽与上界扫描 | 扫了 14 个代码文件(tests/ 豁免) |
130+| 2 | 内存与计算安全扫描 | 扫了 23 个改动文件(kernel/host 分开判) |
131+| 3 | 校验与防护扫描 | 扫了 23 个改动文件 |
132+| 5 | LpNormReduce 通路对账 | A2 ['GE 图'] vs A5 ['GE 图'] |
133+| 7 | LpNormReduce 产品支持对账 | README 声明 {ascend950:√, ascend910_93:√, ascend910b:√, ascend310b:√, ascend310p:√, ascend910:√};基线(canndev∪def) {ascend950:True, ascend910_93:True, ascend910b:True, ascend310b:True, ascend310p:True, ascend910:True};def AddConfig ['ascend950'] |
134+| 6 | 原型三处一致比对 | 比对了 1 个算子的 proto×def×infershape 属性 |
135+| 9 | lp_norm_reduce op_api_list 条目 | 本算子无 aclnn 接口(未见 op_api/aclnn_* 且 README 未明确声明)→ 不该出现在 aclnn 清单里,**不缺条目**(通用清单 op_list.md 另行检查) |
136+| 9 | 跑 golden _golden_perf.py | ❌ ModuleNotFoundError: No module named 'golden' |
137+| 9 | 跑 golden golden.py | ❌ 找不到 golden 入口函数(无 __golden__ 注册、也无 *_golden 函数) |
138+| 10 | clang-format 21.1.4 --dry-run --Werror | 扫了 14 个 C/C++ 文件,3 个不合规 |
139+| 11 | CleanCode 度量扫描 | 扫了 23 个改动文件 |
140+| 12 | lp_norm_reduce op_api_list.md 核对 | op_api_list.md 里没找到本算子条目 |
141+| 12 | 资料规范扫描 | 扫了 23 个改动文件里的文档/表格行;另按 §8 公共文档写作规范逐条核了 1 个算子的 README/op_list/op_api_list |
142+| 14 | DFX 与特殊值扫描 | 扫了 23 个改动文件(除零/空Tensor/inf-nan/golden往返 → 待判题) |
143+| 16 | lp_norm_reduce dtype 三角 | def 注册 ['bfloat16', 'float16', 'float32'],UT 覆盖 ['float16', 'float32'] |
144+| 16 | lp_norm_reduce 空 Tensor 三角 | README 声明=是 / 实现早退=有 / UT 零元素用例=有 ✅ |
145+| 16 | lp_norm_reduce 属性 keepdim 分支 | true / false 两侧均有用例 ✅ |
146+| 17 | lp_norm_reduce/golden.py 随机种子 | 已设固定 seed ✅ |
147+| 18 | LpNormReduce A2 torch 通路 | 未给 op-plugin 路径 → torch 维未执行 |
148+| 18 | LpNormReduce A2 torch 通路 | 未给 op-plugin 路径 → torch 维未执行 |
149+| 18 | lp_norm_reduce A2 支持范围清单 | 共 16 项,A2 实有 13 项:通路/GE 图;input 参数/x;dtype/x:float16;dtype/x:float32;format/x:ND;output 参数/y;dtype/y:float16;dtype/y:float32;format/y:ND;属性/p;属性/axes;属性/keepdim;属性/epsilon |
150+| 19 | 语义判定候选点 | 定位到 9 个待判点 ⚠️ 尚未派单判定 |
151+| 20 | 交付件内容判定候选点 | 定位到 4 个待判点 ⚠️ 尚未派单判定 |
152+| 21 | lp_norm_reduce 异常用例预判 | 无 docs/aclnn*.md → 该算子不走 aclnn 通路,测试侧的 aclnn 异常轮次不适用 |
153+| 22 | lp_norm_reduce 性能达标预判(LpNormReduce_performance.csv) | 200 例|取 folded_G/N 列(判据:folded_G/N 低于该算子适用阈值即判不达标,阈值~1.2 之间挂待判定)|均值 G/N 0.979(要求 >1.2)|最低 G/N 0.124@sys_tpl6_p5_bf16_0848(要求 >=0.5)|低于下限 52 例 |
154+| 23 | lp_norm_reduce 新鲜度 | 4 个结果产物|源码最新 2026-09-27 17:20(末次功能性提交 682c7f87e perf(lp_norm_reduce): fast-path huge finite p and add compiled baseline)→ 旧于源码 1 个|binary 侧未查(未给 --vendor) |
155+| 24 | lp_norm_reduce 非连续逐参数对账 | 无 aclnn 文档(缺失由组 9 报),本组无从比对 |
156+| 27 | lp_norm_reduce 确定性声明核实 | 未执行:op_api_list.md 里没有本算子条目(无 aclnn 接口的算子本就不登记) |
157+| 27 | lp_norm_reduce aclnn 文档比对 | 未执行:算子目录下没有 docs/aclnn*.md(GE 图内部算子多属此类)——按位比 dtype、README↔aclnn 一致性、两份文档产品支持矛盾三类均未查 |
158+ 
159+## 基线与范围(哪组按什么权威源判、哪组没跑)
160+ 
161+| 组 | 基线 |
162+|---|---|
163+| 1 | 基线未声明(仅查本仓,全称否定不成立) |
164+| 2 | common-issues §A1/A2/A6/§C1 的真崩因模式(仅查本仓改动文件) |
165+| 3 | 基线未声明(仅查本仓,全称否定不成立) |
166+| 5 | canndev op_info_cfg(/workspace/cannbot-dev/LpNormReduce/canndev)的 [OpName] 段 + 本仓 def |
167+| 6 | IR proto 声明 > op_info_cfg 注册 > 文档表格(多处不一致时按此序判锚) |
168+| 7 | canndev op_info_cfg(/workspace/cannbot-dev/LpNormReduce/canndev)逐 SOC 的 [OpName] 段 |
169+| 8 | 基线未声明(仅查本仓,全称否定不成立) |
170+| 9 | handover-deliverables §4 + 红线 R3 + **本仓多数派实测**:README.md 596/637、tests/assets 334/637、tests/ut/op_host 588/637、tests/ut/op_kernel 334/637、examples 575/637、op_graph 563/637、tests/st 358/637 |
171+| 10 | .pre-commit-config.yaml pinned:clang-format 18.1.8 / ruff 0.14.14;本机 clang-format 21.1.4 |
172+| 11 | CodeCheck 实测阈值:函数 nbnc>50、头文件>500 行、重复块≥10 行;圈复杂度>15(业界通用默认,CodeCheck 权威值取不到,本项按提示报、不作挡合入结论) |
173+| 12 | 基线未声明(仅查本仓,全称否定不成立) |
174+| 14 | common-issues §A6/B5/B7 + handover §6.x DFX 声明(仅查本仓改动文件) |
175+| 15 | handover-deliverables 的 7 项清单|交付件来源:用户指定路径 /tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september(checkout HEAD=2026-09-27 1fa9e36(未与远端比对,可能落后)) |
176+| 16 | 算子自身的声明(README/def)× 实现(kernel/tiling/infershape)× 测试(tests/**)三方比对,不依赖外部对照物 |
177+| 17 | 测试文件自身的写法(仅查本仓 tests/ 与 op_kernel 入口) |
178+| 18 | canndev 同名算子的 IR 注释 + InferShape 函数体 + op_info_cfg |
179+| 19 | 脚本定位候选点 + LLM 定向判定(本组不由正则下结论) |
180+| 20 | 交付件正文 + 06/07 表(脚本出题,LLM 判定;本组不由正则下结论) |
181+| 21 | 本算子 aclnn 文档的返回码表(测试侧 exception-design 的出题输入) × L2 实现里的校验落点;两侧都取不到时记为未执行 |
182+| 22 | test-bot-dev performance-evaluation 的芯片对阈值(G/N 折算后的下限:950PR/A100=0.5、950DT/910B=1.0、默认 1.2)|性能数据来源:用户指定路径 /tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september(checkout HEAD=2026-09-27 1fa9e36(未与远端比对,可能落后)) |
183+| 23 | 红线 R1:验证结果产物必须新于 ①算子源码 ②部署 binary —— **未给 --vendor,本侧未查**|交付件来源:用户指定路径 /tmp/lpnorm-myopen-pr.ncHCiu/changwei_deliverables/september(checkout HEAD=2026-09-27 1fa9e36(未与远端比对,可能落后)) |
184+| 24 | aclnn 文档参数表(逐参数)× def 逐参数连续化策略 × aclnn 签名 ref 配对 |
185+| 25 | A2/A3 既有 IR 原型(发布包 op_graph/inc 遗留域头) > 本仓 IR proto > op_info_cfg > 文档表格 |
186+| 26 | 内置包可达性(op_graph/*_proto.h → merge_proto.py 合并产物) > 交付件通路声明 |
187+| 27 | 基线未声明(仅查本仓,全称否定不成立) |
188+ 
189+## 跳过说明(这些组没有结论)
190+ 
191+- 组 4(A2/A5 隔离与双代布局):算子模式按目录全量扫,没有「本次改了什么」这个输入 → 本组跳过(要查请改用 --base/--head)
192+- 组 13(提交与 PR 卫生):算子模式按目录全量扫,没有「本次改了什么」这个输入 → 本组跳过(要查请改用 --base/--head)