| Files | Last commit | Last update |
|---|---|---|
[spence] quality-hardening:大正数NaN修复 + Host校验加固 + TF通路文档与公式勘误 Co-authored-by: zhaixiao1<zhaixiao1@huawei.com> # message auto-generated for no-merge-commit merge: !6543 merge fix/spence-quality-hardening into master [spence] quality-hardening:大正数NaN修复 + Host校验加固 + TF通路文档与公式勘误 Created-by: Onthetreeoh Commit-by: zhaixiao1 Merged-by: cann-robot Description: ## 修改内容 ### 1. 大正数区间 NaN 修复(kernel) - x ∈ (1/FLT_MIN, FLT_MAX] 区间 1/x 为 fp32 次正规(FTZ→0),Ln(0)=-inf 与 ln(1-y)=0 相乘得 NaN;改用恒等式 **ln(1/x)=-ln(x)** 对原始输入取对数,结果为有限负数 -½ln²(x)-π²/6+O(1/x),与 fp64 oracle 及竞品 TF 一致 - tiling_data 字段注释同步澄清;tiling UT 补充大数区间用例 ### 2. Host 校验加固(约束与 canndev A2/A3 实现一致) - **InferShape4Spence 增加 rank>8 独立拒绝**:canndev TBE 框架默认 RANK_LIMIT=8 为同约束;本仓原先仅依赖 tiling 校验,绕过 tiling 的调用路径会得到 9 维输出而非报错 - **InferDataType4Spence 增加 dtype 白名单校验**(DT_FLOAT/DT_FLOAT16/DT_BF16,与 canndev check_dtype 白名单同集) ### 3. 约束对齐(移除较 canndev A2/A3 更严格的校验) - tiling 删除输入/输出 FORMAT_ND 双查——canndev 声明 ND 但不做 format 强制(逐元素算子对 format 标签不敏感,A2/A3 上带 NCHW 标签的图可正常执行);同步删除 NCHW 拒绝 UT 用例 ### 4. 文档与示例 - proto.h 注释与 docs/zh/op_list.md 公式勘误(积分上限 0→(1-x),标注 = Li₂(1-x)) - 示例 WriteDataToFile 修复 fwrite 短写路径文件句柄泄漏 - README 删除产品交付范围说明段与 TensorFlow 调用说明段 ## 验证 - UT:69/69 通过(tiling 参数化 26 + tiling data 22 + infershape 21,含 rank>8 拒绝用例) - 三方精度(NPU vs CPU TF golden vs A100 TF 竞品,cross_check L1):312 例套件 294 例执行,275 PASS + 13 例 rank-0 binary 模式 PASS(dyn 在线编译崩溃为 CANN 9.2.0 工具链对空 shape 的已知缺陷,内置 Exp 同栈复现,非算子问题);4 例大正数边界用例为判据比值边界效应(NPU 相对 fp64 oracle 偏差 ~6e-8 = fp32 半 ulp) - 性能:修复仅涉 host 侧与校验逻辑,kernel 数值路径不变;新增 8 例计时(8192 分块整轮/无尾轮路径首次确定性命中,满核 72 AIV,~65 G elem/s) See merge request: cann/ops-math!6543 | 18 days ago | |
fix(spence): 转测整改——def驱动dtype/红线TOPN/量纲修正,重写GEIR example Co-authored-by: zhaixiao1<zhaixiao1@huawei.com> # message auto-generated for no-merge-commit merge: !5681 merge feat_spence_transfer_remediation into master fix(spence): 转测整改——def驱动dtype/红线TOPN/量纲修正,重写GEIR example Created-by: Onthetreeoh Commit-by: zhaixiao1 Merged-by: cann-robot Description: ## 整改内容(spence 转测准入问题闭环) ### 1. 算子侧整改(对应转测扫描/代码检视发现项) | 整改项 | 内容 | |---|---| | def 驱动 dtype(检查项 7) | 删除 spence_tiling_key.h 的 ASCENDC_TPL_DATATYPE_DECL 重复编码;kernel 入口改 extern "C" + DTYPE_X;TilingKey 恒 0(单变体) | | 红线 SEC-4.1 / TOPK#7 | Tiling 增加 dim0<0 拒绝校验(防 GetShapeSize 负值/INT64_MIN 溢出下溢) | | 审计项 format 约束 | x/y origin+storage 四路 FORMAT_ND 严格校验 | | 红线 TOPK#8 / SEC-2.2 | total_/globalTotal/chunks 及 GM 索引 int64 化,消除 uint32 窄化回绕;空 tensor blockIdx+1<numBlocks | | 量纲错配 | maxElemNum = ubSize / bufferDivisor、blockAlignElems = GetUbBlockSize()/elemBytes(FP32 ubFormer=31744 / FP16·BF16=21120,与 DESIGN §3.10 一致) | | 性能 PERF-5 | SPENCE_CHUNK 256→8192(单次 GM 搬运 FP32 32KB / FP16·BF16 16KB) | | 代码规范 | TWO_F 常量替换魔鬼数字、出参统一 T&、单参构造 explicit | ### 2. GEIR example 整改(检查项 5) - **重写静态 example**:修复原 GenOnesData 以 int32 位模式填 float 的缺陷,改为 spence(2)=-π²/12 数值校验 + 规范日志行 - **清理**:删除 examples/ 根级陈旧副本(仓内惯例仅保留 examples/arch35/) ## 验证 - UT:math_op_host_ut --gtest_filter='*Spence*' **64/64 PASSED**(tiling 24 + tiling data 22 + infershape 18) - Kernel 编译:build.sh --opkernel --soc=ascend950 --ops=spence 成功(3 个 dtype 变体按 def 展开) - TTK 两方精度:**215/215 PASS**(fp32/fp16/bf16,含特殊值/空 tensor/0 维) - GEIR 实跑:静态 1/1 - TTK 异常场景:dtype(int64/float64)/format(NCHW)/rank(9D、10D)**5 个有效拦截、0 未拦截、0 不可判定**;e2e Cast→Spence 图 kernel_count=2(Cast+Spence)精度 PASS See merge request: cann/ops-math!5681 | 1 month ago |
| Files | Last commit | Last update |
|---|---|---|
| 18 days ago | ||
| 1 month ago |