| 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] 插件归位 Co-authored-by: nextyale<yaochen15@huawei.com> # message auto-generated for no-merge-commit merge: !4626 merge issue2302 into master [fix] 插件归位 Created-by: nextyale Commit-by: nextyale Merged-by: cann-robot Description: ## 描述 迁移算子插件到对应目录 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2302 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 迁移插件 See merge request: cann/ops-math!4626 | 2 months ago | |
[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 | |
[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 | |
[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 | |
[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 | |
math仓算子适配350 Co-authored-by: zhouliang<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !5906 merge master into master math仓算子适配350 Created-by: zhou-liang1027 Commit-by: zhouliang Merged-by: cann-robot Description: ## 描述 math仓算子适配350 ## 关联的Issue [math仓算子适配350](https://gitcode.com/cann/ops-math/issues/3463) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5906 | 1 month ago | |
[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 |
Spence
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:对输入张量的每个元素计算Spence函数(dilogarithm,双对数函数)值后输出。
-
计算公式:
Spence(x)=∫1xlnt1−t dt=Li2(1−x)\text{Spence}(x) = \int_1^x \frac{\ln t}{1 - t} \, dt = \text{Li}_2(1 - x) Spence(x)=∫1x1−tlntdt=Li2(1−x)
特殊值:
- x<0x < 0x<0 时输出 NaN
- x=0x = 0x=0 时输出 π2/6≈1.6449\pi^2/6 \approx 1.6449π2/6≈1.6449
- x=1x = 1x=1 时输出 000
- x=+∞x = +\inftyx=+∞ 时输出 NaN
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | Spence函数的自变量,对应公式中x。x < 0的元素输出NaN。 | FLOAT16、FLOAT、BFLOAT16 | ND |
| y | 输出 | Spence函数的计算结果,对应公式中Spence(x)。 | FLOAT16、FLOAT、BFLOAT16 | ND |
约束说明
- FLOAT16、BFLOAT16输入在kernel内部提升到FLOAT32计算,结果再转回原始数据类型。
- 输入维度数不超过8,超过时算子报错;支持标量输入(按含1个元素的Tensor处理)、空Tensor、动态Shape与动态Rank。
- 非连续输入由框架自动连续化后参与计算。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| GE图模式 | test_geir_spence | 通过GE图模式调用Spence算子,定义算子IR的原型文件见spence_proto.h。 |