Open
docs(lp-norm-reduce): 对齐交付通路与精度证据 #8
raoliang_sacAdd on Sep 27
docs(lp-norm-reduce): 对齐交付通路与精度证据 #8
Open
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
Mchangwei_deliverables/september/LpNormReduce/05_test_result/generalization/LpNormReduce_generalization.csv+1847-1906File content is under review, please try again later
Mchangwei_deliverables/september/LpNormReduce/05_test_result/invoke_path/LpNormReduce_invoke_path.csv+57-21File content is under review, please try again later
Mchangwei_deliverables/september/LpNormReduce/05_test_result/performance/LpNormReduce_performance.csv+207-314File content is under review, please try again later
Mchangwei_deliverables/september/LpNormReduce/05_test_result/precision/LpNormReduce_new_precision_3way.csv+1867-1875File content is under review, please try again later
Binary files do not support preview
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) | ||