| Files | Last commit | Last update |
|---|---|---|
docs(math): XLogY家族aclnn接口文档对齐算子实现 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !7057 merge fix_MD_1031 into master docs(math): XLogY家族aclnn接口文档对齐算子实现 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 修改内容 对齐 XLogY 家族及关联算子 aclnn 接口文档与算子实现,均为文档/注释修复,不涉及实现逻辑改动: 1. **XLogY 家族三份文档**(aclnnXLogYScalarSelf / aclnnXLogYScalarOther / aclnnXLogYTensor,中英文): - 功能说明补全 xlogy 标准分段语义公式(self == 0 且 other != NaN 时输出 0) - 删除标量参数上错误的「支持非连续 Tensor」声明 - 按产品双白名单拆行 dtype 支持列表(910 系列无 BFLOAT16,A2/A3/950 系列含 BFLOAT16) - 161002 错误码表补全维度超过 8 的 rank 子项 - 补全 other / out 的 DOUBLE 类型支持声明 2. **aclnnScale 文档**:x / y 参数维度列 0-8 修正为 1-8(rank=0 时 axis 取值区间为空集,0 维输入一律返回 161002) 3. **aclnn_sinc 头文件**:功能描述 sin 修正为 sinc,非原地接口参数名 selfRef 修正为与签名一致的 self,dtype 注释与实现白名单对齐 4. **aclnnAtanh 中英文文档**:计算公式补 0.5 系数,与标准数学定义及 kernel 实现一致 ## 解决的 Issue - #4239 aclnnXLogYTensor 功能说明缺 self==0->0 特判 - #4240 aclnnInplaceSinc 头文件注释 dtype 声明错误 - #4241 Atanh 文档公式缺 0.5 系数 - #4242 aclnnXLogYScalarOther 功能说明缺 self==0 -> 0 特判 - #4243 aclnnXLogYScalarOther 的 other / out 数据类型支持面漏 DOUBLE - #4244 aclnnXLogYScalarOther 的 other 是 aclScalar,参数表却写「支持非连续的Tensor」 - #4295 aclnnScale 维度列声明与实现不符 - #4297 aclnnXLogYScalarSelf 资料 5 项缺陷 ## 变更文件 共 11 个文件(中英文文档及头文件注释),变更均为文档文本,无算子实现代码改动。 See merge request: cann/ops-math!7057 | 8 days ago | |
[Atanh] 修复公开格式误拦截及 Arch35 GEIR 示例编译问题 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !6832 merge codex/atanh-remove-format-checks-20261029 into master [Atanh] 修复公开格式误拦截及 Arch35 GEIR 示例编译问题 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 Atanh Arch35 tiling 将输入、输出格式限制为 ND,Torch 传入连续的 NCL、NCHW、NCDHW 描述时会报 EZ0017,导致性能问题记录中的 9 条用例无法执行。删除输入、输出两处 ND 格式校验,并补充 ND 与这些公开格式的 12 组输入、输出组合单测。 Arch35 GEIR 示例引用 ../op_graph/atanh_proto.h,相对于 examples/arch35/ 会解析到不存在的 examples/op_graph/,导致编译失败。将其改为 ../../op_graph/atanh_proto.h,同时按 pre-commit 要求规范该示例的许可证头和格式;除 include 路径外,示例的 C++ token 序列保持一致。 ## 关联的Issue - 质量加固跟踪:https://gitcode.com/cann/ops-math/issues/4241 (Atanh Host/API 参数校验、错误码与测试参考不完整)。 - 性能问题及复测用例来源:https://gitcode.com/wangyueting/changwei_yezhao/issues/17 ## 测试 - 删除格式校验后,原来失败的 9 条用例(001、006、007、008、014、018、021、025、031)均通过原始 torch.atanh 调用及全量精度检查;每条采集 100 次 Level0 profile,并确认加载 math 仓实现。 - 5 项相关 host 单测通过,覆盖公开格式、非法 dtype、shape 和元素数量。公开格式回归在原版 tiling 上失败,在修复版上通过。 - CANN 9.1.0-beta.1 / ascend950 的 Atanh 单算子 Host/API、kernel 编译和 .run 打包通过。 - 使用仓库 GEIR runner 相同的 include 与链接参数,Arch35 原文件在修复前复现头文件找不到;修复后的 math/atanh/examples/arch35/test_geir_atanh.cpp 实际源码编译、NPU 图执行均返回 0。默认 complex128、shape [2, 3] 的 6 个输出与 Python cmath.atanh 逐元素比对通过,最大绝对误差约 2.78e-17。该结果验证示例编译与图执行,不代表 AICore dtype 覆盖。 - 追加修复后,三个改动文件的完整 pre-commit 检查通过,包括 clang-format、OAT;git diff --check 通过。tiling 和相关单测源码保持九条重测时的版本,GEIR 示例与单独编译运行通过的版本一致。 - 已知环境问题:完整 host 单测中的 NullContextReportsStageErrorOnce 未收到预期 EZ1008 记录,修改前 tiling 也复现同样失败;其余 5 项通过。GE 初始化另有 SDK 内置 opgraph_nn/opgraph_transformer 缺少 EsCast/EsTranspose 的日志,Atanh 图执行与输出检查均通过。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6832 | 14 days ago | |
迁移开源TF插件--math Co-authored-by: yaochen<yaochen15@huawei.com> # message auto-generated for no-merge-commit merge: !4308 merge transfer-math into master 迁移开源TF插件--math Created-by: nextyale Commit-by: yaochen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:迁移TF插件 See merge request: cann/ops-math!4308 | 3 months ago | |
[CANNBot]质量加固:Atanh Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !6703 merge codex/atanh-bias-quality-20261026 into master [CANNBot]质量加固:Atanh Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 加固 Ascend 950 的 Atanh Host/API 校验:工作区输出指针为空、输入输出元数据不匹配或 shape 非法时,返回失败并按具体原因上报错误。同时完善实际输出 dtype 的 Golden 参考和回归用例。 - 校验 workspace/executor 空指针、输出分配失败,以及输入输出 shape、dtype、ND 格式、负维度和元素数溢出;覆盖标量、空张量和动态推导。 - 缺失参数、shape、dtype、format 分别使用 SDK 标准错误宏;内部 Tiling/推导错误使用 EZ1008、EZ1014。移除上层重复报错,每次失败只上报一次;AICORE/AICPU 入队失败保留实际返回码。 - 在算子实际加载的 math/atanh/CMakeLists.txt 为 Host UT 配置 SDK pkg_inc 路径及 error_manager、nnopbase 依赖,解决标准 UT 构建找不到 registry 头文件的问题。 - Golden 使用 Torch 计算,将完整结果转换到实际输出 dtype,并支持原生 TestSpec、普通输出及原地写回。Kernel/GEIR 输出映射只声明 FP16、BF16、FP32,精度标准统一为 cross_check/L0。 - 补齐 Host 单测入口和 ACLNN 参数检查用例,整理 2217 条不依赖手工输入二进制的回归用例,保留用例 ID、输入定义和数值阈值。 改动限定于 math/atanh/,kernel 数值实现及 REG_OP 定义未变。 ## 关联的 issue 无。 ## 测试 - 对完整 PR 改动范围执行仓库原始配置的 pre-commit run --from-ref cb6b7761771cf0cc924f7dbc731f4de7c71c6acc --to-ref 660e2f1ce42ae084e63d8054825fc884b9a48acd,所有适用检查通过;另一次性扫描全部 10 个适用文件,OAT 通过。CSV 按仓库原配置排除。 - CANN 9.2.0 / ascend950 的 Atanh 单算子编译及 .run 打包通过,包含 Host/API 和 FP16/BF16/FP32 kernel。构建和 CPU 检查使用 SDK devlib 驱动接口。 - 按门禁相同入口 bash build.sh -u --ops=atanh --ophost --soc=ascend950 --cann_3rd_lib_path=<deps> -j2 完整编译并执行 Host 单测,**5/5 通过**,验证分类错误码和失败时单次上报;本地 SDK 为 CANN 9.2.0。SDK 上下文检查复用此前 **10/10 通过** 的结果,覆盖 InferShape、Tiling、InferDataType 缺失输入/输出、正常输入及空 dtype 推导上下文。 - 新增 ACLNN 单测复用此前源码语法编译检查结果;本轮只调整排版,C++ token 序列一致,未执行 ACLNN 单测。 - CSV 结构已验证为 2217 个唯一用例 ID,保留行逐字段不变;本轮 CSV 哈希一致。Golden 计算函数未变,float16、bfloat16、float32 的精度标准统一为 cross_check/L0。 - Golden 输出类型 CPU 检查 **9/9 通过**,覆盖三种支持类型的直接调用与输出元数据、Kernel/GEIR 的 FP64 输出拒绝,以及既有 ACLNN DOUBLE 契约。 - 已复现门禁缺少 base/registry/op_impl_space_registry_v2.h 的编译错误;为实际 testcase 目标补齐 SDK include 根目录后,同一构建入口通过。线上 CANN 9.3 新一轮门禁结果待重跑验证。 - git diff --check 通过。 本轮未执行真机 L0 精度回归,也未运行 NPU 全量回归;2217 是随仓测试资产数量,不表示设备回归通过数。CPU 检查不作为设备精度或性能结论。 ## 文档更新 修正公开接口说明中 Atanh 公式缺失的 0.5 系数。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他:测试资产整理 ## AI/Agent 生成声明 - [ ] 纯人工手写 - [x] AI 辅助编写 - [ ] AI 完全生成 自动化代码核对和上述验证已完成,人工审查待维护者进行。 See merge request: cann/ops-math!6703 | 16 days ago | |
[CANNBot]质量加固:Atanh Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !6703 merge codex/atanh-bias-quality-20261026 into master [CANNBot]质量加固:Atanh Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 加固 Ascend 950 的 Atanh Host/API 校验:工作区输出指针为空、输入输出元数据不匹配或 shape 非法时,返回失败并按具体原因上报错误。同时完善实际输出 dtype 的 Golden 参考和回归用例。 - 校验 workspace/executor 空指针、输出分配失败,以及输入输出 shape、dtype、ND 格式、负维度和元素数溢出;覆盖标量、空张量和动态推导。 - 缺失参数、shape、dtype、format 分别使用 SDK 标准错误宏;内部 Tiling/推导错误使用 EZ1008、EZ1014。移除上层重复报错,每次失败只上报一次;AICORE/AICPU 入队失败保留实际返回码。 - 在算子实际加载的 math/atanh/CMakeLists.txt 为 Host UT 配置 SDK pkg_inc 路径及 error_manager、nnopbase 依赖,解决标准 UT 构建找不到 registry 头文件的问题。 - Golden 使用 Torch 计算,将完整结果转换到实际输出 dtype,并支持原生 TestSpec、普通输出及原地写回。Kernel/GEIR 输出映射只声明 FP16、BF16、FP32,精度标准统一为 cross_check/L0。 - 补齐 Host 单测入口和 ACLNN 参数检查用例,整理 2217 条不依赖手工输入二进制的回归用例,保留用例 ID、输入定义和数值阈值。 改动限定于 math/atanh/,kernel 数值实现及 REG_OP 定义未变。 ## 关联的 issue 无。 ## 测试 - 对完整 PR 改动范围执行仓库原始配置的 pre-commit run --from-ref cb6b7761771cf0cc924f7dbc731f4de7c71c6acc --to-ref 660e2f1ce42ae084e63d8054825fc884b9a48acd,所有适用检查通过;另一次性扫描全部 10 个适用文件,OAT 通过。CSV 按仓库原配置排除。 - CANN 9.2.0 / ascend950 的 Atanh 单算子编译及 .run 打包通过,包含 Host/API 和 FP16/BF16/FP32 kernel。构建和 CPU 检查使用 SDK devlib 驱动接口。 - 按门禁相同入口 bash build.sh -u --ops=atanh --ophost --soc=ascend950 --cann_3rd_lib_path=<deps> -j2 完整编译并执行 Host 单测,**5/5 通过**,验证分类错误码和失败时单次上报;本地 SDK 为 CANN 9.2.0。SDK 上下文检查复用此前 **10/10 通过** 的结果,覆盖 InferShape、Tiling、InferDataType 缺失输入/输出、正常输入及空 dtype 推导上下文。 - 新增 ACLNN 单测复用此前源码语法编译检查结果;本轮只调整排版,C++ token 序列一致,未执行 ACLNN 单测。 - CSV 结构已验证为 2217 个唯一用例 ID,保留行逐字段不变;本轮 CSV 哈希一致。Golden 计算函数未变,float16、bfloat16、float32 的精度标准统一为 cross_check/L0。 - Golden 输出类型 CPU 检查 **9/9 通过**,覆盖三种支持类型的直接调用与输出元数据、Kernel/GEIR 的 FP64 输出拒绝,以及既有 ACLNN DOUBLE 契约。 - 已复现门禁缺少 base/registry/op_impl_space_registry_v2.h 的编译错误;为实际 testcase 目标补齐 SDK include 根目录后,同一构建入口通过。线上 CANN 9.3 新一轮门禁结果待重跑验证。 - git diff --check 通过。 本轮未执行真机 L0 精度回归,也未运行 NPU 全量回归;2217 是随仓测试资产数量,不表示设备回归通过数。CPU 检查不作为设备精度或性能结论。 ## 文档更新 修正公开接口说明中 Atanh 公式缺失的 0.5 系数。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他:测试资产整理 ## AI/Agent 生成声明 - [ ] 纯人工手写 - [x] AI 辅助编写 - [ ] AI 完全生成 自动化代码核对和上述验证已完成,人工审查待维护者进行。 See merge request: cann/ops-math!6703 | 16 days ago | |
fix(atanh): 移除 legacy InferShape 空回调占位 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !7164 merge codex/atanh-remove-empty-legacy-infer-20261105 into master fix(atanh): 移除 legacy InferShape 空回调占位 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 删除 Atanh 对 legacy InferShape 注册表的空回调占位,消除该算子对动态库加载顺序的干预。 此前 PR #6703 引入 kAtanhLegacyInferEmptyFirst("Atanh", ge::InferShapeFunc{})。SDK 的同名 legacy 注册项采用先到者保留的行为;空占位先加载时,后加载的非空回调无法生效。 本次仅修改 math/atanh/op_host/atanh_infershape.cpp:删除空注册、对应匿名命名空间及专用的 graph/operator_factory.h 引用。正常的 IMPL_OP_INFERSHAPE(Atanh).InferShape(InferShapeAtanh) 继续注册生产推导函数。 ## 关联的Issue - 历史加固追踪:#4241。 - 引入该空占位的已合入 PR:#6703。 ## 测试 本地环境为 CANN 9.1.0-beta.1,以下验证均在 CPU 上运行。 - **生产源码编译和链接**:使用本 PR 的 InferShape 源文件构建 Host 共享库成功。 - **注册顺序回归**:将实际 Host 共享库与带调用计数的非空 legacy 回调测试库分别按两种顺序加载,各在独立进程中通过 GE 公共 OperatorFactory::CreateOperator / Operator::InferShapeAndType 接口验证。修复前 Host 先加载时,非空回调调用 0 次且推导失败;修复后两种加载顺序均调用 1 次且推导成功。 - **正常 RTS2 回调**:通过 OpImplSpaceRegistryV2 加载修复后的 Host 库,确认注册的生产 infer_shape 回调存在;普通张量、标量、空张量、动态维度、未知 rank 共 5 类输入的输出 shape 均符合预期,空 context 返回失败。 - **符号检查**:修复后的共享库不再引用 InferShapeFuncRegister 或空占位符号,生产 RTS2 推导函数符号存在。 - **仓库检查**:按原始配置执行 pre-commit run --files math/atanh/op_host/atanh_infershape.cpp,全部适用 hook 通过,OAT 实际扫描 1 个文件并通过;git diff --check 通过。 本轮验证范围为上述 CPU 编译与推导检查;未执行整包构建、GEIR/NPU 回归。线上 CI 尚待触发。 ## 文档更新 无需更新文档。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!7164 | 8 days ago | |
fix/atanh-near-zero-precision Co-authored-by: leaving__<B24040621@njupt.edu.cn> # message auto-generated for no-merge-commit merge: !4482 merge master into master fix/atanh-near-zero-precision Created-by: leaving__ Commit-by: leaving__ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复内容 Atanh 算子在输入值接近零时存在浮点精度损失问题。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2662 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4482 | 2 months ago | |
feat: Acosh/Asin 使能 AICPU 常量折叠 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !4601 merge feat/enable-aicpu-constant-folding-acosh-asin into master feat: Acosh/Asin 使能 AICPU 常量折叠 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 Acosh / Asin 的 opInfo.opsFlag 在 canndev(aicpu_kernel.ini:43 / :251)与 ops-math 侧 *_aicpu_def.cpp 中均已是 OPS_FLAG_OPEN,但两个算子都没有编进 host 侧 libopconstant_folding_math.so——属于「**标志已开、实际不折叠**」的空开状态。 常量折叠生效需要两个条件同时满足:① opsFlag = OPEN;② kernel 编进折叠 so。本 PR 补上条件 ②。 **改动内容** | 文件 | 说明 | |---|---| | math/{acosh,asin}/CMakeLists.txt | add_all_modules_sources(...) 末尾追加 HOSTCPU TRUE | | math/{acosh,asin}/op_kernel_aicpu/*_aicpu.cpp | 增 #include "aicpu/math_aicpu_register.h";注册宏 REGISTER_CPU_KERNEL → OPS_MATH_REGISTER_CPU_KERNELV2 | | math/{acosh,asin}/examples/test_geir_*_const_folding.cpp | 新增 Const → Op → Output 图,写法对齐 #2551 的 test_geir_ceil_const_folding.cpp | | math/{acosh,atanh}/op_kernel_aicpu/CMakeLists.txt | 删除。全仓无 add_subdirectory(.../op_kernel_aicpu),其内容已被 cmake/func.cmake 的 glob 覆盖,属死文件 | opsFlag 未改动(本就是 OPEN)。device-only 依赖体检干净(无 ascend_hal / halSdma / __aarch64__ / asm volatile),无需条件编译隔离。 > **关于 diff 体积**:*_aicpu.cpp 的大段变更是 clang-format 对旧格式文件的整份重排,**语义改动只有上述 2 行**。已用「去空白后逐行比对」确认其余差异全是大括号换行与参数折行,无夹带。与 #2551 中 concat_v2 / strided_slice 等文件情况相同。 ## 关联的Issue #2601 ## 测试 1. **全量构建(必须不带 --ops=)**:bash build.sh --pkg -j16,0 错误。 带 --ops= 会设 ENABLE_CUSTOM=TRUE,使 NOT ENABLE_CUSTOM 不成立、折叠 so 根本不产出,那样的「验证通过」是假绿。 2. **CMake 配置期**:新增 acosh_host_const_obj、asin_host_const_obj 两个目标(连同存量共 10 个)。 3. **so 内容三向对照**(libopconstant_folding_math.so,8146408 字节): - 正向:acosh_aicpu.cpp / asin_aicpu.cpp 源文件名与 Acosh / Asin 类型字符串均命中 - 存量:Conj / Tile / Zeta / TransData / TopKPQDistanceV2 等仍命中,未打破存量 - 反向:8 个 opsFlag=CLOSE 的算子(Asinh、Atanh、TanhGrad、Exp、MatrixDiagV3、MatrixDiagPartV3、ConjugateTranspose、ProdEnvMatACalcRij)全部缺失 - 其中 **Asin 命中而 Asinh 缺失**,排除 strings 子串碰巧匹配 4. **so 进 run 包**:--list 可见于 opp/built-in/op_impl/host_cpu/,与构建产物 md5 一致(7f06b290...)。 5. **V2 注册路径**:新增 .o 中含 weak 符号 aicpu::RegistCpuKernelV2 与 Creator_kAcosh_Kernel / Creator_kAsin_Kernel。 6. **device 侧零回归**:宏在未定义 OPS_MATH_AICPU_HOST_KERNEL 时展开为原 REGISTER_CPU_KERNEL(kAcosh, AcoshCpuKernel),与改动前源码行逐字相同(预处理探针实测)。 7. **AICPU UT:13/13 PASS**(bash build.sh -u --opkernel_aicpu --ops=acosh,asin)。 8. **端到端**:安装 run 包后跑新增的两个 example,折叠日志 Constant folding computation for node acosh_const_folding (type: Acosh) finished, return code: 0.(Asin 同),数值正确;Registered V2 ops from so[libopconstant_folding_math.so] 由 **1 增至 9**。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4601 | 2 months ago | |
[Atanh] 修复原地 Golden 输入污染并兼容 TF 输入 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !7021 merge codex/atanh-inplace-golden-contract-20261102 into master [Atanh] 修复原地 Golden 输入污染并兼容 TF 输入 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 完善 Atanh 原地 ACLNN 通路的测试参考,修复 Golden 改写共享输入造成的精度失败。 TTK 在设备执行前生成 Golden。原来的 AclnnInplaceAtanhTestSpec.golden 通过 inputRef.copy_(result) 写回共享输入;FP64 不会创建升精度副本,后续 ACLNN 调用收到的已经是第一次 atanh 的结果。例如输入 1 会先被 Golden 写成 Inf,设备再计算 atanh(Inf) 得到 NaN。 本 PR 的最终行为: - Golden 保留 inputRef 参数,计算后按其 dtype 完整转换,返回独立的 [result],保持框架输入及底层存储不变。 - 拒绝整型和 BOOL,避免浮点结果被隐式转换回非法的原地输入类型。 - 补充接受 inputRef 的 Torch 三方适配器,使用 [inputRef.clone().atanh_()],使重复参考调用相互独立。 - 实际 ACLNN 的原地写回由测试用例的输出槽 (0,) 回读设备输入缓冲区进行验证;Golden 的 Python 返回对象不承担设备别名验证。 本次仅修改 math/atanh/tests/assets/golden.py,包括对应说明。既有注册、数值计算 helper、FP16/BF16 提升规则、输出 dtype 映射和 Kernel/GEIR L0 标准保持一致。 ## 关联的Issue - Atanh 质量加固跟踪:https://gitcode.com/cann/ops-math/issues/4241 - 原地接口注册及参考合同:https://gitcode.com/wangyueting/changwei_yezhao/issues/40 - 本次共享输入污染导致的精度失败:https://gitcode.com/wangyueting/changwei_yezhao/issues/78 该精度 issue 的 CI 使用 operator-artifacts 中的独立 Golden;本 PR 更新 ops-math 的同类资产,归档仓 Golden 需单独同步后才能对该 CI 生效。 ## 测试 - 新增的定向回归在修改前复现 4 项失败:Golden 修改调用方输入、Golden/三方共用输入时相互影响、FP64 的 NumPy 底层存储被改写。修改后 79 项 CPU 合同检查全部通过。 - CPU 检查覆盖 FP16/BF16/FP32/FP64/COMPLEX64/COMPLEX128,位置与关键字调用,标量、空张量、转置及偏移切片,重复调用独立性,非法类型拒绝,以及 NaN/Inf/正负零语义。核对原有三个注册和 L0 定义。 - 使用正式 python3 -m ttk aclnn 通路,直接加载本 PR 修改后的 math Golden,回放 issue 中 002、003 的原始输入 dump;每条执行 3 次、确定性级别 1,精度和确定性均 PASS。 - 两条回放的输入文件及 Golden 文件均与此前失败基线逐字节一致。002 有限值最大绝对误差为 8.881784197001252e-16;003 的 16,627,603 个输出全部为正 Inf,与 Golden 一致。 - 真机验证环境:Ascend950PR_9579、CANN 9.1.0-beta.1、恢复树 TTK a89e7962。本轮验证本地 ACLNN/NPU 精度,未采集远端三方或性能数据,不代替 CI 精确构建的验收。 - 按 math 仓原配置执行该文件完整 pre-commit,所有适用检查通过,OAT 实际扫描通过;git diff --check 及 AST 范围核验通过。 三方适配器内的 clone 会增加分配与拷贝开销,其整体耗时包含 clone。 ## 文档更新 更新 Golden 文件中的输入保留和独立返回值说明。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 2026-11-11 补充:TF Golden 输入兼容 关联问题: https://gitcode.com/wangyueting/changwei_yezhao/issues/90 归档仓对应修复: https://gitcode.com/opencann/operator-artifacts/pull/417 问题为 TF EagerTensor 被直接送入要求 NumPy 数组的转换函数,导致 TypeError: expected np.ndarray (got tensorflow.python.framework.ops.EagerTensor),TTK 最终判为 GOLDEN_FAILURE。 math 原 Golden 未注册 tf.math.atanh。本次在同一文件 math/atanh/tests/assets/golden.py 补入独立的 TensorFlowAtanhTestSpec:TF 输入经 np.asarray(x.numpy()) 归一化,支持零维标量、空张量和 Variable;借助现有 dtype 转换工具及 _atanh_reference / _numpy_result 生成 NumPy 参考输出,保持输入 dtype/shape,并提供 TF 三方映射。 既有 Kernel/GEIR 和 ACLNN Spec、数值辅助函数、原地输入隔离逻辑保持原样,Kernel/GEIR 仍只支持 FP16/BF16/FP32 并使用 L0;本次未新增 FP64 容差标准。 验证: - 新增 TF 路由的定向检查先复现“未注册”,修复后通过;17 项 TF CPU 检查全部通过,显式确认使用本插件注册,排除默认 CPU 回退假通过。 - 包含 issue 的两条完整规模用例:FP32 (7,406692,7)、FP16 (2451122,);按源仓范围和固定种子 9001/9002 生成输入,Golden 生成、shape/dtype 和输入保持检查通过。 - 原有 79 项 math 接口契约检查全部通过,总计 96 项 CPU 检查通过。 - 完整 pre-commit 通过,包含实际执行的 OAT 扫描;Ruff 未修改已验证文件。 - AST 检查确认原有函数和 Spec 类实现均保持一致,仅新增 TF Spec、注册和说明。 环境:TensorFlow CPU 2.21.0、Torch 2.7.1+cpu、恢复树 ops-test-kit。本次未取得原 CI 输入 dump,未执行 NPU eager/graph_cst/graph_dyn 精度回归;CPU 检查不作为设备精度结论。关联 issue 不自动关闭。 See merge request: cann/ops-math!7021 | 3 days ago | |
[CANNBot]质量加固:Atanh Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !6703 merge codex/atanh-bias-quality-20261026 into master [CANNBot]质量加固:Atanh Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 加固 Ascend 950 的 Atanh Host/API 校验:工作区输出指针为空、输入输出元数据不匹配或 shape 非法时,返回失败并按具体原因上报错误。同时完善实际输出 dtype 的 Golden 参考和回归用例。 - 校验 workspace/executor 空指针、输出分配失败,以及输入输出 shape、dtype、ND 格式、负维度和元素数溢出;覆盖标量、空张量和动态推导。 - 缺失参数、shape、dtype、format 分别使用 SDK 标准错误宏;内部 Tiling/推导错误使用 EZ1008、EZ1014。移除上层重复报错,每次失败只上报一次;AICORE/AICPU 入队失败保留实际返回码。 - 在算子实际加载的 math/atanh/CMakeLists.txt 为 Host UT 配置 SDK pkg_inc 路径及 error_manager、nnopbase 依赖,解决标准 UT 构建找不到 registry 头文件的问题。 - Golden 使用 Torch 计算,将完整结果转换到实际输出 dtype,并支持原生 TestSpec、普通输出及原地写回。Kernel/GEIR 输出映射只声明 FP16、BF16、FP32,精度标准统一为 cross_check/L0。 - 补齐 Host 单测入口和 ACLNN 参数检查用例,整理 2217 条不依赖手工输入二进制的回归用例,保留用例 ID、输入定义和数值阈值。 改动限定于 math/atanh/,kernel 数值实现及 REG_OP 定义未变。 ## 关联的 issue 无。 ## 测试 - 对完整 PR 改动范围执行仓库原始配置的 pre-commit run --from-ref cb6b7761771cf0cc924f7dbc731f4de7c71c6acc --to-ref 660e2f1ce42ae084e63d8054825fc884b9a48acd,所有适用检查通过;另一次性扫描全部 10 个适用文件,OAT 通过。CSV 按仓库原配置排除。 - CANN 9.2.0 / ascend950 的 Atanh 单算子编译及 .run 打包通过,包含 Host/API 和 FP16/BF16/FP32 kernel。构建和 CPU 检查使用 SDK devlib 驱动接口。 - 按门禁相同入口 bash build.sh -u --ops=atanh --ophost --soc=ascend950 --cann_3rd_lib_path=<deps> -j2 完整编译并执行 Host 单测,**5/5 通过**,验证分类错误码和失败时单次上报;本地 SDK 为 CANN 9.2.0。SDK 上下文检查复用此前 **10/10 通过** 的结果,覆盖 InferShape、Tiling、InferDataType 缺失输入/输出、正常输入及空 dtype 推导上下文。 - 新增 ACLNN 单测复用此前源码语法编译检查结果;本轮只调整排版,C++ token 序列一致,未执行 ACLNN 单测。 - CSV 结构已验证为 2217 个唯一用例 ID,保留行逐字段不变;本轮 CSV 哈希一致。Golden 计算函数未变,float16、bfloat16、float32 的精度标准统一为 cross_check/L0。 - Golden 输出类型 CPU 检查 **9/9 通过**,覆盖三种支持类型的直接调用与输出元数据、Kernel/GEIR 的 FP64 输出拒绝,以及既有 ACLNN DOUBLE 契约。 - 已复现门禁缺少 base/registry/op_impl_space_registry_v2.h 的编译错误;为实际 testcase 目标补齐 SDK include 根目录后,同一构建入口通过。线上 CANN 9.3 新一轮门禁结果待重跑验证。 - git diff --check 通过。 本轮未执行真机 L0 精度回归,也未运行 NPU 全量回归;2217 是随仓测试资产数量,不表示设备回归通过数。CPU 检查不作为设备精度或性能结论。 ## 文档更新 修正公开接口说明中 Atanh 公式缺失的 0.5 系数。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他:测试资产整理 ## AI/Agent 生成声明 - [ ] 纯人工手写 - [x] AI 辅助编写 - [ ] AI 完全生成 自动化代码核对和上述验证已完成,人工审查待维护者进行。 See merge request: cann/ops-math!6703 | 16 days ago | |
产品名变更 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5912 merge master into master 产品名变更 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AI处理器对应的产品型号名称更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3258](https://gitcode.com/cann/ops-math/issues/3258) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5912 | 1 month ago | |
docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !7113 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第二批,共409个文件):第一批(已合入)之外的其余全部译稿,覆盖conversion、examples、ge、math、random各类算子README译稿,以及CHANGELOG_en.md、.gitcode PR模板英文版等。 本批内全部仓内链接均指向master已有文件(含第一批已合入的21+2篇译稿),合入后本仓432篇英文文档全部就位,链接完整生效。 本批同时包含4篇基于最新源文档的增量更新(math/ada_cast、math/prod_force_se_a、math/sinkhorn、math/xlogy,对应上游近期文档变更)。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验(本批全部相对链接仅指向master已有文件,无指向本PR外未提交文件的链接),并完成逐篇翻译规范自查与语义校对(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增409个英文译稿文件(*_en.md / .en-US.md),不修改任何现有文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7113 | 9 days ago |
Atanh
English | 简体中文
Contribution Description
| Contributor | Contributed Operator | Contribution Date | Contribution Content |
|---|---|---|---|
| CANN-BOT SIMT | atanh | 2026/05/22 | Added the atanh operator |
Product Support Status
| Product | Supported |
|---|---|
| Ascend 950PR&950DT products | √ |
| Atlas A3 products | √ |
| Atlas A2 products | √ |
| Atlas 200I/500 A2 inference products | √ |
| Atlas inference products | √ |
| Atlas training products | √ |
Function Description
-
Operator function: computes the inverse hyperbolic tangent.
-
Computation formula:
y=atanh(x)=12ln(1+x1−x)y = \text{atanh}(x) = \frac{1}{2} \ln\left(\frac{1+x}{1-x}\right) y=atanh(x)=21ln(1−x1+x)
Parameter Description
| Parameter Name | Input/Output/Attribute | Description | Data Type | Data Format |
|---|---|---|---|---|
| x | Input | Input parameter for the atanh computation, which is x in the formula. The input value range is (-1, 1). | FLOAT16, FLOAT, BF16 | ND |
| y | Output | Result of the atanh computation, which is y in the formula. | FLOAT16, FLOAT, BF16 | ND |
Constraint Description
- The value range of the input x is (-1, 1). If |x|>1, NaN is output; if x=±1, ±Inf is output.
- The output shape is identical to the input shape.
- The output dtype is identical to the input dtype.
Invocation Description
| Invocation Method | Invocation Sample | Description |
|---|---|---|
| aclnn invocation | test_aclnn_atanh | Refer to Operator Invocation to complete operator compilation and verification. |
| Graph-mode invocation | test_geir_atanh | Refer to Operator Invocation to complete operator compilation and verification. |