| Files | Last commit | Last update |
|---|---|---|
产品名变更 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 | |
refactor: 统一 experimental 目录代码风格(全仓 clang-format) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3382 merge master into master refactor: 统一 experimental 目录代码风格(全仓 clang-format) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 对 experimental/ 目录下的算子源码统一执行 clang-format 格式化,使全仓代码风格与根目录 .clang-format 配置保持一致。 本次改动范围: - 共 1279 个文件,涵盖 experimental/math(1151)与 experimental/conversion(128)两大目录。 - 涉及代码层级:op_kernel(490)、op_host(375)、op_api(200)、examples(171)、tests(156)、op_graph(37)。 - 文件类型:.cpp(834)、.h(445)。 - 涉及硬件分支目录:arch35(48)、arch32(2)。 改动内容为纯格式化(缩进、空格、对齐、单行语句拆分为多行、指针 * 贴合类型等),不涉及任何逻辑修改、新增文件或删除文件,代码语义保持不变。 ## 关联的Issue #1986 ## 测试 clang-format 格式化不改变代码语义,无需新增功能测试;格式化后的算子代码在编译与既有单测/二级冒烟用例下保持原有行为。 ## 文档更新 无。本次仅对源码做格式化,未修改任何文档文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化(clang-format 全仓风格统一) See merge request: cann/ops-math!3382 | 4 months ago | |
refactor: 完成公共头文件迁移并修复关联验证问题 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !6400 merge refactor/math-prefix-common-headers-1015 into master refactor: 完成公共头文件迁移并修复关联验证问题 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 完成 ops-math 剩余公共头文件引用迁移,清理会与其他算子仓同名的兼容转发头。迁移同时触发此前暂缓算子的构建和冒烟,因此一并修复已复现的 UT 状态污染、SDK 类型冲突及示例 executor 生命周期问题。 - 将 Sin 的引用改为 op_api/level2_base_math.h,将 experimental Atan2、Tile、Polar 的引用改为 op_api/op_api_def_math.h。 - 全仓审计确认 level2_base.h、level2_base_caculation.h、op_api_def.h 的引用均为 0,删除这三个兼容转发头;清理 classify_rule.yaml 中两条失效路径,保留现有 canonical 头文件分类。分类配置不作为包过滤规则。 - Sin、Atan2 的每个 UT 用例保存并恢复平台 stub 的原始 SoC 和架构覆盖字段,避免负向 BF16 用例污染后续测试;保留全部原有用例和预期。 - Tile 删除与新版 SDK 冲突的全局 complex64 = uint64_t 别名,在 kernel 入口为 complex64 输入局部选择 uint64_t,保持原有按 64 位原始数据复制的行为。 - Polar 的两个示例在重复调用前显式启用 executor 复用,结束后销毁 executor;检查同步和结果拷贝错误,将精度失败和用例失败传递为非零退出码。保留原有五组形状、warmup 次数、计时次数和精度阈值。 共 14 个文件,+192/-201。所改文件包含 pre-commit 要求的 clang-format 18.1.8 调整,其中 tile.h 的 171 行 diff 主要为格式变化;已与格式化后的基线逐项比较,该头文件的逻辑改动仅删除五行旧类型别名块。 ## 关联的Issue Issue [#3243](https://gitcode.com/cann/ops-math/issues/3243)。 ## 测试 验证环境:CANN 9.0.0,aarch64 / Ascend910B3。 - 全部 11 个修改的现有文件通过容器 pre-commit 和显式 OAT;git diff --check、旧头文件零引用审计通过。 - Sin:32/32 focused UT;sin/sub/tan/tanh_grad 组合正常顺序和随机顺序(seed 17)均 116/116 通过。未修复的干净基线可复现相同 5 个 BF16 失败。 - Atan2:21/21 focused UT;atan/atan2/cross 组合正常顺序和随机顺序(seed 17)均 51/51 通过。 - 当前完整 diff 经仓库 CI 生成器选择的以下命令全部通过: bash bash build.sh -u -j16 --experimental --ops=atan2,polar,tile --opapi --soc=ascend910b bash build.sh -u -j16 --experimental --ops=tile --opkernel --soc=ascend910b bash build.sh --pkg -j16 --experimental --vendor_name=experimental --ops=atan2,polar,tile - 上述 op_api UT 为 23/23(Atan2 21 个、Repeat 2 个;Polar 无 op_api UT);Tile kernel UT 为 3/3,三组比较均 max_diff=0.0。 - 三算子实验包构建及只读完整性校验 --check --noexec 通过。检查实际包内容:含公开 API 头、libcust_opapi.so、3 个 Atan2 / 1 个 Polar / 24 个 Tile kernel 对象,不含三个旧公共头。实际 Polar 对象依赖 canonical 头文件。 - Tile 在 NPU 1 上完成 float32 和三组 complex64 实机检查,输出逐位一致,覆盖负零、NaN、无穷及次正规数。 - Polar 两个示例各 5/5 实机用例通过,所有元素错误计数为 0;原始 REF 示例在相同自定义库下用 GDB 复现 malloc_consolidate(): unaligned fastbin chunk detected / SIGABRT。两个示例均按 CI 的 -lcust_opapi 方式链接,不将 REF 文件名视为系统库对照。 - 实机 Polar 验证副本仅将设备常量从 0 改为 1,以避开 NPU 0 已有进程数限制;仓内示例仍使用设备 0。验证后源码 SHA256 和容器 vendor 配置均未改变,使用包的 staging 目录,无需安装到 SDK。 验证边界:以上为 CANN 9.0.0 本地容器结果,CANN 9.3 双架构 CI 和 A2 PreSmoke 待线上验证。全量常规 --pkg 构建仍被未修改的 conversion/concat_d/op_graph/fusion_pass/concat_to_concatd_fusion_pass.cpp 与 CANN 9.0 GE SubgraphRewriter::Replace 参数不匹配阻塞;干净基线翻译单元使用相同参数可复现,三算子实验包已通过。 ## 文档更新 无仓内文档变更;变更范围、历史问题、验证结果及限制已汇总于本 MR 描述。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:公共头文件引用迁移与兼容转发头清理 See merge request: cann/ops-math!6400 | 26 days ago | |
refactor: 统一 experimental 目录代码风格(全仓 clang-format) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3382 merge master into master refactor: 统一 experimental 目录代码风格(全仓 clang-format) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 对 experimental/ 目录下的算子源码统一执行 clang-format 格式化,使全仓代码风格与根目录 .clang-format 配置保持一致。 本次改动范围: - 共 1279 个文件,涵盖 experimental/math(1151)与 experimental/conversion(128)两大目录。 - 涉及代码层级:op_kernel(490)、op_host(375)、op_api(200)、examples(171)、tests(156)、op_graph(37)。 - 文件类型:.cpp(834)、.h(445)。 - 涉及硬件分支目录:arch35(48)、arch32(2)。 改动内容为纯格式化(缩进、空格、对齐、单行语句拆分为多行、指针 * 贴合类型等),不涉及任何逻辑修改、新增文件或删除文件,代码语义保持不变。 ## 关联的Issue #1986 ## 测试 clang-format 格式化不改变代码语义,无需新增功能测试;格式化后的算子代码在编译与既有单测/二级冒烟用例下保持原有行为。 ## 文档更新 无。本次仅对源码做格式化,未修改任何文档文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化(clang-format 全仓风格统一) See merge request: cann/ops-math!3382 | 4 months ago | |
refactor: 统一 experimental 目录代码风格(全仓 clang-format) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3382 merge master into master refactor: 统一 experimental 目录代码风格(全仓 clang-format) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 对 experimental/ 目录下的算子源码统一执行 clang-format 格式化,使全仓代码风格与根目录 .clang-format 配置保持一致。 本次改动范围: - 共 1279 个文件,涵盖 experimental/math(1151)与 experimental/conversion(128)两大目录。 - 涉及代码层级:op_kernel(490)、op_host(375)、op_api(200)、examples(171)、tests(156)、op_graph(37)。 - 文件类型:.cpp(834)、.h(445)。 - 涉及硬件分支目录:arch35(48)、arch32(2)。 改动内容为纯格式化(缩进、空格、对齐、单行语句拆分为多行、指针 * 贴合类型等),不涉及任何逻辑修改、新增文件或删除文件,代码语义保持不变。 ## 关联的Issue #1986 ## 测试 clang-format 格式化不改变代码语义,无需新增功能测试;格式化后的算子代码在编译与既有单测/二级冒烟用例下保持原有行为。 ## 文档更新 无。本次仅对源码做格式化,未修改任何文档文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化(clang-format 全仓风格统一) See merge request: cann/ops-math!3382 | 4 months ago | |
refactor: 完成公共头文件迁移并修复关联验证问题 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !6400 merge refactor/math-prefix-common-headers-1015 into master refactor: 完成公共头文件迁移并修复关联验证问题 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 完成 ops-math 剩余公共头文件引用迁移,清理会与其他算子仓同名的兼容转发头。迁移同时触发此前暂缓算子的构建和冒烟,因此一并修复已复现的 UT 状态污染、SDK 类型冲突及示例 executor 生命周期问题。 - 将 Sin 的引用改为 op_api/level2_base_math.h,将 experimental Atan2、Tile、Polar 的引用改为 op_api/op_api_def_math.h。 - 全仓审计确认 level2_base.h、level2_base_caculation.h、op_api_def.h 的引用均为 0,删除这三个兼容转发头;清理 classify_rule.yaml 中两条失效路径,保留现有 canonical 头文件分类。分类配置不作为包过滤规则。 - Sin、Atan2 的每个 UT 用例保存并恢复平台 stub 的原始 SoC 和架构覆盖字段,避免负向 BF16 用例污染后续测试;保留全部原有用例和预期。 - Tile 删除与新版 SDK 冲突的全局 complex64 = uint64_t 别名,在 kernel 入口为 complex64 输入局部选择 uint64_t,保持原有按 64 位原始数据复制的行为。 - Polar 的两个示例在重复调用前显式启用 executor 复用,结束后销毁 executor;检查同步和结果拷贝错误,将精度失败和用例失败传递为非零退出码。保留原有五组形状、warmup 次数、计时次数和精度阈值。 共 14 个文件,+192/-201。所改文件包含 pre-commit 要求的 clang-format 18.1.8 调整,其中 tile.h 的 171 行 diff 主要为格式变化;已与格式化后的基线逐项比较,该头文件的逻辑改动仅删除五行旧类型别名块。 ## 关联的Issue Issue [#3243](https://gitcode.com/cann/ops-math/issues/3243)。 ## 测试 验证环境:CANN 9.0.0,aarch64 / Ascend910B3。 - 全部 11 个修改的现有文件通过容器 pre-commit 和显式 OAT;git diff --check、旧头文件零引用审计通过。 - Sin:32/32 focused UT;sin/sub/tan/tanh_grad 组合正常顺序和随机顺序(seed 17)均 116/116 通过。未修复的干净基线可复现相同 5 个 BF16 失败。 - Atan2:21/21 focused UT;atan/atan2/cross 组合正常顺序和随机顺序(seed 17)均 51/51 通过。 - 当前完整 diff 经仓库 CI 生成器选择的以下命令全部通过: bash bash build.sh -u -j16 --experimental --ops=atan2,polar,tile --opapi --soc=ascend910b bash build.sh -u -j16 --experimental --ops=tile --opkernel --soc=ascend910b bash build.sh --pkg -j16 --experimental --vendor_name=experimental --ops=atan2,polar,tile - 上述 op_api UT 为 23/23(Atan2 21 个、Repeat 2 个;Polar 无 op_api UT);Tile kernel UT 为 3/3,三组比较均 max_diff=0.0。 - 三算子实验包构建及只读完整性校验 --check --noexec 通过。检查实际包内容:含公开 API 头、libcust_opapi.so、3 个 Atan2 / 1 个 Polar / 24 个 Tile kernel 对象,不含三个旧公共头。实际 Polar 对象依赖 canonical 头文件。 - Tile 在 NPU 1 上完成 float32 和三组 complex64 实机检查,输出逐位一致,覆盖负零、NaN、无穷及次正规数。 - Polar 两个示例各 5/5 实机用例通过,所有元素错误计数为 0;原始 REF 示例在相同自定义库下用 GDB 复现 malloc_consolidate(): unaligned fastbin chunk detected / SIGABRT。两个示例均按 CI 的 -lcust_opapi 方式链接,不将 REF 文件名视为系统库对照。 - 实机 Polar 验证副本仅将设备常量从 0 改为 1,以避开 NPU 0 已有进程数限制;仓内示例仍使用设备 0。验证后源码 SHA256 和容器 vendor 配置均未改变,使用包的 staging 目录,无需安装到 SDK。 验证边界:以上为 CANN 9.0.0 本地容器结果,CANN 9.3 双架构 CI 和 A2 PreSmoke 待线上验证。全量常规 --pkg 构建仍被未修改的 conversion/concat_d/op_graph/fusion_pass/concat_to_concatd_fusion_pass.cpp 与 CANN 9.0 GE SubgraphRewriter::Replace 参数不匹配阻塞;干净基线翻译单元使用相同参数可复现,三算子实验包已通过。 ## 文档更新 无仓内文档变更;变更范围、历史问题、验证结果及限制已汇总于本 MR 描述。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:公共头文件引用迁移与兼容转发头清理 See merge request: cann/ops-math!6400 | 26 days ago | |
【社区任务】AscendC实现Atan2算子贡献 Co-authored-by: TreamTik<zhangqiang020320@163.com> # message auto-generated for no-merge-commit merge: !2193 merge atan2_final into master 【社区任务】AscendC实现Atan2算子贡献 Created-by: TreamTik Commit-by: TreamTik Merged-by: cann-robot Description: ## 描述 使用AscendC对TBE实现的Atan2算子进行重构,实现了AscendC实现的Atan2算子对Atlas 200/500 A2推理产品和Atlas 800I/T A2硬件的适配。 ## 关联的Issue 关联Issue: https://gitcode.com/cann/ops-math/issues/1220 ## 测试 采用aclnn调用测试及ascendoptest测试工具测试 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2193 | 5 months 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 |
Atan2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Atlas A2系列产品 | √ |
功能说明
-
算子功能:计算两个输入张量 x1(分子,对应数学中的 y)和 x2(分母,对应数学中的 x)的反正切值,返回值的角度范围为 (−π, π],可正确区分所有象限。
-
计算公式:
outi=atan2(x1i, x2i)\text{out}_i = \text{atan2}(x1_i,\ x2_i) outi=atan2(x1i, x2i)
其中 atan2(y,x)\text{atan2}(y, x)atan2(y,x) 定义为:
atan2(y,x)={arctan(y/x)x>0arctan(y/x)+πx<0, y≥0arctan(y/x)−πx<0, y<0+π/2x=0, y>0−π/2x=0, y<00x=0, y=0\text{atan2}(y, x) = \begin{cases} \arctan(y/x) & x > 0 \\ \arctan(y/x) + \pi & x < 0,\ y \ge 0 \\ \arctan(y/x) - \pi & x < 0,\ y < 0 \\ +\pi/2 & x = 0,\ y > 0 \\ -\pi/2 & x = 0,\ y < 0 \\ 0 & x = 0,\ y = 0 \end{cases} atan2(y,x)=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧arctan(y/x)arctan(y/x)+πarctan(y/x)−π+π/2−π/20x>0x<0, y≥0x<0, y<0x=0, y>0x=0, y<0x=0, y=0
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x1 | 输入 | 待计算的分子张量,对应数学公式中的 y。 | fp16、fp32、bf16 | ND |
| x2 | 输入 | 待计算的分母张量,对应数学公式中的 x。 | fp16、fp32、bf16 | ND |
| y | 输出 | 计算结果张量,与输入 shape 相同,值域为 (−π, π]。 | fp16、fp32、bf16 | ND |
约束说明
- x1 与 x2 的 shape 必须一致。
- x1 与 x2 的数据类型必须一致。
- 输出 y 的 shape 与 x1 相同。
- 典型场景建议尾轴为 32B 对齐(float32 为 8 的倍数,float16 为 16 的倍数)。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_atan2.cpp | 通过aclnnAtan2接口方式调用Atan2算子。 |
贡献说明
| 贡献者 | 贡献方 | 贡献算子 | 贡献时间 | 贡献内容 |
|---|---|---|---|---|
| Tream | 个人开发者 | Atan2 | 2025/03 | Atan2 算子适配开源仓 |