| Files | Last commit | Last update |
|---|---|---|
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
fix(AccumulateNV2): golden三方绑定改回真竞品算子AccumulateNV2(tf.function图模式) Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6705 merge fix/accumulate-nv2-golden-thirdparty into master fix(AccumulateNV2): golden三方绑定改回真竞品算子AccumulateNV2(tf.function图模式) Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 背景 !6584 合并后,golden 的 ThirdPartyTF 三方绑定经历了两次修正,本 PR 交付最终版本:三方在 GPU server 上以 **TF 官方执行语义**运行**真竞品算子 AccumulateNV2**。 ## 根因(源码复核) tf.raw_ops.AccumulateNV2 是 TF **从未编译过 kernel 的 stub 占位算子**(官方源码列入 OPS_WITHOUT_KERNEL_ALLOWLIST): - 图模式:由 AccumulateNV2RemovePass(core/common_runtime/accumulate_n_optimizer.cc,PRE_PLACEMENT 优化 pass)重写为 TemporaryVariable+AssignAdd 顺序累加链(while 循环内退化为 AddN) - eager 模式:Python wrapper 直接回退 add_n(TF 1.15 math_ops.py 注释:TemporaryVariable not currently supported in eager mode) 因此 TTK xpu-server 的 eager 三方执行**直接调用 raw op 必报 no registered kernels**(两台 GPU server 与本地 CPU 均实测复现),与 TF 版本、服务器环境无关。 ## 修改内容 tests/assets/golden.py ThirdPartyTF: 1. 绑定 tf.raw_ops.AccumulateNV2,用 tf.function 包一层走**图模式**路径——由 TF 官方重写为 TemporaryVariable+AssignAdd 链执行,原始 dtype 顺序累加、不升精度 2. 去掉原实现的 np.asarray 主机绕行:同 shape 张量直传保持在 dispatch 设备(GPU)上;异 shape(aclnnSum 路线)在 device 上 tf.broadcast_to 对齐,TF 拒绝的高秩组合回退 numpy ## 验证(GPU server 176.176.0.134,cross_check L1) | 项目 | 结果 | |------|------| | 精度 8 用例(含 fp16_extreme) | 8/8 PASS(dyn 编译 + bin release 双模式) | | --xpu-perf 三方执行位置 | device_us=6.99、peak_memory_mb=0.00256(真实 GPU 执行) | | 批跑 kernel 路线 85 例 | 62 PASS(23 失败均为已知族:6×zero-dim 编译 bug #1896 + 17×GEIR dyn 用例路线不匹配) | | 批跑 aclnn 路线 84 例 | 84/84 全 PASS(含 8 例异 shape broadcast) | | 批跑 geir 路线(静态 shape 31 + 空 tensor 8) | 39/39 全 PASS | | 三方错误计数(全批次) | 0(no registered kernels / GOLDEN_FAILURE / third_party 错误) | | 浮点 cross_check L1(必须三方参与) | 70 例全 PASS | 附:17 例 GEIR dyn 用例换旧 AddN 绑定对照重跑,17/17 逐条结果一致,证明其失败(TTK 比对框架对动态 shape 元数据输出的 cross_check 缺口)与本改动无关。 关联:cann/ops-math !6584(已合并,本 PR 为其 golden 三方绑定的后续修正) ## 关联的Issue - [Bug-Report|缺陷反馈] AccumulateNV2 golden 三方绑定 eager 直调 TF stub 算子必报 no registered kernels,三方比对无法执行 #4251 https://gitcode.com/cann/ops-math/issues/4251 See merge request: cann/ops-math!6705 | 10 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
适配ascend350 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6165 merge dvlite into master 适配ascend350 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 算子适配ascend350 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3439](https://gitcode.com/cann/ops-math/issues/3439) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6165 | 29 days ago | |
fix(acosh): 质量加固——4项逻辑修复(BF16平台门控/DOUBLE双精度/tiling换算/域外NaN防护)+UT 94.6%+四通路看护集归档 Co-authored-by: dengguojie<dengguojie@huawei.com> # message auto-generated for no-merge-commit merge: !6620 merge hardening/Acosh into master fix(acosh): 质量加固——4项逻辑修复(BF16平台门控/DOUBLE双精度/tiling换算/域外NaN防护)+UT 94.6%+四通路看护集归档 Created-by: dengguojie Commit-by: dengguojie Merged-by: cann-robot Description: ## PR功能描述 Acosh 算子质量加固:修复 4 项精度/正确性缺陷,补齐 UT 与四通路看护集测试资产,并对齐 README/docs/proto 文档口径。分支为单 commit(整理自原多 commit,内容零变化)。 **修复** - kernel:x<1 域外输入输出 NaN(原负大值灾难消去返回 0/inf);输出 BF16 按 SocVersion 门控;整型+DOUBLE 升 DT_DOUBLE 走 AICPU 双精度;tiling blockFactor 按 dtype 换算 - tiling:切分核 Bug 修复——blockFactor 按 dtype 字节/元素量纲换算(原 32 字节当 32 元素),核切分修正——大 shape 并行度提升(usedCoreNum 41→54,totalNum=3855 实证) - op_api:原地示例失败路径资源释放+判空 - proto:REG_OP dtype 声明收紧——UnaryDataType 改显式枚举 6 dtype(去 COMPLEX32 过度声明,AICore/AICPU 两面均无该 dtype) **测试** - tiling UT 19 例,host 侧覆盖率 57.5%→94.6%(53/53 全绿) - 看护集 kernel/aclnn/geir/torch 四通路×100 例 + golden 资产入库(tests/st/arch35/、tests/assets/) **文档** - README:值域[1,+∞)/域外 NaN/动态 shape/161002 声明,参数表对齐 def.cpp 注册集 - aclnn 文档补维度列/selfRef 复数 dtype/161002 格式行;proto 注释对齐 ## 验证 存量 729 例 728 PASS(1 例工具链侧挂账)+ board mixed 1548 执行 1482 PASS/66 台账放行 + Host UT 53 例全绿(覆盖率 94.6%)。 ## 该PR关联的issue Closes [#4180](https://gitcode.com/cann/ops-math/issues/4180) Closes [#4196](https://gitcode.com/cann/ops-math/issues/4196) ## 外部反馈处置 外部测试反馈渠道的 2 项精度问题(同根因:kernel 域外 NaN 缺失,GEIR 路 Expected:nan/Actual:inf),已在本 PR 修复;修复后用原版 CSV+原版 golden 双口径(close/mixed)复验均 100% PASS。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6620 | 11 days ago | |
[acosh_grad] quality-hardening:算子质量加固修复 Co-authored-by: handsomeRobot_SK<suke13@huawei.com> # message auto-generated for no-merge-commit merge: !6196 merge acosh_grad_quality_hardening into master [acosh_grad] quality-hardening:算子质量加固修复 Created-by: handsomeRobot_SK Commit-by: handsomeRobot_SK Merged-by: cann-robot Description: # [acosh_grad] quality-hardening:算子质量加固修复(准入+检视问题整改) ## 一、变更概述 本 PR 针对 AcoshGrad(acosh_grad)算子 2026-09-23 准入扫描(白盒模式,总体结论 FAIL,唯一 FAIL 项为 1.4 资料-缺少动态 shape 约束说明,另有 X2 规则级 WARN)与代码检视(125 条例,FAIL 1 / SUSPICIOUS 1 / 风格违规 3 项可修 / 设计一致性 4 维不一致)发现的问题,完成如下整改: - 准入 1.4:README 补充动态 shape/动态 rank 约束说明(消除唯一 FAIL); - 准入 X2:Tiling 新增私有格式显式拒绝(origin/storage 双查)+ 私有格式异常 UT×3(消除 WARN); - 准入 X7 建议:README 补充空 Tensor 行为说明; - 检视 LOG-1:裸 OP_LOGE 替换为 OP_LOGE_FOR_INVALID_VALUE_WITH_REASON 结构化预定义宏; - 检视 RED-1:ubBlockSize 增加显式零值守卫; - 检视 S4/S5/S6、D8:DESIGN.md v1.1 与实现同步(GEIR-only 交付姿态、TilingData 3 字段、简化切分算法、动态 shape 说明、248KB 格式修正); - 风格 STYLE-2.1/2.4/3.3:行宽折行、if 补齐大括号、清理开发阶段编号注释; - 覆盖度 P5:归档用例补齐(L2 异常用例 +7、功能缺口用例 +10)。 变更范围:代码仓 quality-hardening-acosh_grad/ops-math(分支 acosh_grad_quality_hardening,4 笔提交)+ 交付件仓 operator-artifacts/AcoshGrad/(提交 625b165 本算子部分)。 ## 二、分类修改清单 ### (一)代码修复(ops-math,逐条对应报告条目) | 报告条目 | 修复内容 | 文件 | |---------|---------|------| | admission X2 / P2(WARN) | 新增 IsPrivateFormat()(NC1HWC0/FRACTAL_Z/NDC1HWC0/FRACTAL_Z_3D/FRACTAL_NZ/NC1HWC0_C04),y/dy/z origin/storage 双查显式拒绝,报错走 OP_LOGE_FOR_INVALID_FORMAT_WITH_REASON | op_host/arch35/acosh_grad_tiling_arch35.cpp:51-55、:112-137 | | code-review LOG-1(FAIL) | 两处裸 OP_LOGE("coreNum is 0"/"ubSize is 0") 替换为 OP_LOGE_FOR_INVALID_VALUE_WITH_REASON 结构化宏 | op_host/arch35/acosh_grad_tiling_arch35.cpp:63-68 | | code-review RED-1(SUSPICIOUS) | ubBlockSize 增加显式零值守卫(OP_LOGE_FOR_INVALID_VALUE_WITH_REASON) | op_host/arch35/acosh_grad_tiling_arch35.cpp:198-200 | | STYLE-2.1 | 两处超 120 字符行按运算符放行末折行 | op_host/arch35/acosh_grad_tiling_arch35.cpp:78-79;op_kernel/arch35/acosh_grad_kernel.h:90 | | STYLE-2.4 | Process() 单语句 if 补齐大括号 | op_kernel/arch35/acosh_grad_kernel.h:203-206 | | STYLE-3.3 | 删除开发阶段编号注释(Step 1-7、"// 1..7 步骤"、"迭代二"),关键约束并入函数头注释 | op_host/acosh_grad_def.cpp:17;op_host/arch35/acosh_grad_tiling_arch35.cpp:139-193;op_kernel/arch35/acosh_grad_kernel.h:163-177 | ### (二)资料修复 | 报告条目 | 修复内容 | 文件 | |---------|---------|------| | admission 1.4 / P1(FAIL) | README 补充动态 shape/动态 rank(rank 0~8)约束说明;DESIGN.md v1.1 同步 | math/acosh_grad/README.md:76;operator-artifacts AcoshGrad/DESIGN.md:133 | | admission X7 建议 | README 补充空 Tensor(元素数为 0 直接返回空结果)说明 | math/acosh_grad/README.md:77 | | code-review S4/S5/S6(设计一致性 ❌) | DESIGN.md v1.1 改文档迁就实现:GEIR-only 交付姿态(去除 ACLNN 接口、调用仅图模式);TilingData 简化为 3 字段(totalNum/blockFactor/ubFactor)单均分 + ubFactor 循环、末 tile 由 Kernel 处理;Tiling 算法对齐 CeilAlign/CeilDiv/FloorAlign/FloorDiv + GetUbBlockSize 实际实现 | operator-artifacts AcoshGrad/DESIGN.md:8、:60、:132、:159-169、:171-198 | | code-review D8(文档格式) | 5 处 "248 KB" 数字单位空格违规改为 248KB | operator-artifacts AcoshGrad/DESIGN.md:391-395、:454 | ### (三)用例补充 | 报告条目 | 修复内容 | 文件 | |---------|---------|------| | admission X2 / P2 | 私有格式异常 UT×3(014:y=NC1HWC0、015:dy=FRACTAL_NZ、016:z=FRACTAL_Z,均断言 GRAPH_FAILED) | math/acosh_grad/tests/ut/op_host/arch35/test_acosh_grad_tiling_arch35.cpp:344-400 | | admission P5(覆盖度缺口) | L2 异常用例 +7(dtype 异常 float64、rank 9 越界×3 dtype、NCHW 格式异常×3 dtype);功能缺口用例 +10(特殊值 ±0/inf/nan×3 dtype、空 Tensor×3 dtype、压力档、subnormal、minnormal、UB 整除) | operator-artifacts AcoshGrad/测试用例/acosh_grad_l2_exception.csv、acosh_grad_selected_100.csv | ## 三、逐 commit 摘要 ### 代码仓(ops-math,分支 acosh_grad_quality_hardening,自基线 9b3d87785 起) | commit | 主题 | 对应报告条目 | |--------|------|-------------| | f1922aaaa | 修复 acosh_grad 异常处理:LOG-1 裸 OP_LOGE 替换为 OP_LOGE_FOR_INVALID_VALUE_WITH_REASON、RED-1 ubBlockSize 增加零值守卫 | LOG-1、RED-1 | | 5693ed64d | acosh_grad 代码风格整改:STYLE-2.1 行宽超标换行、STYLE-2.4 if 补齐大括号、STYLE-3.3 清理开发阶段编号注释(STYLE-2.3 指针声明与本仓 clang-format PointerAlignment:Left 冲突,不修改) | STYLE-2.1、STYLE-2.4、STYLE-3.3 | | 84b76176b | README 补充动态shape/动态rank与空Tensor约束说明 | admission 1.4/P1、X7 建议 | | fbf57e745 | 修复 acosh_grad 格式校验:X2 tiling 显式拒绝私有格式(NC1HWC0/FRACTAL_Z 等,origin/storage 双查)+ 新增私有格式异常 UT×3 | admission X2/P2 | ### 交付件仓(operator-artifacts,本算子部分) | commit | 主题 | 对应报告条目 | |--------|------|-------------| | 625b165 | quality-hardening 19 算子批量修复(AcoshGrad 部分):DESIGN.md v1.1 设计同步(GEIR-only、TilingData 3 字段、简化切分、动态 shape、248KB 修正)+ 测试用例归档补齐(l2_exception +7、selected_100 +10) | S4/S5/S6(文档侧)、D8、P5 | 说明:交付件仓提交 8a47e70(第二轮补修)经核验不含本算子任何文件,本 PR 不涉及。 ## 四、测试与验证 - **编译**:本环境无 NPU/编译工具链,未执行实机编译(与准入报告一致,运行时证据项 UNAVAILABLE)。本批次代码改动均为语法级局部修改(宏替换、注释清理、大括号、折行、守卫新增),不触碰计算链路(Kernel Mul→Adds(-1)→Sqrt→Div 公式未变)。 - **UT(Tiling 侧)**:归档 16 条 Tiling UT(tests/ut/op_host/arch35/test_acosh_grad_tiling_arch35.cpp:69-400),覆盖大/小 shape、多核切分、非对齐、空 Tensor、5 类失败路径(shape 不一致、dtype 不一致、不支持 dtype、输入/输出 dtype 不一致)及新增私有格式异常 3 类(014-016,模拟 TilingContext 断言 GRAPH_FAILED)。未修项明细条目 2 亦引证"代码侧已有 16 条 Tiling UT 验证,功能正确性有证据"。 - **覆盖度复测**:admission 覆盖度报告(hardening-report/admission/coverage_report.md)为 2026-09-23 修复前快照——kernel 侧 4 文件 346 用例、85.7% PASS,缺口列示 UB整除、不支持 dtype 异常、shape/rank 异常×dtype、format 异常×dtype。本批次归档用例(l2_exception.csv +7、selected_100.csv +10)已逐一补齐上述全部列示缺口;覆盖度评估器(Step 7.5)未随修复重跑,复测得分待扫描器重跑后更新。 - **GEIR 实机 / TTK**:未执行(无 NPU/TTK,admission-report.md:60 标记 UNAVAILABLE);既有精度三方报告为 09-14 修复前版本产物,修复后实机回归证据待补(见未修项明细条目 4)。 ## 五、未完成事项与限制 本 PR 遵守三条禁区决策,以下事项不在本次修复范围: 1. **ACLNN 接口不新增**:本算子维持 GEIR-only 交付姿态(CMakeLists.txt:16 ACLNNTYPE=aclnn_exclude,admission 1.3 已确认 aclnn 通路豁免)。DESIGN.md v1.1 已与实现同步,但 REQUIREMENTS.md / req_analysis.md 需求基线("ACLNN 调用 [x]"、ACLNN API 接口定义章节)未同步——属需求变更,待需求侧决策,见未修项明细条目 1。 2. **产品支持矛盾不处理**:产品支持标记不新增/不撤销(admission 1.1 已 PASS,README 6 产品与代码双向一致;旧芯片 TBE ini [AcoshGrad] 段为存量迁移注册,E3 PASS,维持现状)。 3. **canndev 不改动**:本 PR 不含任何 canndev 修改(admission E3/E4 均 PASS,无 canndev 行动项)。 其余未完成事项与限制: 4. **S5/S6 简化方案缺架构背书**:Tiling 3 字段单均分方案(改设计文档迁就代码)无人工评审记录,待架构确认;若否决需恢复 former/tail 双块切分。见未修项明细条目 2。 5. **STYLE-2.3 豁免待裁决**:指针声明符左贴类型与本仓 .clang-format PointerAlignment: Left 冲突,修改会被 pre-commit 自动回退,已有意搁置(见 5693ed64d 提交说明)。见未修项明细条目 3。 6. **无 NPU/TTK**:GEIR 实机验证与 TTK 异常测试证据未执行(UNAVAILABLE),环境就绪后需补跑私有格式拒绝路径、examples 冒烟与精度三方回归。见未修项明细条目 4。 7. **admission P3 扫描器展示缺陷**:1.6 交付件一致性实际 PASS(verification_result.csv 双"一致")但被 scan_transfer_test.py 渲染为 N/A,属外置工具缺陷,随扫描器版本修复。见未修项明细条目 5。 完整未修项明细见:guide/未修项明细/acosh_grad_未修项明细.md(条目 1-5)。 See merge request: cann/ops-math!6196 | 27 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 | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 11 days ago | |
fix(add_lora): reserve 310p index sentinel slots (issue #3485) Co-authored-by: qiansunchi<qiansunchi@huawei.com> # message auto-generated for no-merge-commit merge: !6954 merge fix/add-lora-310p-index-boundary into master fix(add_lora): reserve 310p index sentinel slots (issue #3485) Created-by: qiansunchi159 Commit-by: qiansunchi Merged-by: cann-robot Description: ## 描述 修复 310P 上 AddLora 在 wBatch == 32 时访问共享数组下标 32 越界的问题。将相关共享数组扩展为 MAX_WEIGHT_SIZE + 1,保留 32 组 LoRA 支持,并为边界哨兵下标留出空间。 ## 关联的 Issue Closes #3485 ## 测试 - CPU 索引 harness:修复前复现下标 32 越界,修复后 12,928 个用例通过。 - 定向 pre-commit:通过。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 See merge request: cann/ops-math!6954 | 9 days ago | |
fix(add_mat_mat_elements): 优化连续搬运并补齐图场景 Co-authored-by: babeiee<125106023003@njust.edu.cn> # message auto-generated for no-merge-commit merge: !6805 merge fix/add-mat-mat-elements-arch35-validation-master into master fix(add_mat_mat_elements): 优化连续搬运并补齐图场景 Created-by: babeiee Commit-by: babeiee Merged-by: cann-robot Description: ## 变更 - 优化 Ascend 950 CopyInBrc 无广播连续输入搬运,将 rank>5 场景的大量 tiny NDDMA 调用合并为单次 DataCopyPad。 - 补齐 rank-0 标量输入、输出 shape/rank 推导的 Host UT,并清理不存在的 ACLNN/TensorFlow 说明。 - 扩展 GEIR 示例,覆盖格式转换、输出描述符推导和可选 device;修正 rank-7 NCHW 的过时拒绝预期。 - 按社区 README 模板补充动态 shape、图格式转换和显式 Cast 契约。 ## 验证 - Host UT:16/16 PASS(Tiling 8/8,InferShape 8/8)。 - Kernel UT:2/2 PASS。 - 优化后 regular Kernel L0:56/56 precision、GPU reference、OOB PASS。 - 同一 52 条 L0 性能集逐例复测:非目标 51 条无性能回退;L0_041 A5 mean 由 7811.33 us 降至约 944 us,约 8.27x 加速。 - 全量 L1:515/515 A5 precision、OOB、profiling PASS;512/515 Torch 数值参考 PASS,3 条超大样例因 容量不足改用同一 NumPy Golden 复核 PASS。 - 显式 Cast GE 图:S1/S3/S5 bit-exact,N1 混合 dtype 正确拒绝,动态非 product=1 广播 512/512 exact。 - GEIR rank-7 NCHW:source/binary × Const/Dynamic 均 100% precision PASS;两份提交示例在 device 2 实跑成功。 - 提交钩子:clang-format、codespell、OAT 等全部 PASS;git diff --check PASS。 ## 已知边界 - TTK 仍会将逻辑 rank-0 shape () 归一化为 (1,);算子 Host Tiling 的 rank-0 行为已由直接 UT 覆盖。 - 3 条超大 L1 缺少 timing,归因为 容量,不是 A5 执行或精度失败。 - L2 Large 工作流 DAG 自动调度验证不属于本 PR 的算子实现改动。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4218 See merge request: cann/ops-math!6805 | 11 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6947 merge fix/add-v2-tensor-redirect-validation-20261031 into master fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 统一修复AddV2、TensorRedirect和MulNoNan的推导/参数校验,完善GEIR示例、测试参考及仓内小型ST。共27个变更文件、1个提交, experimental相对目标主线无改动。 - AddV2/TensorRedirect:修复合法rank0标量storage []/[1]等价表示被Tiling误拒绝的问题,保留非法shape/dtype校验,补InferShape rank8上限并透传首报诊断。TensorRedirect尾核仅计算实际分支长度,避免无用满块乘积溢出。 - 两份GEIR示例核对真实输出、修正节点名及Session所有权,完善失败诊断;对应Host/CPU Kernel UT保留。 - 完整引入[原PR !6971](https://gitcode.com/cann/ops-math/pull/6971)的MulNoNan提交6f1e0471275f6f1f7d08232dd823636b4a1a5279,8个文件内容与源提交逐字节一致:InferShape独立检查两个输入的rank上限,InferDataType检查四种合法dtype及同类型关系;保留广播、标量、动态shape/rank和空Tensor语义,新增负向UT。 - MulNoNan golden使用Torch完成物理dtype舍入,TensorFlow TestSpec增加FP64组合数学参考,覆盖TF CPU不支持的合法六维广播及CANN原有INT32输入域;示例支持--device-id=N,新增8条小shape仓内ST。 - 仓内ST合计4份CSV、24条,三个算子各8条。不同表头分开,相同表头在所属算子内合并;最大单Tensor约112KiB,未把GiB压力shape放入默认ST。外部测例仓库未改。 原AddV2/TensorRedirect的19个文件保持原内容,MulNoNan的8个文件完整导入,无冲突。AddV2看板中旧A2实验材料继续按来源分类,不混作A5修复;MulNoNan保留原A2/A3产品支持,不新增平台适配。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4378 - https://gitcode.com/cann/ops-math/issues/4387 ## 测试 先cherry-pick源提交,再squash为1提交;同一原始基点的完整binary diff及Git tree均不变。随后一次rebase到当次从官方主仓获取的master 58e411acd306ae5d391301bf2e21d25d1bf4fae5,27个文件内容均保持,相关算子/公共依赖无主线增量。最终受测提交为af1eeea72c5c773ed3fb136d9ea75d3228b9d90d。 | 验证 | 本轮结果 | |---|---| | 指定本地CI | /workspace/CI-skills/ci_local_check.sh完整通过;A5 ascend950,并发2;27文件pre-commit、隔离OAT、链接/SKIP契约及golden语法检查PASS | | 构建/UT | 三份GEIR示例syntax-only、三算子定向包及package/Host loader GE依赖检查PASS;Host UT 151/151、Graph UT 6/6、TensorRedirect CPU Kernel UT 2/2。API阶段0例,不计实际UT通过 | | 运行包来源 | 安装本轮CI生成的标准.run,177个payload文件SHA256全部一致,含17个预编译对象及三个算子注册信息;未使用旧包冒充本轮构建 | | 组合仓内ST | 三算子24/24 binary Kernel通过,全部BINARY_MATCH;MulNoNan另8/8 static Kernel及8/8 GEIR数值通过,共40次执行 | | 原修复证据 | AddV2/TensorRedirect前期128条NPU正向、两份C++示例实机完整输出/文件失败路径分别保留,不与本轮执行次数直接累加;MulNoNan原PR更广的历史验证在源PR记录,本轮不冒称重跑 | 实机Ascend950PR_9579/device0,使用当前任务独立CANN_Revise 9.3.0和干净的任务TTK 5a7337679b3a4a1cf8a1346392adc9a65cfd378f;每次TTK显式--pc=1,golden来自各算子代码仓。 本地缺GPU/XPU端点,命令显式--compare binary比较导入后的CPU golden;有限值按binary_equal核对,TTK对双方NaN位置一致的元素判相等,不宣称NaN payload逐位一致或默认GPU cross_check已通过。GEIR是数值验证,不当作独立运行时rank元数据dump或全部清理故障路径验证。本轮仅A5实机/CI,源PR已有其他产品证据不作为本轮新增测试。MulNoNan直接Kernel 0D在线编译问题、性能、完整L0/L1及全部资源故障均不在此次合并的通过结论中。已向同一受测SHA提交[compile触发线上CI](https://gitcode.com/cann/ops-math/merge_requests/6947#note_197811371);[线上流水线](https://gitcode.com/CANN/ops-math/actions/runs/42aadc4ec89646c2888de81d318470cb)已启动,结果待出,不由本地通过推断。 ## 文档更新 - AddV2/TensorRedirect继续保留所有原产品能力,按用户指引保留格式整改和删除冗余范围声明;没有重新添加当前源码/实测平台范围提示。 - MulNoNan README完整保留源PR内容:全局rank8及动态rank运行时上限表述、产品差异列表和必要设备选择参数;保留原A2/A3支持,不因内部TestSpec增加用户接口声明。 - 组合提交的来源、测试范围及限制写入本PR与任务独立验证记录。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:合并MulNoNan测试参考/负向UT及小型ST See merge request: cann/ops-math!6947 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
修复issue的问题 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !6812 merge master into master 修复issue的问题 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 本 PR 修复 6 个算子问题,均为 Bug 修复(含 1 项文档修正): 1. **is_inf 尾块越界读写(#3925)**:数据长度不足 32B 对齐时,尾块原先按 32B 整倍搬运导致 GM 越界读/写。修复为整块用 DataCopy、尾块用 DataCopyPad 按真实字节搬运,ComputePerCore 尾块输出按真实计数写出。math/is_inf/op_kernel/is_inf.h。 2. **addcmul value=NaN 走错快路径(#3894)**:IsEqualToOne 对 NaN 判等为 true(所有比较均 false 取反),导致 value=NaN 时误走 AxpyV2 快路径、缺失 value 项。修复为显式排除 NaN。math/addcmul/op_api/aclnn_addcmul.cpp。 3. **cdist 非法 shape 返回码(#3929)**:out 形状与推导不匹配时返回内部空指针错误 561103,修复为在 GetWorkspaceSize 增加 out 期望形状校验,返回标准参数错误 161002。math/cdist/op_api/aclnn_cdist.cpp。 4. **div 非法参数返回码(#3962)**:日志错误码与返回码不一致,统一返回 161002。math/div/op_api/aclnn_div.cpp。 5. **VarMean 文档矛盾(#4182)**:中英文档 self 维度列由 1-8 修正为 0-8(与「shape 支持 0 到 8 维」及 meanOut/varOut 的 0-8 保持一致);参数表 varOut/meanOut 行序与原型(varOut 为第 5 参、meanOut 为第 6 参)对齐。math/reduce_var/docs/。 6. **LinSpace legacy tiling 丢失 INT64 num 精度(#3347):** LinSpaceGetConstValue 的 DT_INT64 分支先将 int64_t 经 float 转换,num=16777219 被舍入为 16777220,与 InferShape 输出维度不一致;修复为直接读取 int64 数值、经 double 无损保留。math/lin_space/op_host/lin_space_tiling.cpp。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3925 - https://gitcode.com/cann/ops-math/issues/3894 - https://gitcode.com/cann/ops-math/issues/3929 - https://gitcode.com/cann/ops-math/issues/3962 - https://gitcode.com/cann/ops-math/issues/4182 - https://gitcode.com/cann/ops-math/issues/3347 ## 测试 910B3 / CANN 9.3.0 上板验证(2026-10-29): - **is_inf**:尾块用例长度 17/25/31/33/40(非 32B 对齐),尾部放置 inf/-inf/nan,输入输出 buffer 后 64B 金丝雀检测越界,5 组全部 PASS 且无越界读写。 - **addcmul**:value=NaN → out=NaN(修复前误得 7.0);value=1.0/2.0 回归正常。 - **cdist**:out 形状不匹配返回 161002,合法形状返回 0。 - **div**:shape 不匹配/非法 mode 均返回 161002。 - **VarMean**:issue 复现脚本实测命中 0 处(纯文档改动,无需上板)。 - **LinSpace**:tiling data 中 num=16777219 保留、InferShape 输出 [16777219](num=17 对照),Host UT 6/6 PASS,基线回归证实旧实现舍入为 16777220。 ## 文档更新 - math/reduce_var/docs/aclnnVarMean.md、math/reduce_var/docs/aclnnVarMean_en.md(维度范围与参数顺序修正)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6812 | 10 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Co-authored-by: esok11<yangsifa@huawei.com> # message auto-generated for no-merge-commit merge: !6869 merge f1029 into master feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Created-by: esok11 Commit-by: esok11 Merged-by: cann-robot Description: ## 描述 面向 ops-math RT1.0 → RT2.0 迁移,为本仓 11 个算子补齐 op_graph 侧 InferDataType 推导,并将 op_host InferShape 的边界语义与 RT1.0 对齐(未知秩、非常量 shape、标量等),避免 C1 日落 rt1.0 后图模式推导回归。 ### 改动原因 1. 部分算子只有 InferShape、缺少 InferDataType 注册,图模式下无法完成输出 dtype 推导。 2. 部分 op_host InferShape 与 RT1.0 语义不一致,例如:AsStrided 在 size 非/未知时误用常量值计算甚至越界;Assign 取 value(输入1)而非 ref(输入0);DynamicPartition 只有 InferShapeRange 无 InferShape;Pack/Unpack 将未知秩当已知维计算;ReciprocalGrad 误用 elewise 推导导致广播场景结果错误。 ### 改动方法 1) 新增 op_graph InferDataType(输出 dtype 透传输入 dtype) - 单输出、透传输入 0:Adds、Asin、Power、Assign、TensorMove、ViewCopy - 多输出、逐个透传:Pack、Unpack、DynamicPartition(输入 0 x)、AsStrided(输入 0 x)、StridedSliceGrad(输入 4 dy) - 均为 IMPL_OP(<Op>).InferDataType(...) 注册;op_graph 源码由 cmake/func.cmake 的 file(GLOB_RECURSE ... op_graph/*.cpp) 自动收集,无需改 CMakeLists。 2) op_host InferShape 对齐 - AsStrided:size 张量缺失、size 描述符含未知维/未知秩、GetValueToShape 取常量失败时,输出置未知秩并返回成功(对齐 rt1.0 SetOutputForRank)。 - Assign:输出 shape 改为取输入 0(ref),修复 value 为标量(numel=1)时输出 shape 错误。 - DynamicPartition:新增 InferShape4DynamicPartition(输入未知秩 → 各输出未知秩;输出秩 = x秩 - partitions秩 + 1,第 0 维为 -1,其余维取 x 对应维;partitions 秩大于 x 秩报错),并注册 InferShape + InferShapeRange + OutputShapeDependOnCompute({0})。 - Pack:未知秩输入按通配处理,取首个已知秩输入作为基准,全未知秩则输出未知秩;保留 N 与实例数一致性校验,失败日志改为同时打印基准索引。 - Unpack:输入未知秩时各输出保持未知秩,不再退化为 0 维。 - StridedSliceGrad:shape 输入形状值为 0(前向为 rank-0 标量)时输出 0 维标量,不再报错。 - ReciprocalGrad:InferShape4Elewise → InferShape4Broadcast。 - Adds/Asin/TensorMove/ViewCopy:仅 namespace 注释与格式修正,逻辑不变。 3) 测试 新增 39 个 host 侧 InferShape UT,覆盖未知秩/非常量/标量/广播/失败分支。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4383 ## 测试 - 新增 UT:as_strided 6 例、assign 2 例、concat 7 例、concat_d 4 例、pack 7 例、unpack 6 例、reciprocal_grad 5 例、strided_slice_grad 2 例(共 39 例,全部位于各算子 tests/ut/op_host)。 - 说明:本次流程未在本环境执行编译与 UT 运行,用例已随 PR 提交,需由 CI/本地环境验证。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6869 | 7 days ago | |
fix(adjacent_difference): 移除示例多余的内置头文件include,修复AdjacentDifference类重定义导致example编译失败 Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !6964 merge adj into master fix(adjacent_difference): 移除示例多余的内置头文件include,修复AdjacentDifference类重定义导致example编译失败 Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 **改动原因**:adjacent_difference 算子 graph 模式 example( math/adjacent_difference/examples/test_geir_adjacent_difference.cpp)在 CANN 9.3.0 环境下编译失败。AdjacentDifference 算子 proto 已上库到 CANN 内置头文件 experiment_ops.h(REG_OP(AdjacentDifference)),而 example 同时 include 了内置 experiment_ops.h 与仓库自有 op_graph/adjacent_difference_proto.h,两处 REG_OP 宏均展开为同名类 ge::op::AdjacentDifference,产生类重定义编译错误: error: redefinition of 'class ge::op::AdjacentDifference' adjacent_difference_proto.h:39 REG_OP(AdjacentDifference) experiment_ops.h:5550 REG_OP(AdjacentDifference) (previous definition) **改动方法**: - 删除 example 中多余的 #include "experiment_ops.h" 与 #include "nn_other.h"(example 实际仅依赖 array_ops.h 提供 op::Data、仓库 proto 提供 op::AdjacentDifference,被删头文件无任何实际符号依赖) - 附带 clang-format 对该文件的格式化(宏续行对齐、CreateOppInGraph 函数签名换行),无功能变更 ## 关联的Issue - #4384 ## 测试 - 环境:CANN 9.3.0,soc=ascend950 - 命令:bash build.sh --run_example adjacent_difference graph --example_name=adjacent_difference --soc=ascend950 - 结果:编译通过,example 执行成功(run test_geir_adjacent_difference, execute samples success) - 精度验证:输入 [1.0, 1.0, 2.0, 3.0, 3.0, 4.0, 6.0, 6.0, 6.0, 8.0],输出 [0, 0, 1, 1, 0, 1, 1, 0, 0, 1],与算子语义(y[0]=0, y[i]=x[i]==x[i-1]?0:1)期望逐元素一致 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6964 | 7 days ago | |
fix(math): 修正equal/frac/affine_grid算子文档与头文件描述对齐实现 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6852 merge fix_MD_1029 into master fix(math): 修正equal/frac/affine_grid算子文档与头文件描述对齐实现 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 本 PR 汇总修正 4 处 math 算子文档/头文件注释与实现不一致的问题,均为描述性修正,不涉及代码逻辑改动: 1. **aclnnIsInScalarTensor**(math/equal/docs/aclnnIsInScalarTensor.md 及英文版):out 参数说明由「shape与testElements相同」修正为「0维标量」,维度列改为 0,并同步修正错误码表 161002 子项为「testElements的维度超过8维」「out的维度不是0维」,对齐实现 OP_CHECK_WRONG_DIMENSION(out, 0),消除文档自相矛盾。 2. **aclnnInplaceFrac**(math/sub/docs/aclnnFrac&aclnnInplaceFrac.md):inputRef 参数角色由「输入」修正为「输入/输出」,补充「计算结果原地写回该tensor」语义说明。 3. **aclnnAffineGrid**(math/affine_grid/docs/aclnnAffineGrid.md):错误码表 161002 新增「theta为空tensor」子项(对齐实现空 tensor 校验);约束说明补充「size中的C不参与计算,对取值无约束」。 4. **aclnnFrac**(math/sub/op_api/aclnn_frac.h):头文件注释三处 dtype 声明补齐 BFLOAT16,并注明「在Atlas训练系列产品上不支持该数据类型」,对齐资料与实现(A2/A3/950 支持 BF16,Atlas 训练系列不支持)。 ## 关联的Issue - #4109(aclnnIsInScalarTensor out shape 描述与实现矛盾) - #4134(aclnn_frac.h 头文件 dtype 声明缺 BFLOAT16) - [#4124](https://gitcode.com/cann/ops-math/issues/4124) - [#4129](https://gitcode.com/cann/ops-math/issues/4129) ## 测试 本次改动均为文档/注释修正,不涉及代码逻辑,无运行测试需求。 相关行为已由实现侧真机验证:aclnnIsInScalarTensor 在 A2 910B2 上 out 为 0 维标量正常返回(161002 仅在 out 非 0 维时上报);aclnnFrac 的 BFLOAT16 在 A2 上 407 条用例全部通过。 ## 文档更新 - math/equal/docs/aclnnIsInScalarTensor.md - math/equal/docs/aclnnIsInScalarTensor_en.md - math/sub/docs/aclnnFrac&aclnnInplaceFrac.md - math/affine_grid/docs/aclnnAffineGrid.md - math/sub/op_api/aclnn_frac.h(doxygen 注释) ## 类型标签 - [x] Bug修复 - [x] 文档更新 - [ ] 新特性 - [ ] 性能优化 - [ ] 其他,请描述: See merge request: cann/ops-math!6852 | 10 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 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 | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
docs: 修复math算子文档错误码表缺项并对齐数据类型约束与实现 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6765 merge fix_mathMD_1028 into master docs: 修复math算子文档错误码表缺项并对齐数据类型约束与实现 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 本次PR针对多个math算子文档与实现不一致或错误码表缺项的问题进行修复,共涉及6份算子文档: 1. aclnnMaxDim:错误码表161002补充"self、out、indices维度大于8时"子项,与参数表维度0-8说明对齐; 2. aclnnBitwiseXorTensor:删除out不支持UINT16/UINT32/UINT64/COMPLEX64/COMPLEX128的约束描述,对齐实际实现的放行行为; 3. aclnnFloor:删除非连续Tensor列UINT16/UINT32/UINT64不支持的无效约束(A2真机实测非连续输入均正常支持); 4. aclnnLeScalar/aclnnLeTensor:补充out、selfRef不支持UINT32/UINT64的平台约束(910/310p、A3/910b),并合并到既有平台约束块; 5. aclnnNeTensor:补充Atlas A2/A3系列self、other不支持UINT64的约束说明(A2真机验证放开校验会产生错误结果,当前拒绝行为是安全的)。 ## 关联的Issue - #3884:aclnnMaxDim错误码表缺少维度大于8子项 - #3881:aclnnBitwiseXorTensor文档声明out不支持UINT16/UINT32/UINT64/COMPLEX64/COMPLEX128与实现不符 - #3883:aclnnFloor文档多写非连续Tensor不支持UINT16/UINT32/UINT64约束 - #3853:aclnnNeTensor A2平台UINT64支持说明与实现不符 - #3889:aclnnLeTensor/aclnnLeScalar out支持UINT32/UINT64与实现不符 ## 测试 本次为纯文档修改,无代码变更。各文档改动均经实现代码(dtype支持列表、校验逻辑)静态核对,并对以下场景在A2真机验证: - aclnnFloor非连续UINT16/UINT32/UINT64输入6组用例全部成功且结果正确; - aclnnNeTensor UINT64放开校验后输出全假并伴随堆内存损坏,确认kernel未实现UINT64模板,以文档约束闭环; - aclnnBitwiseXorTensor COMPLEX64/COMPLEX128输出语义验证通过。 ## 文档更新 - math/arg_max_with_value/docs/aclnnMaxDim.md - math/bitwise_xor/docs/aclnnBitwiseXorTensor&aclnnInplaceBitwiseXorTensor.md - math/floor/docs/aclnnFloor&aclnnInplaceFloor.md - math/less_equal/docs/aclnnLeScalar&aclnnInplaceLeScalar.md - math/less_equal/docs/aclnnLeTensor&aclnnInplaceLeTensor.md - math/not_equal/docs/aclnnNeTensor&aclnnInplaceNeTensor.md ## 类型标签 - [x] 文档更新 See merge request: cann/ops-math!6765 | 12 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Co-authored-by: esok11<yangsifa@huawei.com> # message auto-generated for no-merge-commit merge: !6869 merge f1029 into master feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Created-by: esok11 Commit-by: esok11 Merged-by: cann-robot Description: ## 描述 面向 ops-math RT1.0 → RT2.0 迁移,为本仓 11 个算子补齐 op_graph 侧 InferDataType 推导,并将 op_host InferShape 的边界语义与 RT1.0 对齐(未知秩、非常量 shape、标量等),避免 C1 日落 rt1.0 后图模式推导回归。 ### 改动原因 1. 部分算子只有 InferShape、缺少 InferDataType 注册,图模式下无法完成输出 dtype 推导。 2. 部分 op_host InferShape 与 RT1.0 语义不一致,例如:AsStrided 在 size 非/未知时误用常量值计算甚至越界;Assign 取 value(输入1)而非 ref(输入0);DynamicPartition 只有 InferShapeRange 无 InferShape;Pack/Unpack 将未知秩当已知维计算;ReciprocalGrad 误用 elewise 推导导致广播场景结果错误。 ### 改动方法 1) 新增 op_graph InferDataType(输出 dtype 透传输入 dtype) - 单输出、透传输入 0:Adds、Asin、Power、Assign、TensorMove、ViewCopy - 多输出、逐个透传:Pack、Unpack、DynamicPartition(输入 0 x)、AsStrided(输入 0 x)、StridedSliceGrad(输入 4 dy) - 均为 IMPL_OP(<Op>).InferDataType(...) 注册;op_graph 源码由 cmake/func.cmake 的 file(GLOB_RECURSE ... op_graph/*.cpp) 自动收集,无需改 CMakeLists。 2) op_host InferShape 对齐 - AsStrided:size 张量缺失、size 描述符含未知维/未知秩、GetValueToShape 取常量失败时,输出置未知秩并返回成功(对齐 rt1.0 SetOutputForRank)。 - Assign:输出 shape 改为取输入 0(ref),修复 value 为标量(numel=1)时输出 shape 错误。 - DynamicPartition:新增 InferShape4DynamicPartition(输入未知秩 → 各输出未知秩;输出秩 = x秩 - partitions秩 + 1,第 0 维为 -1,其余维取 x 对应维;partitions 秩大于 x 秩报错),并注册 InferShape + InferShapeRange + OutputShapeDependOnCompute({0})。 - Pack:未知秩输入按通配处理,取首个已知秩输入作为基准,全未知秩则输出未知秩;保留 N 与实例数一致性校验,失败日志改为同时打印基准索引。 - Unpack:输入未知秩时各输出保持未知秩,不再退化为 0 维。 - StridedSliceGrad:shape 输入形状值为 0(前向为 rank-0 标量)时输出 0 维标量,不再报错。 - ReciprocalGrad:InferShape4Elewise → InferShape4Broadcast。 - Adds/Asin/TensorMove/ViewCopy:仅 namespace 注释与格式修正,逻辑不变。 3) 测试 新增 39 个 host 侧 InferShape UT,覆盖未知秩/非常量/标量/广播/失败分支。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4383 ## 测试 - 新增 UT:as_strided 6 例、assign 2 例、concat 7 例、concat_d 4 例、pack 7 例、unpack 6 例、reciprocal_grad 5 例、strided_slice_grad 2 例(共 39 例,全部位于各算子 tests/ut/op_host)。 - 说明:本次流程未在本环境执行编译与 UT 运行,用例已随 PR 提交,需由 CI/本地环境验证。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6869 | 7 days ago | |
fix(asin_grad): 修复shape逐维校验等交付问题,并新增ascend350平台支持 Co-authored-by: qq_41311449<baihao29@huawei.com> # message auto-generated for no-merge-commit merge: !6575 merge master into master fix(asin_grad): 修复shape逐维校验等交付问题,并新增ascend350平台支持 Created-by: qq_41311449 Commit-by: qq_41311449 Merged-by: cann-robot Description: ## 描述 1. 交付问题修复(FR-01/12/13/14/09/N-01) - FR-01(核心修复): tiling 新增 ShapesExactlyEqual 逐维校验(op_host/arch35/asin_grad_tiling_arch35.cpp:56),原先只比较 GetShapeSize() 会放行元素总数相同但维度排列不同的输入(如 y=2,3 vs dy=3,2),现 y/dy/z 必须逐维完全相同,并补 4 条 UT 覆盖 - FR-12: golden.py fp32 分支按输入 dtype 计算,0 维输入不再被提升为 float64 - FR-13: examples 两份副本按 dtype 宽度构造输入缓冲(fp16/bf16 位级转换),修正 y 值域注释 - FR-14: 3 个 CMakeLists 许可头换为 OAT 认可模板,代码 clang-format/ruff-format 格式化 - FR-09/N-01: README 调用说明改为 GE图模式并链接 asin_grad_proto.h;产品表 Atlas 200I/500 A2 由 √ 改为 × 2. ascend350 平台适配(参照 cann/ops-cv#1747 及同族算子 acos_grad 做法) - CMakeLists 增加 ascend350 计算单元与对应 tiling 目录 - asin_grad_def.cpp 追加 AddConfig("ascend350", aiCoreConfig) 3. 验证结论 - host UT 15/15 PASS(950/350 各一轮);TTK 冻结回归 L0 44 例、L2 16 例逐字段一致;pre-commit 12/12 通过 - --pkg --soc=ascend350/950 均构建成功,350 包含 kernel 及 ops-info 注册 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6575 | 17 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
docs: 修正 math 算子 README 文档中的描述与数据类型说明 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !6158 merge 3246 into master docs: 修正 math 算子 README 文档中的描述与数据类型说明 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 修正 math 目录下 13 个算子 README.md 文档中的描述问题,提升文档准确性与术语一致性,具体包括: - 数据类型说明修正: abs 输出类型列表去掉重复的 FLOAT16、FLOAT,改为 COMPLEX32、COMPLEX64;assign_sub 修正拼写 BFOAT16 → BFLOAT16。 - 属性名拼写修正:hans_encode 的 reshuff → reshuffle。 - 术语大小写统一:arg_min 的 infershape → InferShape;reduce_all 的 tenor → Tensor。 - 表述/用词修正:add_n 的"主元素相加"→"逐元素相加";add_lora 的"Lora"→"LoRa";cholesky 的"需为"→"须为";cosine_similarity 的"显示指定"→"显式指定";cumsum 的"累计求和"→"累积求和";lgamma 的"输入张量x1"→"输入张量x";mul_addn 表述精简;asinh_grad 的"通过图模式方式调用"→"通过图模式调用"。 ### 改动原因 文档中存在错别字、术语拼写与大小写不统一、数据类型说明错误等问题,影响可读性与准确性。 ### 改动方法 逐文件校对并修正上述 README.md 中的文本与类型说明,仅涉及文档,不改变任何代码逻辑。 ## 关联的Issue #3426 ## 测试 文档变更,无需代码测试。 ## 文档更新 更新 math 目录下以下 13 个 README.md: math/abs、math/add_lora、math/add_n、math/arg_min、math/asinh_grad、math/assign_sub、math/cholesky、math/cosine_similarity、math/cumsum、math/hans_encode、math/lgamma、math/mul_addn、math/reduce_all ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6158 | 1 month ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix: 修复AtanGrad算子异常场景拦截不符合预期 Co-authored-by: dong-yanrong<dongyanrong@h-partners.com> # message auto-generated for no-merge-commit merge: !6612 merge dev_atan_grad into master fix: 修复AtanGrad算子异常场景拦截不符合预期 Created-by: dong-yanrong Commit-by: dong-yanrong Merged-by: cann-robot Description: ## 描述 AtanGrad_l2算子部分异常场景拦截不符合预期 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4250 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6612 | 11 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 | 9 days ago | |
fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !5815 merge fix/proto-comment-grammar into master fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 对 39 个算子的 op_graph/*_proto.h 注释做拼写与语法修复,仅注释与格式变更,不涉及任何代码逻辑: - **拼写错误**:select_v2 condittion→condition(2处)、axpy_v2 opratioan→operation、clip_by_value 英文 dtype 列表中的全角逗号改半角 - **系统性语法(历史模板复制扩散)**:Support broadcasting→Supports broadcasting(27个文件)、A ND→An ND(33个文件97处) - **单文件语法修复 71 处(含 signbit returns→Returns、axpy should→Should 两处句首大写补漏)**:ger has→have、addcmul/addcdiv multiply→multiplies、muls An required→A required、equal (x=y)→(x1==x2)、Elementwise→Element-wise、bias_add/lerp/gcd 语序与冠词修复、aicore→AiCore、mod/floor_mod 矛盾表述统一、句首大小写与标点空格等 - 附带 pre-commit 钩子强制规范化(clang-format 重排、尾随空白、文件末尾换行),并保留各文件原有行尾风格(CRLF/LF) 涉及算子:add/sub/mul/muls/div/real_div/floor_div/div_no_nan/pow/minimum/maximum/signbit/less/less_equal/greater/greater_equal/not_equal/equal/bias_add/squared_difference/lerp/logical_and/logical_or/bitwise_or/bitwise_and/bitwise_xor/tanh_grad/axpy/axpy_v2/addcmul/addcdiv/select/select_v2/mod/floor_mod/ger/gcd/clip_by_value/clip_by_value_v2 ## 关联的Issue - #3234 - https://gitcode.com/cann/ops-math/issues/3234 ## 测试 - 纯注释变更,无功能影响 - pre-commit 钩子全部通过(clang-format / trailing-whitespace / end-of-file-fixer / codespell / OAT 合规检查) - 严格限定在上述 39 个算子文件,全仓其余算子未改动(其余算子同类问题可后续另行清理) ## 文档更新 不涉及仓内 docs/ 目录;本 PR 即为 proto.h 注释(算子原型文档源)的修正 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5815 | 16 days ago | |
feat: axpy_v2 arch35 Reg级融合原地改造,tiling 与 kernel DAG 统一 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !6525 merge feat/axpy-v2-fused-inplace into master feat: axpy_v2 arch35 Reg级融合原地改造,tiling 与 kernel DAG 统一 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: > 备选方案:与 #5625 同一优化目标的**原地改造版**(#5625 保持现状不动,二者择一合入)。 ## 与 #5625 的关系 | | #5625(保持现状) | 本 PR | |---|---|---| | DAG 组织 | 新建 *Fused struct,旧链 struct 保留专供 tiling | **原地改造原 struct**,删除旧链(对齐 tanh e913d83a8 先例) | | tiling 与 kernel | 不同构(全仓唯一特例) | **引用同一 DAG struct**(全仓惯例:tanh/div/signbit/axpy 等) | | tiling 行为 | 冻结(tile 按旧链估算,偏保守) | 自动跟随新 DAG(tile 按融合后 UB 足迹推导,放大 ~2-4x) | | 逐位 A/B 验证 | 已完成(tiling 冻结可控制变量) | kernel 逐字节同 #5625,复用其验证结论;tile 边界变化需重验 | ## 改造内容 将 **axpy_v2** 的 fp16/bf16/int8/uint8/bool 5 个 dtype 分支从内置 Op 长链原地改造为 Reg 级融合自定义 Op。float/int32/int64 原链不动(≤2 节点,融合收益≈0)。 | 分支 | 改造前 | 改造后 | 消除中间边 | |---|---|---|---| | fp16/bf16 | Cast×3 + FMA + Cast 长链 | UNPACK + Cast + MulDstAdd(vmadd) + Cast + PACK | 4 条 | | int8/uint8 | 6 节点链(32 位宽域) | UNPACK_B8 + Mul + Add + PACK_B16(uint16 零扩展) | 5 条 | | bool | half 域 5 节点链 | b8 位运算 And/Or(直读直存) | 4 条边 + 4 次 Cast | 优化细节: - int8/uint8 统一 uint16 零扩展:mod 256 下零扩展 ≡ 符号扩展,省掉符号扩展 Cast;双组寄存器交替 2 倍展开,奇数尾 tile 以 if 单独补一次 - bool 位运算:min(x2·α+x1, 1) 在 {0,1} 值域 ≡ x1 | (x2 & α),2 条指令替代 3 条,VL 翻倍至 256 - fp16/bf16 castTrait 与原链 tensor Cast 内部降级实现(CastIntrinsicsImplVF)逐字段一致(SAT + CAST_NONE/CAST_RINT) - 删除仅供旧链使用的 AndFF / CAST_*_MODE / FF;tiling 引用同步适配模板参数 ## tiling 行为变化(与 #5625 的本质差异) BroadcastBaseTiling 现按新 DAG 推导 tile:UB 足迹估算从旧链的 14~28B/elem 降为 4~8B/elem,tile 相应放大 2~4x。估算与 kernel 运行时分配同源(同一 DAG),无两张图不一致的风险;I/O broadcast 绑定结构不变,tiling key / schMode 不变。 ## 验证状态与计划 - **kernel 计算逻辑与 #5625 逐字节一致**(三个融合 Op struct MD5 比对相同);#5625 已完成 9000 条新旧 kernel 逐位一致验证(5000 泛化 + 4000 fp16/bf16 溢出强化,含 188 万 inf lane、65520 舍入平局点、NaN 载荷、次正规下溢、广播、尾块 1~513) - 待重跑:CI 流水线;tiling UT golden(tile 尺寸变化,UB-bound 用例需重出预期值);ST 全量 + 性能全谱系重测(重点确认 tile 放大收益与 2~5μs 中小 shape 桶无多核饥饿回退) - 精度:逐元素语义与 tile 划分无关,预期输出与 #5625 逐位一致,将按此复验 ## 约束遵守 - tiling data 结构 / tiling key / 二进制接口零变化(仅模板参数引用适配) - 全部 dtype 分支 golden 通过(沿用 #5625 验证基线 + 本 PR 复验) See merge request: cann/ops-math!6525 | 15 days ago | |
fix(bessel_i0e): 修正arch35示例相对包含路径,修复example编译失败 Co-authored-by: chen_chenn<chenchen167@huawei.com> # message auto-generated for no-merge-commit merge: !7042 merge fix/bessel_i0e_arch35_example_include into master fix(bessel_i0e): 修正arch35示例相对包含路径,修复example编译失败 Created-by: chen_chenn Commit-by: chen_chenn Merged-by: cann-robot Description: ## 描述 修复 math/bessel_i0e/examples/arch35/test_geir_bessel_i0e.cpp 中错误的头文件相对路径:../op_graph/bessel_i0e_proto.h 改为 ../../op_graph/bessel_i0e_proto.h。 该文件位于 examples/arch35/ 目录下,原路径只回退一级无法找到 op_graph/bessel_i0e_proto.h,导致执行 build.sh --run_example bessel_i0e graph 时编译报错。修改后与其他算子(如acos_grad)arch35 示例的写法保持一致,已在 ascend950 上验证编译及运行通过。 ## 关联的Issue DTS2026103130349 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7042 | 7 days ago | |
fix(bessel_i1e): 补齐 Ascend 950 运行时 shape 和输出描述校验 Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !6883 merge codex/besseli1e-output-format-guard into master fix(bessel_i1e): 补齐 Ascend 950 运行时 shape 和输出描述校验 Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: BesselI1e 的 tiling 原先缺少输出 dtype/format 的独立校验,只比较输入输出元素总数,并用总数是否为负判断运行时 shape。例如输入输出均为 [-2,-3] 或 [0,-3] 时,修改前实际 host tiling 返回成功。 本次补齐校验和回归覆盖: - 输出描述非空;输入输出 storage format 均为 ND,输出 dtype 与输入一致。 - 输入输出 storage shape 经既有标量归一化后逐维一致,保留 []/[1] 存储表达的兼容行为。 - 运行时 storage shape 每一维必须非负。编译期 -1/[-2] 由 GE 解析后再进入 tiling,合法空 Tensor 继续成功返回。 - tiling UT 覆盖六种负维度组合,并新增三 dtype×10 个分核/UB 边界,验证核区间连续、无重叠且完整覆盖输出。 - 动态 GEIR 样例检查输出 ND,允许合法空结果没有数据指针;同一张 -1/[-2] 图覆盖空 Tensor、标量、rank8 以及 shape 回切。 变更仅涉及 arch35 tiling、对应 UT 和动态 GEIR 样例三个文件,计算 kernel、公式和系数不变。arch22 shim 复用相同 tiling;本轮设备验证针对 Ascend 950,未进行 A2/A3 设备验证。GEIR/TF 已被图推导修正或未传入接口的 CSV 输出条件,不作为算子拒绝证据。 验证: - 前轮独立实际 host tiling 复现五种负维度漏拦截,修复后 24 条探针均符合预期;TTK kernel compile-only 已验证 9 条输出描述负例及合法对照。 - 本轮 83 条实际 host 探针均符合预期,含 30 个切分边界、12 类非法 dtype、9 种输入输出 dtype 配对及独立输入/输出非 ND 见证。 - 既有 tiling UT 前轮 14/14;本轮仅运行新增边界 UT(函数内 30 组)通过。CANN ABI=0 独立编译,包含 -Werror。 - Ascend 950 实机同图动态 GEIR 样例:-1 图 5/5、[-2] 图 9/9,检查 shape、dtype、ND 和数值。 - 本轮新增三方精度(Promote + cross_check/L1 + TF GPU):kernel-new 30/30,geir-new 30/30,dynamic-new 12/12,tf-new 42/42。kernel 30 条输入/输出越界哨兵检查均为 OK,OK;本轮未跑性能。 - 变更文件 pre-commit(含 OAT)和 git diff --check 通过。 测试使用任务独立安装目录;未替换共享安装包。compile-only/host 校验不冒充设备精度或性能验收。 See merge request: cann/ops-math!6883 | 8 days ago | |
fix(bias): remove hardcoded SoC from GEIR example Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6999 merge fix/bias-geir-auto-soc into master fix(bias): remove hardcoded SoC from GEIR example Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 Bias 图模式示例将 ge.socVersion 固定为 Ascend950DT_9592,在实际型号为 Ascend950PR_9579 的设备上会因型号不匹配导致 GE 初始化失败。 移除这项硬编码配置,由 GE/Runtime 获取运行环境的实际 SoC,保持与仓库其他在线图模式示例一致。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4400 ## 测试 - Ascend950PR_9579,CANN 包时间戳 20260923_000324205(version.info:9.2.0),Python 3.12.9。 - 执行 bash build.sh --run_example bias graph --example_name=bias --soc=ascend950 -j8,退出码 0。 - 日志确认运行时识别 Ascend950PR_9579,图执行成功,示例输出校验通过:Bias GEIR example run success, outputs=1。 - git diff --check 通过。本次验证为示例构建与上板执行,未运行全量本地 CI。 ## 文档更新 无需更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6999 | 7 days ago | |
fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !5815 merge fix/proto-comment-grammar into master fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 对 39 个算子的 op_graph/*_proto.h 注释做拼写与语法修复,仅注释与格式变更,不涉及任何代码逻辑: - **拼写错误**:select_v2 condittion→condition(2处)、axpy_v2 opratioan→operation、clip_by_value 英文 dtype 列表中的全角逗号改半角 - **系统性语法(历史模板复制扩散)**:Support broadcasting→Supports broadcasting(27个文件)、A ND→An ND(33个文件97处) - **单文件语法修复 71 处(含 signbit returns→Returns、axpy should→Should 两处句首大写补漏)**:ger has→have、addcmul/addcdiv multiply→multiplies、muls An required→A required、equal (x=y)→(x1==x2)、Elementwise→Element-wise、bias_add/lerp/gcd 语序与冠词修复、aicore→AiCore、mod/floor_mod 矛盾表述统一、句首大小写与标点空格等 - 附带 pre-commit 钩子强制规范化(clang-format 重排、尾随空白、文件末尾换行),并保留各文件原有行尾风格(CRLF/LF) 涉及算子:add/sub/mul/muls/div/real_div/floor_div/div_no_nan/pow/minimum/maximum/signbit/less/less_equal/greater/greater_equal/not_equal/equal/bias_add/squared_difference/lerp/logical_and/logical_or/bitwise_or/bitwise_and/bitwise_xor/tanh_grad/axpy/axpy_v2/addcmul/addcdiv/select/select_v2/mod/floor_mod/ger/gcd/clip_by_value/clip_by_value_v2 ## 关联的Issue - #3234 - https://gitcode.com/cann/ops-math/issues/3234 ## 测试 - 纯注释变更,无功能影响 - pre-commit 钩子全部通过(clang-format / trailing-whitespace / end-of-file-fixer / codespell / OAT 合规检查) - 严格限定在上述 39 个算子文件,全仓其余算子未改动(其余算子同类问题可后续另行清理) ## 文档更新 不涉及仓内 docs/ 目录;本 PR 即为 proto.h 注释(算子原型文档源)的修正 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5815 | 16 days ago | |
fix(math): align arch35 UT tiling key with opbase reduce template upgrade Co-authored-by: sunzhongwen1<sunzhongwen1@huawei.com> # message auto-generated for no-merge-commit merge: !6803 merge fix/issue-4193-4192-ut-tiling-key into master fix(math): align arch35 UT tiling key with opbase reduce template upgrade Created-by: sunzhongwen1 Commit-by: sunzhongwen1 Merged-by: cann-robot Description: ## 描述 opbase 依赖升级(cann/opbase!519「新增 batch 一致性需求的 reduce 模版」)在 pkg_inc/op_common/atvoss/reduce/reduce_tiling_key_decl.h 的 REDUCE_TPL_KEY_DECL() 中于 IsContiguous 之后插入 BatchInvariant(bool) 位,使 PatternID / LoopARCount / LoopInnerARCount 整体左移 1 位,同一 tiling 参数的 reduce 模板 tiling key 由 K 变为 2K-1。Dot 与 BiasAddGrad 的 arch35 op_host UT 仍冻结旧值,用例未随依赖升级同步而失败。 本 PR 同步两个算子的 UT 期望值: - BiasAddGradTiling:5161→10321、141375→282749、6167→12333、11839→23677 - DotTiling:5143→10285;同时同步 expectTilingData 中受同一次 opbase 升级影响的 useNddma 字段(8 字节打包字 1040187392→4467570830351532033) ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4193 - https://gitcode.com/cann/ops-math/issues/4192 Fixes #4193 Fixes #4192 ## 测试 bash build.sh -u --opapi --ophost --soc=ascend950 --gtest_filter="DotTiling*:BiasAddGradTiling*" 结果:5/5 PASSED(改动前 5 个用例均失败) ## 文档更新 无 ## 类型标签 - [x] Bug修复 See merge request: cann/ops-math!6803 | 11 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
docs: 订正 bitwise_not、cholesky、cummin、topk 等 8 个算子资料及头文件注释 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !6781 merge sync-1028 into master docs: 订正 bitwise_not、cholesky、cummin、topk 等 8 个算子资料及头文件注释 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 订正 8 个算子资料与头文件注释中与实现、产品支持情况不一致的描述。改动全部为文档(zh/en)与头文件注释,不涉及代码逻辑。 ### 改动原因 资料与头文件注释存在与实现、错误码表或产品支持情况互相矛盾的描述:dtype 列表漏项、产品支持范围与参数表结论不一致、参数语义描述错误、公式求和区间端点错误、退化点取值未声明等,逐条见「关联的Issue」。 ### 改动方法 1. **bitwise_not**( docs/aclnnBitwiseNot.md、aclnnBitwiseNot_en.md):self、out 补充数据类型支持描述,与资料及实现对齐(#3950)。 2. **bitwise_or**(docs/aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar.md、_en.md):self、other、selfRef补充数据类型支持描述,消除与产品支持情况分组的矛盾(#3995)。 3. **cdist_grad**(docs/aclnnCdistBackward.md、_en.md):新增说明——上述闭式仅在 cdist > 0 时适用;当 cdist = 0(x1 与 x2 在该点对上完全重合)时,该点对对 x1 的梯度贡献按 0 处理(#3956)。 4. **cholesky**(docs/aclnnLinalgCholesky.md、_en.md):产品支持情况中 Ascend 950PR&950DT 系列产品由「不支持」改为「支持」;self、out 的数据类型由「FLOAT、BFLOAT16」补充为「FLOAT、FLOAT16、BFLOAT16」(#3957)。 5. **cummin**(docs/aclnnCummin.md、_en.md):self、valuesOut 的 dtype 约束由统一规则改为「具体数据类型关系见下方产品支持情况」,并在产品支持情况新增两条分组说明——Ascend 950PR&950DT 系列产品下 self 为 INT8/UINT8/BOOL 时 valuesOut 可为不同的可转换数据类型,其余数据类型需与 self 一致;Atlas A3/A2、Atlas 200I/500 A2、Atlas 推理、Atlas 训练系列产品下 self 的数据类型需能转换为 valuesOut 的数据类型(#3969)。 6. **grouped_bias_add_grad**(docs/aclnnGroupedBiasAddGrad.md、_en.md):groupIdx 求和区间上端点由 groupIdxOptional(j) 改为不含端点的 groupIdxOptional(j)-1,j=0 分支同步改为 groupIdxOptional(0)-1;无可选输入时求和区间由 0 至 C 改为 0 至 C-1;文字说明中明确 groupIdxOptional(j) 表示第 j 组的结束位置(不包含)(#3948)。 7. **pow**(op_api/aclnn_pow.h 头文件注释):out 的数据类型要求由「数据类型、数据格式和shape与self一致」改为「数据格式和shape需与self一致,数据类型需为self与exponent推导后可转换的数据类型」(#3959)。 8. **topk、topkV2**(docs/aclnnTopk.md、aclnnTopk_en.md、aclnnTopkV2.md、aclnnTopkV2_en.md 共 4 个文件):largest 由「计算维度上的结果排序方式」改为「选取最大还是最小的 k 个值」;sorted 删除「当前该参数仅支持取 True」,改为 False 表示不要求输出有序,并明确不保证输出顺序及等值元素的索引稳定性(#3971)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3995 https://gitcode.com/cann/ops-math/issues/3971 https://gitcode.com/cann/ops-math/issues/3969 https://gitcode.com/cann/ops-math/issues/3959 https://gitcode.com/cann/ops-math/issues/3957 https://gitcode.com/cann/ops-math/issues/3956 https://gitcode.com/cann/ops-math/issues/3950 https://gitcode.com/cann/ops-math/issues/3948 ## 测试 - 本 PR 仅修改资料与头文件注释,不涉及代码逻辑,未做代码测试; - 资料改动需通过仓库资料门禁/评审校验。 ## 文档更新 - math/bitwise_not/docs/aclnnBitwiseNot.md、aclnnBitwiseNot_en.md - math/bitwise_or/docs/aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar.md、aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar_en.md - math/cdist_grad/docs/aclnnCdistBackward.md、aclnnCdistBackward_en.md - math/cholesky/docs/aclnnLinalgCholesky.md、aclnnLinalgCholesky_en.md - math/cummin/docs/aclnnCummin.md、aclnnCummin_en.md - math/grouped_bias_add_grad/docs/aclnnGroupedBiasAddGrad.md、aclnnGroupedBiasAddGrad_en.md - math/topk/docs/aclnnTopk.md、aclnnTopk_en.md、aclnnTopkV2.md、aclnnTopkV2_en.md - 头文件注释:math/bitwise_not/op_api/aclnn_bitwise_not.h、math/pow/op_api/aclnn_pow.h ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6781 | 12 days ago | |
处理一些issues,修改部分文档 Co-authored-by: Boyang_Zhang<zhangboyang15@h-partners.com> # message auto-generated for no-merge-commit merge: !6858 merge issue4000 into master 处理一些issues,修改部分文档 Created-by: BoyangZhang Commit-by: Boyang_Zhang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 处理一些issues,修改部分文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4000 https://gitcode.com/cann/ops-math/issues/4001 https://gitcode.com/cann/ops-math/issues/4013 https://gitcode.com/cann/ops-math/issues/4015 https://gitcode.com/cann/ops-math/issues/4019 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6858 | 11 days ago | |
docs: 修复math算子文档错误码表缺项并对齐数据类型约束与实现 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6765 merge fix_mathMD_1028 into master docs: 修复math算子文档错误码表缺项并对齐数据类型约束与实现 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 本次PR针对多个math算子文档与实现不一致或错误码表缺项的问题进行修复,共涉及6份算子文档: 1. aclnnMaxDim:错误码表161002补充"self、out、indices维度大于8时"子项,与参数表维度0-8说明对齐; 2. aclnnBitwiseXorTensor:删除out不支持UINT16/UINT32/UINT64/COMPLEX64/COMPLEX128的约束描述,对齐实际实现的放行行为; 3. aclnnFloor:删除非连续Tensor列UINT16/UINT32/UINT64不支持的无效约束(A2真机实测非连续输入均正常支持); 4. aclnnLeScalar/aclnnLeTensor:补充out、selfRef不支持UINT32/UINT64的平台约束(910/310p、A3/910b),并合并到既有平台约束块; 5. aclnnNeTensor:补充Atlas A2/A3系列self、other不支持UINT64的约束说明(A2真机验证放开校验会产生错误结果,当前拒绝行为是安全的)。 ## 关联的Issue - #3884:aclnnMaxDim错误码表缺少维度大于8子项 - #3881:aclnnBitwiseXorTensor文档声明out不支持UINT16/UINT32/UINT64/COMPLEX64/COMPLEX128与实现不符 - #3883:aclnnFloor文档多写非连续Tensor不支持UINT16/UINT32/UINT64约束 - #3853:aclnnNeTensor A2平台UINT64支持说明与实现不符 - #3889:aclnnLeTensor/aclnnLeScalar out支持UINT32/UINT64与实现不符 ## 测试 本次为纯文档修改,无代码变更。各文档改动均经实现代码(dtype支持列表、校验逻辑)静态核对,并对以下场景在A2真机验证: - aclnnFloor非连续UINT16/UINT32/UINT64输入6组用例全部成功且结果正确; - aclnnNeTensor UINT64放开校验后输出全假并伴随堆内存损坏,确认kernel未实现UINT64模板,以文档约束闭环; - aclnnBitwiseXorTensor COMPLEX64/COMPLEX128输出语义验证通过。 ## 文档更新 - math/arg_max_with_value/docs/aclnnMaxDim.md - math/bitwise_xor/docs/aclnnBitwiseXorTensor&aclnnInplaceBitwiseXorTensor.md - math/floor/docs/aclnnFloor&aclnnInplaceFloor.md - math/less_equal/docs/aclnnLeScalar&aclnnInplaceLeScalar.md - math/less_equal/docs/aclnnLeTensor&aclnnInplaceLeTensor.md - math/not_equal/docs/aclnnNeTensor&aclnnInplaceNeTensor.md ## 类型标签 - [x] 文档更新 See merge request: cann/ops-math!6765 | 12 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
修复issue的问题 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !6812 merge master into master 修复issue的问题 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 本 PR 修复 6 个算子问题,均为 Bug 修复(含 1 项文档修正): 1. **is_inf 尾块越界读写(#3925)**:数据长度不足 32B 对齐时,尾块原先按 32B 整倍搬运导致 GM 越界读/写。修复为整块用 DataCopy、尾块用 DataCopyPad 按真实字节搬运,ComputePerCore 尾块输出按真实计数写出。math/is_inf/op_kernel/is_inf.h。 2. **addcmul value=NaN 走错快路径(#3894)**:IsEqualToOne 对 NaN 判等为 true(所有比较均 false 取反),导致 value=NaN 时误走 AxpyV2 快路径、缺失 value 项。修复为显式排除 NaN。math/addcmul/op_api/aclnn_addcmul.cpp。 3. **cdist 非法 shape 返回码(#3929)**:out 形状与推导不匹配时返回内部空指针错误 561103,修复为在 GetWorkspaceSize 增加 out 期望形状校验,返回标准参数错误 161002。math/cdist/op_api/aclnn_cdist.cpp。 4. **div 非法参数返回码(#3962)**:日志错误码与返回码不一致,统一返回 161002。math/div/op_api/aclnn_div.cpp。 5. **VarMean 文档矛盾(#4182)**:中英文档 self 维度列由 1-8 修正为 0-8(与「shape 支持 0 到 8 维」及 meanOut/varOut 的 0-8 保持一致);参数表 varOut/meanOut 行序与原型(varOut 为第 5 参、meanOut 为第 6 参)对齐。math/reduce_var/docs/。 6. **LinSpace legacy tiling 丢失 INT64 num 精度(#3347):** LinSpaceGetConstValue 的 DT_INT64 分支先将 int64_t 经 float 转换,num=16777219 被舍入为 16777220,与 InferShape 输出维度不一致;修复为直接读取 int64 数值、经 double 无损保留。math/lin_space/op_host/lin_space_tiling.cpp。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3925 - https://gitcode.com/cann/ops-math/issues/3894 - https://gitcode.com/cann/ops-math/issues/3929 - https://gitcode.com/cann/ops-math/issues/3962 - https://gitcode.com/cann/ops-math/issues/4182 - https://gitcode.com/cann/ops-math/issues/3347 ## 测试 910B3 / CANN 9.3.0 上板验证(2026-10-29): - **is_inf**:尾块用例长度 17/25/31/33/40(非 32B 对齐),尾部放置 inf/-inf/nan,输入输出 buffer 后 64B 金丝雀检测越界,5 组全部 PASS 且无越界读写。 - **addcmul**:value=NaN → out=NaN(修复前误得 7.0);value=1.0/2.0 回归正常。 - **cdist**:out 形状不匹配返回 161002,合法形状返回 0。 - **div**:shape 不匹配/非法 mode 均返回 161002。 - **VarMean**:issue 复现脚本实测命中 0 处(纯文档改动,无需上板)。 - **LinSpace**:tiling data 中 num=16777219 保留、InferShape 输出 [16777219](num=17 对照),Host UT 6/6 PASS,基线回归证实旧实现舍入为 16777220。 ## 文档更新 - math/reduce_var/docs/aclnnVarMean.md、math/reduce_var/docs/aclnnVarMean_en.md(维度范围与参数顺序修正)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6812 | 10 days ago | |
docs: 订正 bitwise_not、cholesky、cummin、topk 等 8 个算子资料及头文件注释 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !6781 merge sync-1028 into master docs: 订正 bitwise_not、cholesky、cummin、topk 等 8 个算子资料及头文件注释 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 订正 8 个算子资料与头文件注释中与实现、产品支持情况不一致的描述。改动全部为文档(zh/en)与头文件注释,不涉及代码逻辑。 ### 改动原因 资料与头文件注释存在与实现、错误码表或产品支持情况互相矛盾的描述:dtype 列表漏项、产品支持范围与参数表结论不一致、参数语义描述错误、公式求和区间端点错误、退化点取值未声明等,逐条见「关联的Issue」。 ### 改动方法 1. **bitwise_not**( docs/aclnnBitwiseNot.md、aclnnBitwiseNot_en.md):self、out 补充数据类型支持描述,与资料及实现对齐(#3950)。 2. **bitwise_or**(docs/aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar.md、_en.md):self、other、selfRef补充数据类型支持描述,消除与产品支持情况分组的矛盾(#3995)。 3. **cdist_grad**(docs/aclnnCdistBackward.md、_en.md):新增说明——上述闭式仅在 cdist > 0 时适用;当 cdist = 0(x1 与 x2 在该点对上完全重合)时,该点对对 x1 的梯度贡献按 0 处理(#3956)。 4. **cholesky**(docs/aclnnLinalgCholesky.md、_en.md):产品支持情况中 Ascend 950PR&950DT 系列产品由「不支持」改为「支持」;self、out 的数据类型由「FLOAT、BFLOAT16」补充为「FLOAT、FLOAT16、BFLOAT16」(#3957)。 5. **cummin**(docs/aclnnCummin.md、_en.md):self、valuesOut 的 dtype 约束由统一规则改为「具体数据类型关系见下方产品支持情况」,并在产品支持情况新增两条分组说明——Ascend 950PR&950DT 系列产品下 self 为 INT8/UINT8/BOOL 时 valuesOut 可为不同的可转换数据类型,其余数据类型需与 self 一致;Atlas A3/A2、Atlas 200I/500 A2、Atlas 推理、Atlas 训练系列产品下 self 的数据类型需能转换为 valuesOut 的数据类型(#3969)。 6. **grouped_bias_add_grad**(docs/aclnnGroupedBiasAddGrad.md、_en.md):groupIdx 求和区间上端点由 groupIdxOptional(j) 改为不含端点的 groupIdxOptional(j)-1,j=0 分支同步改为 groupIdxOptional(0)-1;无可选输入时求和区间由 0 至 C 改为 0 至 C-1;文字说明中明确 groupIdxOptional(j) 表示第 j 组的结束位置(不包含)(#3948)。 7. **pow**(op_api/aclnn_pow.h 头文件注释):out 的数据类型要求由「数据类型、数据格式和shape与self一致」改为「数据格式和shape需与self一致,数据类型需为self与exponent推导后可转换的数据类型」(#3959)。 8. **topk、topkV2**(docs/aclnnTopk.md、aclnnTopk_en.md、aclnnTopkV2.md、aclnnTopkV2_en.md 共 4 个文件):largest 由「计算维度上的结果排序方式」改为「选取最大还是最小的 k 个值」;sorted 删除「当前该参数仅支持取 True」,改为 False 表示不要求输出有序,并明确不保证输出顺序及等值元素的索引稳定性(#3971)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3995 https://gitcode.com/cann/ops-math/issues/3971 https://gitcode.com/cann/ops-math/issues/3969 https://gitcode.com/cann/ops-math/issues/3959 https://gitcode.com/cann/ops-math/issues/3957 https://gitcode.com/cann/ops-math/issues/3956 https://gitcode.com/cann/ops-math/issues/3950 https://gitcode.com/cann/ops-math/issues/3948 ## 测试 - 本 PR 仅修改资料与头文件注释,不涉及代码逻辑,未做代码测试; - 资料改动需通过仓库资料门禁/评审校验。 ## 文档更新 - math/bitwise_not/docs/aclnnBitwiseNot.md、aclnnBitwiseNot_en.md - math/bitwise_or/docs/aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar.md、aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar_en.md - math/cdist_grad/docs/aclnnCdistBackward.md、aclnnCdistBackward_en.md - math/cholesky/docs/aclnnLinalgCholesky.md、aclnnLinalgCholesky_en.md - math/cummin/docs/aclnnCummin.md、aclnnCummin_en.md - math/grouped_bias_add_grad/docs/aclnnGroupedBiasAddGrad.md、aclnnGroupedBiasAddGrad_en.md - math/topk/docs/aclnnTopk.md、aclnnTopk_en.md、aclnnTopkV2.md、aclnnTopkV2_en.md - 头文件注释:math/bitwise_not/op_api/aclnn_bitwise_not.h、math/pow/op_api/aclnn_pow.h ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6781 | 12 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
docs: 订正 bitwise_not、cholesky、cummin、topk 等 8 个算子资料及头文件注释 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !6781 merge sync-1028 into master docs: 订正 bitwise_not、cholesky、cummin、topk 等 8 个算子资料及头文件注释 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 订正 8 个算子资料与头文件注释中与实现、产品支持情况不一致的描述。改动全部为文档(zh/en)与头文件注释,不涉及代码逻辑。 ### 改动原因 资料与头文件注释存在与实现、错误码表或产品支持情况互相矛盾的描述:dtype 列表漏项、产品支持范围与参数表结论不一致、参数语义描述错误、公式求和区间端点错误、退化点取值未声明等,逐条见「关联的Issue」。 ### 改动方法 1. **bitwise_not**( docs/aclnnBitwiseNot.md、aclnnBitwiseNot_en.md):self、out 补充数据类型支持描述,与资料及实现对齐(#3950)。 2. **bitwise_or**(docs/aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar.md、_en.md):self、other、selfRef补充数据类型支持描述,消除与产品支持情况分组的矛盾(#3995)。 3. **cdist_grad**(docs/aclnnCdistBackward.md、_en.md):新增说明——上述闭式仅在 cdist > 0 时适用;当 cdist = 0(x1 与 x2 在该点对上完全重合)时,该点对对 x1 的梯度贡献按 0 处理(#3956)。 4. **cholesky**(docs/aclnnLinalgCholesky.md、_en.md):产品支持情况中 Ascend 950PR&950DT 系列产品由「不支持」改为「支持」;self、out 的数据类型由「FLOAT、BFLOAT16」补充为「FLOAT、FLOAT16、BFLOAT16」(#3957)。 5. **cummin**(docs/aclnnCummin.md、_en.md):self、valuesOut 的 dtype 约束由统一规则改为「具体数据类型关系见下方产品支持情况」,并在产品支持情况新增两条分组说明——Ascend 950PR&950DT 系列产品下 self 为 INT8/UINT8/BOOL 时 valuesOut 可为不同的可转换数据类型,其余数据类型需与 self 一致;Atlas A3/A2、Atlas 200I/500 A2、Atlas 推理、Atlas 训练系列产品下 self 的数据类型需能转换为 valuesOut 的数据类型(#3969)。 6. **grouped_bias_add_grad**(docs/aclnnGroupedBiasAddGrad.md、_en.md):groupIdx 求和区间上端点由 groupIdxOptional(j) 改为不含端点的 groupIdxOptional(j)-1,j=0 分支同步改为 groupIdxOptional(0)-1;无可选输入时求和区间由 0 至 C 改为 0 至 C-1;文字说明中明确 groupIdxOptional(j) 表示第 j 组的结束位置(不包含)(#3948)。 7. **pow**(op_api/aclnn_pow.h 头文件注释):out 的数据类型要求由「数据类型、数据格式和shape与self一致」改为「数据格式和shape需与self一致,数据类型需为self与exponent推导后可转换的数据类型」(#3959)。 8. **topk、topkV2**(docs/aclnnTopk.md、aclnnTopk_en.md、aclnnTopkV2.md、aclnnTopkV2_en.md 共 4 个文件):largest 由「计算维度上的结果排序方式」改为「选取最大还是最小的 k 个值」;sorted 删除「当前该参数仅支持取 True」,改为 False 表示不要求输出有序,并明确不保证输出顺序及等值元素的索引稳定性(#3971)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3995 https://gitcode.com/cann/ops-math/issues/3971 https://gitcode.com/cann/ops-math/issues/3969 https://gitcode.com/cann/ops-math/issues/3959 https://gitcode.com/cann/ops-math/issues/3957 https://gitcode.com/cann/ops-math/issues/3956 https://gitcode.com/cann/ops-math/issues/3950 https://gitcode.com/cann/ops-math/issues/3948 ## 测试 - 本 PR 仅修改资料与头文件注释,不涉及代码逻辑,未做代码测试; - 资料改动需通过仓库资料门禁/评审校验。 ## 文档更新 - math/bitwise_not/docs/aclnnBitwiseNot.md、aclnnBitwiseNot_en.md - math/bitwise_or/docs/aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar.md、aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar_en.md - math/cdist_grad/docs/aclnnCdistBackward.md、aclnnCdistBackward_en.md - math/cholesky/docs/aclnnLinalgCholesky.md、aclnnLinalgCholesky_en.md - math/cummin/docs/aclnnCummin.md、aclnnCummin_en.md - math/grouped_bias_add_grad/docs/aclnnGroupedBiasAddGrad.md、aclnnGroupedBiasAddGrad_en.md - math/topk/docs/aclnnTopk.md、aclnnTopk_en.md、aclnnTopkV2.md、aclnnTopkV2_en.md - 头文件注释:math/bitwise_not/op_api/aclnn_bitwise_not.h、math/pow/op_api/aclnn_pow.h ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6781 | 12 days ago | |
fix(broadcast): 修复 Collapse 链路 dtypeSize 断链导致的未初始化读取 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !6557 merge fix/broadcast-dtypesize into master fix(broadcast): 修复 Collapse 链路 dtypeSize 断链导致的未初始化读取 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 问题一(dtypeSize 断链,UB) IsBroadcastTemplateNonContiguousSupport(math/common/op_api/broadcast_util.cpp)数据流中,CollectInput 正确填充的 ct.dtypeSize 在后续链路丢失: 1. PaddedInput 结构无 dtypeSize 字段——PadSingleInput 处丢失 2. BuildCollapsedTensor 未赋值——CollapseSingleTensor 处丢失 ClassifySingleInput 消费 ct.dtypeSize 计算 dimLimit(NLast 场景 a/b 门限)与 inputSize(场景 c 单核判定),读到的是**未初始化栈值(UB)**,门限判定与 opbase 决策树镜像(broadcast_tiling.h 逐输入取真实 dtypeSize 的同构逻辑)脱节。 ## 问题二(sub-bit 标记编码) opdev::TypeSize 对 INT4/UINT1/INT2/UINT2/FLOAT4/FLOAT6/HIFLOAT4 返回 kDataTypeSizeBitOffset+位宽 标记编码(如 INT4=1004)而非真实字节宽,直接参与 dimLimit = CACHE_LINE/dtypeSize 计算得 0,NLast 判定恒真污染。HIFLOAT4 已在 conversion 族算子(strided_slice_v3/zeros_like/as_strided)落地,broadcast 系接入后即触达。 ## 修复 - PaddedInput 增加 dtypeSize 字段并透传;BuildCollapsedTensor 参数化赋值;输出侧 ct 置 0 防御 - CollectInput 对 sub-bit 标记编码按 1 字节近似解码(与 ge::GetSizeByDataType 语义对齐),不新增公共接口,零 ops-base 版本依赖 ## 验证(Ascend 950PR) div/greater/greater_equal 三算子 24 例(覆盖 NLast a/b/c、Base 兜底、expand、转置、>4 维、连续分支),基线/修复两轮:精度 **48/48 PASS**,分流与性能零变化(纯 UB 消除 + 前置防御)。 关联的Issue:#3757 See merge request: cann/ops-math!6557 | 20 days ago | |
feat: CompareAndBitpack 支持 RT2 InferShape Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !5680 merge feature/compare-and-bitpack-rt2-infershape into master feat: CompareAndBitpack 支持 RT2 InferShape Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 为 CompareAndBitpack 补充 RT2 InferShape 和 InferDataType 实现,使算子可在 RT2 图编译流程中完成输出 shape 与 dtype 推导。 - 校验输入 x 至少为 1 维、threshold 为标量或未知秩。 - 输出 shape 继承 x,已知末维要求可被 8 整除并缩小为原来的 1/8;未知末维保持未知。 - 输出 dtype 固定推导为 DT_UINT8。 - 对照原 RT1 实现补充单元测试,覆盖正常、动态 shape、非法输入和未知秩场景,保持 RT1/RT2 行为一致。 ## 关联的Issue 无。 ## 测试 - TDD 修改前:新增 RT2 InferShape 用例后,因缺少 RT2 注册,测试执行到首个用例时失败。 - 反向对照:临时移除未知末维处理后,CompareAndBitpackInferShape.PreservesUnknownLastDimension 按预期失败;恢复实现后通过。 - bash build.sh -u --ophost --ops=compare_and_bit_pack:8 个用例全部通过。 - cmake -S . -B build -DENABLE_TEST=TRUE -DASCEND_OP_NAME=compare_and_bit_pack -DOP_HOST_UT=FALSE -DOP_GRAPH_UT=TRUE -DENABLE_UT_EXEC=TRUE && cmake --build build --target math_op_graph_ut -j8:1 个用例通过,graph_plugin_math_obj 编译成功。 - pre-commit run --from-ref ups/master --to-ref HEAD:全部检查通过。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5680 | 1 month ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
适配350:abs_grad/complex_abs 新增 ascend350 平台支持(op_api SocVersion 整改) Co-authored-by: zhouliang<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !6521 merge master into master 适配350:abs_grad/complex_abs 新增 ascend350 平台支持(op_api SocVersion 整改) Created-by: zhou-liang1027 Commit-by: zhouliang Merged-by: cann-robot Description: ## 描述 适配350:abs_grad/complex_abs 新增 ascend350 平台支持(op_api SocVersion 整改) ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3680 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6521 | 11 days ago | |
feat(confusion_matrix): golden 注册 e2e(tf) 通路并真机验证 Co-authored-by: SeanDictionary<b24081019@njupt.edu.cn> # message auto-generated for no-merge-commit merge: !6983 merge feat/confusion-matrix into master feat(confusion_matrix): golden 注册 e2e(tf) 通路并真机验证 Created-by: SeanDictionary Commit-by: SeanDictionary Merged-by: cann-robot Description: ## 描述 补齐 ConfusionMatrix 的 e2e(tf) 通路 golden 注册与真机验证,共 2 个提交: 1. **注册 e2e(tf) 通路**(d8dd47bcf): __spec__ 新增 tf.math.confusion_matrix → ConfusionMatrixTfE2eSpec,参照仓内 left_shift 的 LeftShiftTfSpec 范式——tf 仅为**驱动接口**,精度标杆对标算子语义,真值与 kernel/geir 共用同一套 torch 标杆 _compute;third_party 复用 _Compose,tolerance 与 kernel 一致;通路支持表 e2e 行同步(tf ✅ / torch ❌)。 2. **位置实参解析修复**(8751c1fba):TTK e2e 依 API 签名顺序组装实参,标量属性 const-fold 为位置实参(num_classes 落第 3 位、dtype 落第 5 位),golden 改按签名位置解析 labels/predictions/num_classes/weights/dtype——修复整数用例 dtype 丢失导致比对 0% 的问题。 路由事实(已写入 Spec 注释):CANN 9.2.0 GE 的 support_fusion_pass.json 白名单不含 ConfusionMatrixFusionPass,950 上 tf.math.confusion_matrix 分解图不融合、本算子不参与该通路执行;本通路验证 **tf 前端 API 语义在 NPU 上的正确性**,命中算子的通路仍为 GE 图模式(geir)。 本 PR 仅改动 tests/assets/golden.py,不触碰算子本体(op_host/op_kernel/op_graph 零变更)。 ## 关联的Issue [#4396](https://gitcode.com/cann/ops-math/issues/4396) ## 测试 真机 Ascend950DT_9592 V120(CANN 9.2.0,TF 2.6.5 + npu_device 2.6.5,TTK 3.0.0): - **TTK e2e(tf.math.confusion_matrix)**:7/7 PASS——float32/float16/int32/int8/uint8 五种输出 dtype × 有/无 weights × nc=1 边界;整数 binary_equal 逐位,浮点两方 close(cross_check 三方对标因当前环境 GPU 竞品端点缺失暂以两方替代,判据声明不变)。 - **golden 单测**:4 位/5 位实参、np.str_ 标量、标量张量、tf.DType 对象、kwargs 等形态解析全部通过;TTK TestSpecManager validate PASS。 - Eager 分解图在 NPU 上逐原语执行正常(Cast/Pack/Transpose/SparseTensorDenseAdd 执行清单实测)。 ## 文档更新 - golden.py 通路支持表与路由注释更新(e2e(tf) 支持性与融合白名单事实)。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试通路扩展(e2e tf 通路 golden 注册与真机验证) See merge request: cann/ops-math!6983 | 8 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 | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
fix(cosh): 按人工检视意见修复完善约束文档 Co-authored-by: focusforce<gongquanchao@huawei.com> # message auto-generated for no-merge-commit merge: !7044 merge iter11 into master fix(cosh): 按人工检视意见修复完善约束文档 Created-by: focusforce Commit-by: focusforce Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 完善约束中不同类型的不同实现路径,并声明溢出饱和语义 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#4118](https://gitcode.com/cann/ops-math/issues/4118) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7044 | 7 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 | |
fix: 修复aclnnLtScalar非RegBase路径空指针错误码 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6749 merge fix_LtScalar_1027 into master fix: 修复aclnnLtScalar非RegBase路径空指针错误码 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 背景 Issue #3913:aclnnLtScalar / aclnnInplaceLtScalar 在 self / other(原地 selfRef)传空指针时,非 RegBase(A2/A3)路径返回 ACLNN_ERR_INNER_NULLPTR(561103),与资料要求及 RegBase 路径的 ACLNN_ERR_PARAM_NULLPTR(161001) 不一致,且与同函数内 out 空指针的返回码矛盾。 ## 修改 math/less/op_api/aclnn_lt_scalar.cpp 非 RegBase 路径 aclnnLtScalarGetWorkspaceSize: - CHECK_RET(other != nullptr, ACLNN_ERR_INNER_NULLPTR) -> ACLNN_ERR_PARAM_NULLPTR - CHECK_RET(self != nullptr, ACLNN_ERR_INNER_NULLPTR) -> ACLNN_ERR_PARAM_NULLPTR aclnnInplaceLtScalarGetWorkspaceSize 经 const_cast 转发到同一函数,selfRef 场景自动覆盖。 ## UT 同步 同步更新 4 处 UT 空指针断言(test_lt_scalar.cpp / test_inplace_lt_scalar.cpp)为 ACLNN_ERR_PARAM_NULLPTR。 ## 验证 - A2(910B3)/ CANN 9.2.0 环境构建 opapi 库成功(bash build.sh --opapi) - 链接修改后构建的 libopapi_math.so 运行复现用例,6 场景全部符合预期: - 合法输入 -> 0(无回归) - self / other / selfRef 空指针 -> 161001 - out 空指针 -> 161001(与修改前一致) See merge request: cann/ops-math!6749 | 12 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
coalesce_sparse/cummin适配960dt Co-authored-by: TH<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !6776 merge backBlue1 into master coalesce_sparse/cummin适配960dt Created-by: TH_HW Commit-by: TH Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次改动为 CoalesceSparse、Cummin 两个算子新增 Ascend960DT(NpuArch::DAV_9201)平台支持,使二者可在 Ascend960DT 上完成注册、编译与运行。 具体改动: - CoalesceSparse(conversion/coalesce_sparse): - 在 op_host/coalesce_sparse_def.cpp 中新增 this->AICore().AddConfig("ascend960dt", aicore_config),完成 Ascend960DT 计算单元注册;同时对输入/输出 DataType、Format、UnknownShapeFormat 的换行格式做统一整改,并补齐文件末尾换行。 - 在 op_host/coalesce_sparse_tiling.cpp 的 TilingKeyCalcu、TilingDataCalcu 中,将 isAscend950 判定由仅 DAV_3510 扩展为 DAV_3510 || DAV_9201,使 Ascend960DT 复用 Ascend950 的 tiling key 与多核任务切分逻辑。 - 新增 op_host/config/ascend960dt/coalesce_sparse_binary.json,覆盖 12 组 dtype 组合(unique_len/unique_indices 为 int64/int32,indices 为 int64/int32,values 为 float32/float16/int32);新增 coalesce_sparse_simplified_key.ini(default=0)。 - Cummin(math/cummin): - 在 CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT 中加入 ascend960dt,并在 SUPPORT_TILING_DIR 中补入对应的 arch35 tiling 目录。 - 在 op_host/cummin_def.cpp 中新增 AddConfig("ascend960dt", aicoreConfig),并补齐文件末尾换行。 - 新增 op_host/config/ascend960dt/cummin_binary.json,覆盖 float16/bfloat16/float32/int32 四组 dtype(输入输出同 dtype,另输出 int32 的 argmin);新增 cummin_simplified_key.ini(default=0)。 - 二进制配置:在 scripts/kernel/binary_config/ascendc_config.json 中,为 CoalesceSparse 的 compute_units 增加 ascend960dt 并补充 ascend960dt 的 compile_options(-mllvm -cce-aicore-dcci-before-kernel-end=false);为 Cummin 的 compute_units 增加 ascend960dt。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 编译验证:执行 math 仓编包,确认 CoalesceSparse、Cummin 在 Ascend960DT 下均能正常注册与编译,并生成对应 kernel 二进制。 - 二进制/交付件验证:确认两算子 config/ascend960dt 下的 *_binary.json 与 *_simplified_key.ini 生效,ascendc_config.json 中已包含对应的 ascend960dt 编译单元。 - 功能验证:在 Ascend960DT 上分别运行两算子的 aclnn 用例,覆盖各自 binary 配置中的 dtype 与 shape 组合,结果与 Golden 一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6776 | 10 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
aclnn确定性开关配置变更和产品名变更,简化md表格语法,删除冗余css样式 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !6613 merge master into master aclnn确定性开关配置变更和产品名变更,简化md表格语法,删除冗余css样式 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - aclnn确定性开关配置变更:aclrtCtxSetSysParamOpt改为aclrtSetSysParamOpt - 产品名变更 - 简化md表格语法,删除冗余css样式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [# 3833](https://gitcode.com/cann/ops-math/issues/3833) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> \*.md acl\*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6613 | 18 days ago | |
fix: 修复 cumulative_logsumexp 示例头文件引用路径 Co-authored-by: qq_37917228<yanmingkui@huawei.com> # message auto-generated for no-merge-commit merge: !6965 merge fix/cumulative-logsumexp-example into master fix: 修复 cumulative_logsumexp 示例头文件引用路径 Created-by: qq_37917228 Commit-by: qq_37917228 Merged-by: cann-robot Description: ## 描述 修复 cumulative_logsumexp 图模式示例的头文件引用路径问题。 math/cumulative_logsumexp/examples/test_geir_cumulative_logsumexp.cpp 原以 #include "cumulative_logsumexp_proto.h" 直接引用 proto 头文件,而该头文件实际位于 op_graph/ 目录,导致示例编译时找不到头文件。 改为相对路径 #include "../op_graph/cumulative_logsumexp_proto.h",与同仓其他算子示例(zeta、acosh、add 等)的引用方式保持一致。 ## 关联的Issue Fixes #4382 ## 测试 - 修复后示例 test_geir_cumulative_logsumexp 可正常编译,头文件正确解析 - 引用方式与同仓其余 20+ 个算子示例的 proto 头文件引用惯例一致 ## 文档更新 无需更新文档(仅示例代码修复) ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6965 | 9 days ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 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 | |
DenseBincount算子检视意见闭环 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !6942 merge master into master DenseBincount算子检视意见闭环 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 当前infershape层对size入参强校验,TF场景下合法{}分型会被拒绝,需要修改算子校验逻辑,infershape层允许放通{},tiling层使用仓内公共 EnsureNotScalar 将标量 {}规范化为 {1},再按“一维单元素”校验和取值。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT/ST ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6942 | 9 days ago | |
diag等算子冗余workspace改为分配0 Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !6418 merge new_ww into master diag等算子冗余workspace改为分配0 Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> diag等算子冗余workspace改为分配0 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3678 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码整改 See merge request: cann/ops-math!6418 | 21 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
修复issue的问题 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !6812 merge master into master 修复issue的问题 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 本 PR 修复 6 个算子问题,均为 Bug 修复(含 1 项文档修正): 1. **is_inf 尾块越界读写(#3925)**:数据长度不足 32B 对齐时,尾块原先按 32B 整倍搬运导致 GM 越界读/写。修复为整块用 DataCopy、尾块用 DataCopyPad 按真实字节搬运,ComputePerCore 尾块输出按真实计数写出。math/is_inf/op_kernel/is_inf.h。 2. **addcmul value=NaN 走错快路径(#3894)**:IsEqualToOne 对 NaN 判等为 true(所有比较均 false 取反),导致 value=NaN 时误走 AxpyV2 快路径、缺失 value 项。修复为显式排除 NaN。math/addcmul/op_api/aclnn_addcmul.cpp。 3. **cdist 非法 shape 返回码(#3929)**:out 形状与推导不匹配时返回内部空指针错误 561103,修复为在 GetWorkspaceSize 增加 out 期望形状校验,返回标准参数错误 161002。math/cdist/op_api/aclnn_cdist.cpp。 4. **div 非法参数返回码(#3962)**:日志错误码与返回码不一致,统一返回 161002。math/div/op_api/aclnn_div.cpp。 5. **VarMean 文档矛盾(#4182)**:中英文档 self 维度列由 1-8 修正为 0-8(与「shape 支持 0 到 8 维」及 meanOut/varOut 的 0-8 保持一致);参数表 varOut/meanOut 行序与原型(varOut 为第 5 参、meanOut 为第 6 参)对齐。math/reduce_var/docs/。 6. **LinSpace legacy tiling 丢失 INT64 num 精度(#3347):** LinSpaceGetConstValue 的 DT_INT64 分支先将 int64_t 经 float 转换,num=16777219 被舍入为 16777220,与 InferShape 输出维度不一致;修复为直接读取 int64 数值、经 double 无损保留。math/lin_space/op_host/lin_space_tiling.cpp。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3925 - https://gitcode.com/cann/ops-math/issues/3894 - https://gitcode.com/cann/ops-math/issues/3929 - https://gitcode.com/cann/ops-math/issues/3962 - https://gitcode.com/cann/ops-math/issues/4182 - https://gitcode.com/cann/ops-math/issues/3347 ## 测试 910B3 / CANN 9.3.0 上板验证(2026-10-29): - **is_inf**:尾块用例长度 17/25/31/33/40(非 32B 对齐),尾部放置 inf/-inf/nan,输入输出 buffer 后 64B 金丝雀检测越界,5 组全部 PASS 且无越界读写。 - **addcmul**:value=NaN → out=NaN(修复前误得 7.0);value=1.0/2.0 回归正常。 - **cdist**:out 形状不匹配返回 161002,合法形状返回 0。 - **div**:shape 不匹配/非法 mode 均返回 161002。 - **VarMean**:issue 复现脚本实测命中 0 处(纯文档改动,无需上板)。 - **LinSpace**:tiling data 中 num=16777219 保留、InferShape 输出 [16777219](num=17 对照),Host UT 6/6 PASS,基线回归证实旧实现舍入为 16777220。 ## 文档更新 - math/reduce_var/docs/aclnnVarMean.md、math/reduce_var/docs/aclnnVarMean_en.md(维度范围与参数顺序修正)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6812 | 10 days ago | |
fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !5815 merge fix/proto-comment-grammar into master fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 对 39 个算子的 op_graph/*_proto.h 注释做拼写与语法修复,仅注释与格式变更,不涉及任何代码逻辑: - **拼写错误**:select_v2 condittion→condition(2处)、axpy_v2 opratioan→operation、clip_by_value 英文 dtype 列表中的全角逗号改半角 - **系统性语法(历史模板复制扩散)**:Support broadcasting→Supports broadcasting(27个文件)、A ND→An ND(33个文件97处) - **单文件语法修复 71 处(含 signbit returns→Returns、axpy should→Should 两处句首大写补漏)**:ger has→have、addcmul/addcdiv multiply→multiplies、muls An required→A required、equal (x=y)→(x1==x2)、Elementwise→Element-wise、bias_add/lerp/gcd 语序与冠词修复、aicore→AiCore、mod/floor_mod 矛盾表述统一、句首大小写与标点空格等 - 附带 pre-commit 钩子强制规范化(clang-format 重排、尾随空白、文件末尾换行),并保留各文件原有行尾风格(CRLF/LF) 涉及算子:add/sub/mul/muls/div/real_div/floor_div/div_no_nan/pow/minimum/maximum/signbit/less/less_equal/greater/greater_equal/not_equal/equal/bias_add/squared_difference/lerp/logical_and/logical_or/bitwise_or/bitwise_and/bitwise_xor/tanh_grad/axpy/axpy_v2/addcmul/addcdiv/select/select_v2/mod/floor_mod/ger/gcd/clip_by_value/clip_by_value_v2 ## 关联的Issue - #3234 - https://gitcode.com/cann/ops-math/issues/3234 ## 测试 - 纯注释变更,无功能影响 - pre-commit 钩子全部通过(clang-format / trailing-whitespace / end-of-file-fixer / codespell / OAT 合规检查) - 严格限定在上述 39 个算子文件,全仓其余算子未改动(其余算子同类问题可后续另行清理) ## 文档更新 不涉及仓内 docs/ 目录;本 PR 即为 proto.h 注释(算子原型文档源)的修正 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5815 | 16 days ago | |
fix(math): align arch35 UT tiling key with opbase reduce template upgrade Co-authored-by: sunzhongwen1<sunzhongwen1@huawei.com> # message auto-generated for no-merge-commit merge: !6803 merge fix/issue-4193-4192-ut-tiling-key into master fix(math): align arch35 UT tiling key with opbase reduce template upgrade Created-by: sunzhongwen1 Commit-by: sunzhongwen1 Merged-by: cann-robot Description: ## 描述 opbase 依赖升级(cann/opbase!519「新增 batch 一致性需求的 reduce 模版」)在 pkg_inc/op_common/atvoss/reduce/reduce_tiling_key_decl.h 的 REDUCE_TPL_KEY_DECL() 中于 IsContiguous 之后插入 BatchInvariant(bool) 位,使 PatternID / LoopARCount / LoopInnerARCount 整体左移 1 位,同一 tiling 参数的 reduce 模板 tiling key 由 K 变为 2K-1。Dot 与 BiasAddGrad 的 arch35 op_host UT 仍冻结旧值,用例未随依赖升级同步而失败。 本 PR 同步两个算子的 UT 期望值: - BiasAddGradTiling:5161→10321、141375→282749、6167→12333、11839→23677 - DotTiling:5143→10285;同时同步 expectTilingData 中受同一次 opbase 升级影响的 useNddma 字段(8 字节打包字 1040187392→4467570830351532033) ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4193 - https://gitcode.com/cann/ops-math/issues/4192 Fixes #4193 Fixes #4192 ## 测试 bash build.sh -u --opapi --ophost --soc=ascend950 --gtest_filter="DotTiling*:BiasAddGradTiling*" 结果:5/5 PASSED(改动前 5 个用例均失败) ## 文档更新 无 ## 类型标签 - [x] Bug修复 See merge request: cann/ops-math!6803 | 11 days ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
fix(math): 修正equal/frac/affine_grid算子文档与头文件描述对齐实现 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6852 merge fix_MD_1029 into master fix(math): 修正equal/frac/affine_grid算子文档与头文件描述对齐实现 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 本 PR 汇总修正 4 处 math 算子文档/头文件注释与实现不一致的问题,均为描述性修正,不涉及代码逻辑改动: 1. **aclnnIsInScalarTensor**(math/equal/docs/aclnnIsInScalarTensor.md 及英文版):out 参数说明由「shape与testElements相同」修正为「0维标量」,维度列改为 0,并同步修正错误码表 161002 子项为「testElements的维度超过8维」「out的维度不是0维」,对齐实现 OP_CHECK_WRONG_DIMENSION(out, 0),消除文档自相矛盾。 2. **aclnnInplaceFrac**(math/sub/docs/aclnnFrac&aclnnInplaceFrac.md):inputRef 参数角色由「输入」修正为「输入/输出」,补充「计算结果原地写回该tensor」语义说明。 3. **aclnnAffineGrid**(math/affine_grid/docs/aclnnAffineGrid.md):错误码表 161002 新增「theta为空tensor」子项(对齐实现空 tensor 校验);约束说明补充「size中的C不参与计算,对取值无约束」。 4. **aclnnFrac**(math/sub/op_api/aclnn_frac.h):头文件注释三处 dtype 声明补齐 BFLOAT16,并注明「在Atlas训练系列产品上不支持该数据类型」,对齐资料与实现(A2/A3/950 支持 BF16,Atlas 训练系列不支持)。 ## 关联的Issue - #4109(aclnnIsInScalarTensor out shape 描述与实现矛盾) - #4134(aclnn_frac.h 头文件 dtype 声明缺 BFLOAT16) - [#4124](https://gitcode.com/cann/ops-math/issues/4124) - [#4129](https://gitcode.com/cann/ops-math/issues/4129) ## 测试 本次改动均为文档/注释修正,不涉及代码逻辑,无运行测试需求。 相关行为已由实现侧真机验证:aclnnIsInScalarTensor 在 A2 910B2 上 out 为 0 维标量正常返回(161002 仅在 out 非 0 维时上报);aclnnFrac 的 BFLOAT16 在 A2 上 407 条用例全部通过。 ## 文档更新 - math/equal/docs/aclnnIsInScalarTensor.md - math/equal/docs/aclnnIsInScalarTensor_en.md - math/sub/docs/aclnnFrac&aclnnInplaceFrac.md - math/affine_grid/docs/aclnnAffineGrid.md - math/sub/op_api/aclnn_frac.h(doxygen 注释) ## 类型标签 - [x] Bug修复 - [x] 文档更新 - [ ] 新特性 - [ ] 性能优化 - [ ] 其他,请描述: See merge request: cann/ops-math!6852 | 10 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
test: exp_segsum_grad aclnn golden精度判据对齐kernel spec Co-authored-by: qq_37917228<yanmingkui@huawei.com> # message auto-generated for no-merge-commit merge: !7038 merge fix/exp_segsum_grad_golden_tol into master test: exp_segsum_grad aclnn golden精度判据对齐kernel spec Created-by: qq_37917228 Commit-by: qq_37917228 Merged-by: cann-robot Description: ## 描述 承接 !6814(关联 #4220)的后续修正,仅调整 aclnn 侧精度判据: - 删除 _ACLNN_TOLERANCE(上一版引入的 mix_tolerance); - ExpSegsumGradAclnnSpec.tolerance 与 kernel spec 共用 _KERNEL_TOLERANCE(cross_check 三方比对,L1),保持 kernel / aclnn 两通路判据一致。 ## 关联的Issue #4220(已由 !6814 关闭,本 PR 为其精度判据的后续对齐) ## 测试 - [x] 本地 py_compile 语法校验通过 - [x] 本地 torch 验证:ExpSegsumGradAclnnSpec.tolerance 与 ExpSegsumGradKernelSpec.tolerance 均为 cross_check/L1;常规 shape 与空 shape 行为不变 - [x] pre-commit 全量钩子通过(ruff / codespell / OAT 合规) - [x] 全量用例测试通过 49/49 PASS ## 文档更新 无需更新文档(仅测试 golden 脚本变更) ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试精度判据对齐 See merge request: cann/ops-math!7038 | 7 days ago | |
refactor: 明确 Expand 拷贝策略判断函数命名(#4405) Co-authored-by: ayuemoon<15802951036@163.com> # message auto-generated for no-merge-commit merge: !7002 merge fix/expand-copy-predicate-warning-20261102 into master refactor: 明确 Expand 拷贝策略判断函数命名(#4405) Created-by: ayuemoon Commit-by: ayuemoon Merged-by: cann-robot Description: ## 描述 Expand 的 ShouldUseBiggerMemCpy 被 G.FUU.13「禁止封装安全函数」报告为疑似自定义风险函数。该函数实际上仅比较字节数阈值,不执行拷贝。 将其改名为 ShouldUseBulkCopy,明确表达拷贝策略选择的含义,同步主模板、half/bfloat16 两处特化和调用点,共 4 处。函数体和计算逻辑保持原样。 本次未做平台屏蔽,告警是否消除需 CodeCheck 复扫确认。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4405 ## 测试 - 编译验证:成功构建 math_aicpu_op_kernel_ut 目标。 - 单元测试:执行 TEST_EXPAND_UT.*,共 9 个用例,全部通过。 - 覆盖 Expand 的相关功能场景,包括使用输入维度处理 -1、拒绝尺寸不足的输入等。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:内部函数命名整理,处理静态检查反馈。 See merge request: cann/ops-math!7002 | 7 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 | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix test_aclnn_floor.cpp Co-authored-by: ASCEND222<dongfei16@h-partners.com> # message auto-generated for no-merge-commit merge: !7045 merge master into master fix test_aclnn_floor.cpp Created-by: ASCEND222 Commit-by: ASCEND222 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> test_aclnn_floor.cpp存在报错‘printf’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’ ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4427 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7045 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
处理一些issues,修改部分文档 Co-authored-by: Boyang_Zhang<zhangboyang15@h-partners.com> # message auto-generated for no-merge-commit merge: !6858 merge issue4000 into master 处理一些issues,修改部分文档 Created-by: BoyangZhang Commit-by: Boyang_Zhang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 处理一些issues,修改部分文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4000 https://gitcode.com/cann/ops-math/issues/4001 https://gitcode.com/cann/ops-math/issues/4013 https://gitcode.com/cann/ops-math/issues/4015 https://gitcode.com/cann/ops-math/issues/4019 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6858 | 11 days ago | |
sinc等算子冗余workspace改为分配0 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !6261 merge workspace into master sinc等算子冗余workspace改为分配0 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> sinc等算子冗余workspace改为分配0 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3611 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 代码整改 See merge request: cann/ops-math!6261 | 25 days ago | |
fix(fresnel_sin): guard null GM base address and cap per-core split lengths Co-authored-by: wang-gang<wanggang414@h-partners.com> # message auto-generated for no-merge-commit merge: !6849 merge fix/fresnel-sin-ci-format into master fix(fresnel_sin): guard null GM base address and cap per-core split lengths Created-by: wang-gang Commit-by: wang-gang Merged-by: cann-robot Description: ## 描述 FresnelSin kernel performs an unchecked GM base address dereference in Init(): for oversized tensors (e.g. 2^32 fp32 elements) the GM allocation may fail and the framework hands over a null base address, so the first CopyIn reads address 0x0 (mSAN reports 2x illegal read of size 1 on GM). The host tiling also stores the per-core split lengths in uint32_t fields while the total element count is int64, which can silently truncate for element counts beyond the uint32 range. Changes: - op_kernel/arch35/fresnel_sin.h: add a null-pointer guard in Init() so the kernel bails out before any GM access, and guard Process() against zero-length work (avoids the loopCount division by zero when Init() returns early). - op_host/arch35/fresnel_sin_tiling.cpp: reject per-core split lengths beyond UINT32_MAX right at the narrowing point in FresnelSinTilingFunc(), so any length that the static_cast<uint32_t> of baseLength/tailLength would silently truncate fails fast in the host tiling with an explicit error, without rejecting large total element counts that the kernel itself supports. The FresnelSinTilingData layout is intentionally unchanged (no uint64 widening of baseLength/tailLength): the new host-side limit makes truncation unreachable, and keeping the layout avoids cross-component compatibility risk. ## 关联的Issue https://gitcode.com/wangyueting/changwei_gaoxiang/issues/18 ## 测试 - pre-commit checks (clang-format 18.1.8, OAT compliance, codespell) verified locally with the same hook versions as CI; the two touched files now pass clang-format --style=file --dry-run -Werror cleanly. - Local environment has no NPU device / CANN toolkit, so the mSAN reproduction (shape (1, 4294967296, 1, 1, 1) fp32) could not be run locally; verification relies on CI plus an mSAN rerun of the L1 upboundary cases. - Static code review: OP_CHECK_IF/OP_LOGE/UINT32_MAX usage follows existing conventions in this repo (e.g. split_v_tiling.cpp); the guard in Process() prevents a division-by-zero UB on the early-return path; normal-path behavior is unchanged. ## 文档更新 None ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6849 | 7 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 | |
产品名变更 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 | |
OneHot,ConfusedTransposeD,FusedMulAddN等3个算子infershape&inferDataType缺失补充 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !6617 merge feat/rt2-infer-4ops into master OneHot,ConfusedTransposeD,FusedMulAddN等3个算子infershape&inferDataType缺失补充 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> OneHot,ConfusedTransposeD,FusedMulAddN等3个算子infershape&inferDataType缺失补充 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT/ST ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6617 | 17 days ago | |
适配ascend350:11个conversion/math算子新增ascend350计算单元支持 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !6424 merge ascend350 into master 适配ascend350:11个conversion/math算子新增ascend350计算单元支持 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 11个conversion/math算子新增ascend350计算单元支持 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3649 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6424 | 22 days ago | |
docs(math): 修正Gcd README占位描述与实际交付不一致 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !6753 merge docs/gcd-readme into master docs(math): 修正Gcd README占位描述与实际交付不一致 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 math/gcd/README.md 为占位空壳,全文仅"本目录仅包含Gcd算子对应的aclnn接口"一句,与仓库事实矛盾:同目录 op_kernel/ 已有 AscendC 实现,op_host/gcd_def.cpp 注册的 opFile.value 即指向该 kernel 入口,而 docs/zh/op_list.md 索引直达该占位页。 本PR删除占位句,按算子README模板补齐章节: - 产品支持情况:与 docs/aclnnGcd.md 口径一致(含 Atlas 200I/500 A2推理产品不支持) - 功能说明:算子功能与计算公式 y = gcd(x1, x2) - 参数说明:参数表与 op_host/gcd_def.cpp 注册规格一致(x1/x2/y,UINT8、INT8、INT16、INT32、INT64,ND);分平台数据类型差异就近说明:Atlas A3/A2/推理系列产品不支持 UINT8、INT8,Atlas训练系列产品仅支持 INT32,与 op_api/aclnn_gcd.cpp 平台数据类型门控一致 - 约束说明:无(接口层约束见接口文档,不重复维护) - 调用说明:aclnn 样例、接口文档与算子IR(op_graph/gcd_proto.h)相对链接 ## 关联的Issue Closes #3718 ## 测试 纯文档修改,无代码与功能变更,无需上板验证。 - 参数表与 op_host/gcd_def.cpp 注册规格逐项一致;分平台数据类型差异说明与 op_api/aclnn_gcd.cpp 平台支持列表逐项一致;产品支持表与 docs/aclnnGcd.md 口径一致 - 相对链接逐项核验有效(docs/aclnnGcd.md、examples/test_aclnn_gcd.cpp、op_graph/gcd_proto.h) - pre-commit 通过 ## 文档更新 math/gcd/README.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6753 | 10 days ago | |
docs(math): 修正Ger README占位描述与实际交付不一致 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !6779 merge docs/ger-readme into master docs(math): 修正Ger README占位描述与实际交付不一致 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 math/ger/README.md为占位空壳,全文仅"本目录仅包含Ger算子对应的aclnn接口"一句,与仓库事实矛盾:同目录op_kernel/已有AscendC实现(入口ger_apt.cpp),op_host/ger_def.cpp亦注册了opFile.value指向该kernel入口,同目录还有接口文档docs/aclnnGer.md与样例examples/test_aclnn_ger.cpp,而docs/zh/op_list.md索引直达该占位页。 本PR删除占位句,按算子README模板补齐四个必选章节: - **产品支持情况**:与docs/aclnnGer.md产品支持口径一致 - **功能说明**:算子功能(一维向量外积)与计算公式 - **参数说明**:参数表与op_host/ger_def.cpp定义一致(x1/x2/y,BFLOAT16、FLOAT16、FLOAT,ND);分平台数据类型差异说明就近置于参数表下方:Atlas A3/A2/训练系列产品不支持BFLOAT16,与op_api/aclnn_ger.cpp平台数据类型门控一致 - **约束说明**:无(接口层约束见接口文档,不在README重复维护) - **调用说明**:aclnn API样例examples/test_aclnn_ger.cpp、接口文档与算子IR(op_graph/ger_proto.h)链接 ## 关联的Issue Closes #3719(拆分自#3691的13条"README声称仅接口但op_kernel已有实现"硬矛盾项之一) ## 测试 - 纯文档修改,无代码与功能变更,无需上板验证 - 相对链接逐项核验存在(docs/aclnnGer.md、examples/test_aclnn_ger.cpp、op_graph/ger_proto.h) - 参数表与op_host/ger_def.cpp注册规格逐项一致;分平台数据类型差异说明与op_api/aclnn_ger.cpp平台数据类型门控(RegBase分支)逐项一致;产品支持表与docs/aclnnGer.md口径一致 - pre-commit全部钩子通过(trailing-whitespace / end-of-file-fixer / codespell / OAT合规) - 按仓库wiki《算子README文档模板》质检清单自检通过(必选章节、markdownlint、中英文标点空格、数据类型顿号分隔、产品名精确匹配、敏感词) ## 文档更新 math/ger/README.md(单文件单提交) ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6779 | 10 days ago | |
fix(get_dynamic_dims): validate input data types Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !5953 merge fix/issue-3274-get-dynamic-dims-dtype-check into master fix(get_dynamic_dims): validate input data types Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 GetDynamicDims根据输出数据类型选择模板类型,并使用该类型读取所有动态输入。原实现未校验各输入与输出的数据类型是否一致,混合数据类型场景可能导致输入数据被错误解释。 本次修改在读取输入数据前校验所有动态输入的数据类型与输出一致;数据类型不一致时返回参数错误。同时补充算子原型和README中的数据类型约束,并增加首输入与输出类型不一致、后续动态输入类型不一致的回归用例。 ## 关联的Issue Fixes #3274 ## 测试 修改前执行: bash bash build.sh -u --opkernel_aicpu --ops=get_dynamic_dims \ --gtest_filter=GetDynamicDimsAicpuTest.* -j16 原有7个用例通过,新增2个混合数据类型用例失败,问题稳定复现。 修改后执行相同命令,9个用例全部通过。 执行以下pre-commit检查,全部通过: bash pre-commit run --files \ math/get_dynamic_dims/README.md \ math/get_dynamic_dims/op_graph/get_dynamic_dims_proto.h \ math/get_dynamic_dims/op_kernel_aicpu/get_dynamic_dims_aicpu.cpp \ math/get_dynamic_dims/tests/ut/op_kernel_aicpu/test_get_dynamic_dims.cpp ## 文档更新 更新math/get_dynamic_dims/README.md和get_dynamic_dims_proto.h,明确所有动态输入的数据类型必须一致,输出数据类型与输入一致。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5953 | 1 month ago | |
fix: 修复 GetShape infershape UT 多输入用例的 NodeIoNum 声明冲突 Co-authored-by: tan_xin<tanxin44@huawei.com> # message auto-generated for no-merge-commit merge: !7022 merge master-tile into master fix: 修复 GetShape infershape UT 多输入用例的 NodeIoNum 声明冲突 Created-by: tan_xin Commit-by: tan_xin Merged-by: cann-robot Description: ## 描述 修复 math/get_shape/tests/ut/op_host/test_get_shape_infershape.cpp 中多输入用例的 NodeIoNum 声明冲突: - TwoInputs_2D_And_3D(2 输入)与 MultipleDtypes(3 输入)两个用例原带 .NodeIoNum(1, 1),声明 node 仅 1 输入 1 输出,与 IrInstanceNum({2}/{3}, {1}) 设置的多输入矛盾,导致 UT 失败。 - 移除这两个用例中的 .NodeIoNum(1, 1),使其与实际输入个数一致;单输入用例(SingleInput_3D_Tensor / ScalarInput_Fail / VectorInput)不受影响,保留原声明。 ## 关联的Issue 关联 Issue [#4417](https://gitcode.com/cann/ops-math/issues/4417) ## 测试 - get_shape infershape UT 全部用例通过(含多输入 2D/3D 与多 dtype 场景)。 ## 文档更新 NA ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7022 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix(grouped_bias_add_grad): initialize empty reduction output Co-authored-by: Annyqw<yeqianwen2@huawei.com> # message auto-generated for no-merge-commit merge: !6929 merge codex/fix-grouped-bias-add-grad-empty-output into master fix(grouped_bias_add_grad): initialize empty reduction output Created-by: Annyqw Commit-by: Annyqw Merged-by: cann-robot Description: ## 问题 gradY 为空但 gradBias 非空时(如 [2, 0, 4] -> [2, 4]),原实现直接返回成功,没有写入输出,导致结果保留未初始化数据。 ## 修复 - 空输入且输出非空时,通过 Fill 生成同 dtype 的全零 Tensor。 - 使用 ViewCopy 写回用户输出,兼容非连续输出。 - V1、V2 各增加一个空输入建图 UT。 ## 验证 - OP API UT:12/12 passed。 - 910B3 精确复现 ATK:2/2 passed,精度 。 - 仓库完整 aclnnGroupedBiasAddGrad ATK:210/210 passed,精度 Pass。 - 完整 OP API 动态库构建成功。 - pre-commit 基础检查、clang-format、codespell passed。 Fixes #3841 See merge request: cann/ops-math!6929 | 8 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
修改histogram_fixed_width调用示例 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !7004 merge dev_1102 into master 修改histogram_fixed_width调用示例 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改histogram_fixed_width调用示例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4408 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7004 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 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 | |
Inv 算子 golden 容差从 mix_tolerance 改为 cross_check L1 Co-authored-by: JasonZhang88<jason.zhangshen@huawei.com> # message auto-generated for no-merge-commit merge: !6955 merge master_new into master Inv 算子 golden 容差从 mix_tolerance 改为 cross_check L1 Created-by: JasonZhang88 Commit-by: JasonZhang88 Merged-by: cann-robot Description: ## 描述 Inv 算子 golden 容差从 mix_tolerance 改为 cross_check L1(1 文件 +7/-9)。 两处 tolerance dict(InvTestSpec、InvTensorFlowTestSpec)的浮点条目从 mix_tolerance rtol/atol 改为 cross_check L1,int32 保持 binary_equal 不变。 cross_check 为三方判据(NPU 输出 + CPU golden + XPU 第三方参考),需要 TTK XPU Server 支持(ttk.conf.yaml 配置)。 ## 关联的 Issue https://gitcode.com/cann/ops-math/issues/4381 ## 测试 **上板精度验证**(Ascend950PR + XPU Server CPU 三方参考,cross_check L1): - L0 全量 **43/43 PASS(100%)**,覆盖全 dtype: - float32: 14/14 - float16: 15/15(含次正规、rank-0 标量、2^31 边界、空 Tensor) - bfloat16: 7/7(含次正规、rank-0 标量、空 Tensor) - int32: 7/7(三值映射含 INT_MIN/MAX) - 零精度失败、零 PROFILE_CRASH ## 文档更新 不涉及。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6955 | 8 days ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
diag等算子冗余workspace改为分配0 Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !6418 merge new_ww into master diag等算子冗余workspace改为分配0 Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> diag等算子冗余workspace改为分配0 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3678 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码整改 See merge request: cann/ops-math!6418 | 21 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
修复issue的问题 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !6812 merge master into master 修复issue的问题 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 本 PR 修复 6 个算子问题,均为 Bug 修复(含 1 项文档修正): 1. **is_inf 尾块越界读写(#3925)**:数据长度不足 32B 对齐时,尾块原先按 32B 整倍搬运导致 GM 越界读/写。修复为整块用 DataCopy、尾块用 DataCopyPad 按真实字节搬运,ComputePerCore 尾块输出按真实计数写出。math/is_inf/op_kernel/is_inf.h。 2. **addcmul value=NaN 走错快路径(#3894)**:IsEqualToOne 对 NaN 判等为 true(所有比较均 false 取反),导致 value=NaN 时误走 AxpyV2 快路径、缺失 value 项。修复为显式排除 NaN。math/addcmul/op_api/aclnn_addcmul.cpp。 3. **cdist 非法 shape 返回码(#3929)**:out 形状与推导不匹配时返回内部空指针错误 561103,修复为在 GetWorkspaceSize 增加 out 期望形状校验,返回标准参数错误 161002。math/cdist/op_api/aclnn_cdist.cpp。 4. **div 非法参数返回码(#3962)**:日志错误码与返回码不一致,统一返回 161002。math/div/op_api/aclnn_div.cpp。 5. **VarMean 文档矛盾(#4182)**:中英文档 self 维度列由 1-8 修正为 0-8(与「shape 支持 0 到 8 维」及 meanOut/varOut 的 0-8 保持一致);参数表 varOut/meanOut 行序与原型(varOut 为第 5 参、meanOut 为第 6 参)对齐。math/reduce_var/docs/。 6. **LinSpace legacy tiling 丢失 INT64 num 精度(#3347):** LinSpaceGetConstValue 的 DT_INT64 分支先将 int64_t 经 float 转换,num=16777219 被舍入为 16777220,与 InferShape 输出维度不一致;修复为直接读取 int64 数值、经 double 无损保留。math/lin_space/op_host/lin_space_tiling.cpp。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3925 - https://gitcode.com/cann/ops-math/issues/3894 - https://gitcode.com/cann/ops-math/issues/3929 - https://gitcode.com/cann/ops-math/issues/3962 - https://gitcode.com/cann/ops-math/issues/4182 - https://gitcode.com/cann/ops-math/issues/3347 ## 测试 910B3 / CANN 9.3.0 上板验证(2026-10-29): - **is_inf**:尾块用例长度 17/25/31/33/40(非 32B 对齐),尾部放置 inf/-inf/nan,输入输出 buffer 后 64B 金丝雀检测越界,5 组全部 PASS 且无越界读写。 - **addcmul**:value=NaN → out=NaN(修复前误得 7.0);value=1.0/2.0 回归正常。 - **cdist**:out 形状不匹配返回 161002,合法形状返回 0。 - **div**:shape 不匹配/非法 mode 均返回 161002。 - **VarMean**:issue 复现脚本实测命中 0 处(纯文档改动,无需上板)。 - **LinSpace**:tiling data 中 num=16777219 保留、InferShape 输出 [16777219](num=17 对照),Host UT 6/6 PASS,基线回归证实旧实现舍入为 16777220。 ## 文档更新 - math/reduce_var/docs/aclnnVarMean.md、math/reduce_var/docs/aclnnVarMean_en.md(维度范围与参数顺序修正)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6812 | 10 days ago | |
math仓121算子迁蓝 Co-authored-by: andong_hw<andong2@huawei.com> # message auto-generated for no-merge-commit merge: !5762 merge master into master math仓121算子迁蓝 Created-by: qq_52874943 Commit-by: andong_hw Merged-by: cann-robot Description: ## 描述 math仓部分121算子黄迁蓝,只进行960dt适配,以及算子二进制补充,不动kernel和tiling代码。 ## 关联的Issue 关联Issue[#3650](https://gitcode.com/cann/ops-math/issues/3650) ## 测试 本地已完成新精度对比与性能测试,通过静态检查、蓝区冒烟、算子ST以及算子二级冒烟。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5762 | 21 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix(kl_div): 支持通过环境变量选择设备 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !6966 merge fix_example into master fix(kl_div): 支持通过环境变量选择设备 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 kl_div 图示例硬编码 deviceId 为 1,在仅有 NPU 0 的环境中会导致 GE 初始化失败。现改为读取 ASCEND_DEVICE_ID,未设置时默认使用 0,避免设备环境差异导致执行失败。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4385 ## 测试 分别验证未设置 ASCEND_DEVICE_ID 和显式设置 ASCEND_DEVICE_ID=0: - kl_div:54/54 passed,execute samples success。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 See merge request: cann/ops-math!6966 | 9 days ago | |
aclnnCdist/aclnnkldiv消除多余的broadcast调用 Co-authored-by: sunzhongwen1<sunzhongwen1@huawei.com> # message auto-generated for no-merge-commit merge: !6732 merge bugfix/aclnncdist/aclnnkldiv into master aclnnCdist/aclnnkldiv消除多余的broadcast调用 Created-by: sunzhongwen1 Commit-by: sunzhongwen1 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6732 | 12 days ago | |
fix(left_shift): 修复只读参数const规范问题 Co-authored-by: xiafengkou<luojiangtao4@huawei.com> # message auto-generated for no-merge-commit merge: !6768 merge fix/left-shift-codecheck into master fix(left_shift): 修复只读参数const规范问题 Created-by: xiafengkou Commit-by: xiafengkou Merged-by: cann-robot Description: ## 描述 修复 left_shift 算子 op_api 代码中的两条 G.CNS.04-CPP 只读参数规范问题。 将 CheckPromoteType 和 CheckPromoteTypeScalar 函数中仅用于读取数据类型的 out 参数由 aclTensor* 修改为 const aclTensor*,明确参数的只读语义。本次仅增加 const 限定,不涉及计算逻辑、数据处理流程及接口功能变更。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4171 ## 测试 1. 执行 pre-commit 检查,全部通过。 2. 编译 ophost_math_opapi_obj 目标,编译通过。 3. 构建 math_op_api_ut 测试目标,构建通过。 4. 执行 left_shift、left_shifts 相关 op_api UT,共 56 个用例,全部通过。 5. 执行 git diff --check,检查通过。 ## 文档更新 无,本次修改不涉及文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6768 | 12 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix: 修复aclnnLtScalar非RegBase路径空指针错误码 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6749 merge fix_LtScalar_1027 into master fix: 修复aclnnLtScalar非RegBase路径空指针错误码 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 背景 Issue #3913:aclnnLtScalar / aclnnInplaceLtScalar 在 self / other(原地 selfRef)传空指针时,非 RegBase(A2/A3)路径返回 ACLNN_ERR_INNER_NULLPTR(561103),与资料要求及 RegBase 路径的 ACLNN_ERR_PARAM_NULLPTR(161001) 不一致,且与同函数内 out 空指针的返回码矛盾。 ## 修改 math/less/op_api/aclnn_lt_scalar.cpp 非 RegBase 路径 aclnnLtScalarGetWorkspaceSize: - CHECK_RET(other != nullptr, ACLNN_ERR_INNER_NULLPTR) -> ACLNN_ERR_PARAM_NULLPTR - CHECK_RET(self != nullptr, ACLNN_ERR_INNER_NULLPTR) -> ACLNN_ERR_PARAM_NULLPTR aclnnInplaceLtScalarGetWorkspaceSize 经 const_cast 转发到同一函数,selfRef 场景自动覆盖。 ## UT 同步 同步更新 4 处 UT 空指针断言(test_lt_scalar.cpp / test_inplace_lt_scalar.cpp)为 ACLNN_ERR_PARAM_NULLPTR。 ## 验证 - A2(910B3)/ CANN 9.2.0 环境构建 opapi 库成功(bash build.sh --opapi) - 链接修改后构建的 libopapi_math.so 运行复现用例,6 场景全部符合预期: - 合法输入 -> 0(无回归) - self / other / selfRef 空指针 -> 161001 - out 空指针 -> 161001(与修改前一致) See merge request: cann/ops-math!6749 | 12 days ago | |
docs: 修复math算子文档错误码表缺项并对齐数据类型约束与实现 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6765 merge fix_mathMD_1028 into master docs: 修复math算子文档错误码表缺项并对齐数据类型约束与实现 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 本次PR针对多个math算子文档与实现不一致或错误码表缺项的问题进行修复,共涉及6份算子文档: 1. aclnnMaxDim:错误码表161002补充"self、out、indices维度大于8时"子项,与参数表维度0-8说明对齐; 2. aclnnBitwiseXorTensor:删除out不支持UINT16/UINT32/UINT64/COMPLEX64/COMPLEX128的约束描述,对齐实际实现的放行行为; 3. aclnnFloor:删除非连续Tensor列UINT16/UINT32/UINT64不支持的无效约束(A2真机实测非连续输入均正常支持); 4. aclnnLeScalar/aclnnLeTensor:补充out、selfRef不支持UINT32/UINT64的平台约束(910/310p、A3/910b),并合并到既有平台约束块; 5. aclnnNeTensor:补充Atlas A2/A3系列self、other不支持UINT64的约束说明(A2真机验证放开校验会产生错误结果,当前拒绝行为是安全的)。 ## 关联的Issue - #3884:aclnnMaxDim错误码表缺少维度大于8子项 - #3881:aclnnBitwiseXorTensor文档声明out不支持UINT16/UINT32/UINT64/COMPLEX64/COMPLEX128与实现不符 - #3883:aclnnFloor文档多写非连续Tensor不支持UINT16/UINT32/UINT64约束 - #3853:aclnnNeTensor A2平台UINT64支持说明与实现不符 - #3889:aclnnLeTensor/aclnnLeScalar out支持UINT32/UINT64与实现不符 ## 测试 本次为纯文档修改,无代码变更。各文档改动均经实现代码(dtype支持列表、校验逻辑)静态核对,并对以下场景在A2真机验证: - aclnnFloor非连续UINT16/UINT32/UINT64输入6组用例全部成功且结果正确; - aclnnNeTensor UINT64放开校验后输出全假并伴随堆内存损坏,确认kernel未实现UINT64模板,以文档约束闭环; - aclnnBitwiseXorTensor COMPLEX64/COMPLEX128输出语义验证通过。 ## 文档更新 - math/arg_max_with_value/docs/aclnnMaxDim.md - math/bitwise_xor/docs/aclnnBitwiseXorTensor&aclnnInplaceBitwiseXorTensor.md - math/floor/docs/aclnnFloor&aclnnInplaceFloor.md - math/less_equal/docs/aclnnLeScalar&aclnnInplaceLeScalar.md - math/less_equal/docs/aclnnLeTensor&aclnnInplaceLeTensor.md - math/not_equal/docs/aclnnNeTensor&aclnnInplaceNeTensor.md ## 类型标签 - [x] 文档更新 See merge request: cann/ops-math!6765 | 12 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
修复issue的问题 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !6812 merge master into master 修复issue的问题 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 本 PR 修复 6 个算子问题,均为 Bug 修复(含 1 项文档修正): 1. **is_inf 尾块越界读写(#3925)**:数据长度不足 32B 对齐时,尾块原先按 32B 整倍搬运导致 GM 越界读/写。修复为整块用 DataCopy、尾块用 DataCopyPad 按真实字节搬运,ComputePerCore 尾块输出按真实计数写出。math/is_inf/op_kernel/is_inf.h。 2. **addcmul value=NaN 走错快路径(#3894)**:IsEqualToOne 对 NaN 判等为 true(所有比较均 false 取反),导致 value=NaN 时误走 AxpyV2 快路径、缺失 value 项。修复为显式排除 NaN。math/addcmul/op_api/aclnn_addcmul.cpp。 3. **cdist 非法 shape 返回码(#3929)**:out 形状与推导不匹配时返回内部空指针错误 561103,修复为在 GetWorkspaceSize 增加 out 期望形状校验,返回标准参数错误 161002。math/cdist/op_api/aclnn_cdist.cpp。 4. **div 非法参数返回码(#3962)**:日志错误码与返回码不一致,统一返回 161002。math/div/op_api/aclnn_div.cpp。 5. **VarMean 文档矛盾(#4182)**:中英文档 self 维度列由 1-8 修正为 0-8(与「shape 支持 0 到 8 维」及 meanOut/varOut 的 0-8 保持一致);参数表 varOut/meanOut 行序与原型(varOut 为第 5 参、meanOut 为第 6 参)对齐。math/reduce_var/docs/。 6. **LinSpace legacy tiling 丢失 INT64 num 精度(#3347):** LinSpaceGetConstValue 的 DT_INT64 分支先将 int64_t 经 float 转换,num=16777219 被舍入为 16777220,与 InferShape 输出维度不一致;修复为直接读取 int64 数值、经 double 无损保留。math/lin_space/op_host/lin_space_tiling.cpp。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3925 - https://gitcode.com/cann/ops-math/issues/3894 - https://gitcode.com/cann/ops-math/issues/3929 - https://gitcode.com/cann/ops-math/issues/3962 - https://gitcode.com/cann/ops-math/issues/4182 - https://gitcode.com/cann/ops-math/issues/3347 ## 测试 910B3 / CANN 9.3.0 上板验证(2026-10-29): - **is_inf**:尾块用例长度 17/25/31/33/40(非 32B 对齐),尾部放置 inf/-inf/nan,输入输出 buffer 后 64B 金丝雀检测越界,5 组全部 PASS 且无越界读写。 - **addcmul**:value=NaN → out=NaN(修复前误得 7.0);value=1.0/2.0 回归正常。 - **cdist**:out 形状不匹配返回 161002,合法形状返回 0。 - **div**:shape 不匹配/非法 mode 均返回 161002。 - **VarMean**:issue 复现脚本实测命中 0 处(纯文档改动,无需上板)。 - **LinSpace**:tiling data 中 num=16777219 保留、InferShape 输出 [16777219](num=17 对照),Host UT 6/6 PASS,基线回归证实旧实现舍入为 16777220。 ## 文档更新 - math/reduce_var/docs/aclnnVarMean.md、math/reduce_var/docs/aclnnVarMean_en.md(维度范围与参数顺序修正)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6812 | 10 days ago | |
math仓log算子适配aclnn通路支持121 Co-authored-by: qq_52874943<gaomingyuan3@h-partners.com> # message auto-generated for no-merge-commit merge: !6995 merge master into master math仓log算子适配aclnn通路支持121 Created-by: qq_52874943 Commit-by: qq_52874943 Merged-by: cann-robot Description: ## 描述 math/log/op_api/aclnn_log2.cpp 的 CheckDtypeValid 原来仅通过 SocVersion 是否落在 [ASCEND910B, ASCEND910E] 区间来判断是否使用 910B 的 dtype 支持列表(含 BF16)。 新增的 regbase 架构芯片(ascend950 / ascend350 / ascend960dt 等,SocVersion 为 121)同样支持 910B 的 dtype 列表,但其 SocVersion 不在该区间内,会被误判为 910 老列表,导致 BF16 等类型的入参/出参校验失败,aclnn 通路在 121 芯片上无法正常使用 log2。 本次改动在 910B 区间判断的基础上,叠加 IsRegBase() 判断,使 regbase 芯片同样命中 910B dtype 列表(含 BF16),写法对齐 asin 等已适配算子。改动仅影响 regbase 芯片的 dtype 选择,不影响 910 / 910B / 910E 原有芯片的行为。 ## 关联的Issue fix https://atomgit.com/cann/ops-math/issues/4406 ## 测试 - 对 aclnnLog2 在 regbase(SocVersion 121)芯片上执行二级冒烟:BF16 等入参/出参组合通过 CheckDtypeValid 校验,不再误判为不支持类型。 - 对 910 / 910B / 910E 原有芯片执行二级冒烟回归:dtype 支持列表保持 910 / 910B 原行为不变,无回归。 - 算子泛化:在 121 芯片上对 log2 aclnn 接口跑通 BF16 泛化用例,确认通路可用。 ## 文档更新 无。本次为 aclnn 通路内部芯片适配改动,不涉及 README 或接口文档变更。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6995 | 7 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 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 | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
fix(logical_or): 恢复 op_api UT 4 处被注释的返回码断言并修复平台泄漏 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !6879 merge fix-logical-or-ut-assert into master fix(logical_or): 恢复 op_api UT 4 处被注释的返回码断言并修复平台泄漏 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: ## 问题背景 对应 Issue #4290(由 #4199 按算子责任人拆分)。 math/logical_or/tests/ut/op_api/test_aclnn_logical_or.cpp 中 4 处 EXPECT_EQ(aclRet, ACL_SUCCESS) 断言被整行注释,测试体仍调用 TestGetWorkspaceSize 但无返回码校验,存在显式返回码断言覆盖缺口。 ## 修改内容 ### 1. 恢复 4 处返回码断言(成功用例,非统一改写) 逐例核验 4 个用例的 dtype/format/shape 均通过 CheckParams 参数校验(dtype 在支持列表、broadcast 推导 shape 与输出一致、维度 ≤ 8),预期与实际返回码均为 ACL_SUCCESS,据此恢复 EXPECT_EQ(aclRet, ACL_SUCCESS): | 用例 | 输入 dtype/format | 输出 dtype | 执行路径 | |---|---|---|---| | testcase007 (L201) | INT16 + INT16 / NDHWC 5维 | INT16 | 同dtype直调kernel → Cast → ViewCopy | | testcase009 (L259) | UINT8 + UINT8 / NHWC | UINT8 | 同dtype直调kernel → Cast → ViewCopy | | testcase013 (L317) | UINT8 + UINT8 / NHWC | FLOAT16 | 同dtype直调kernel → Cast → ViewCopy | | testcase015 (L375) | INT16 + INT32 / NDHWC(异dtype) | FLOAT | 双输入Cast到BOOL → BOOL kernel → Cast → ViewCopy | 整体注释的空指针用例 testcase027 不在本单范围,保持原样。 ### 2. 修复 DAV_3510 平台泄漏 testcase005 通过 SetPlatformNpuArch(NpuArch::DAV_3510) 设置平台后未恢复,全局状态泄漏导致后续所有用例(含 007/009/013/015)实际运行于 ASCEND950 平台而非默认平台。参考 chunk_cat UT 惯例,在 fixture 的 TearDown() 中恢复默认平台 DAV_2201(对应 ASCEND910B),实现每例平台意图明确、互不污染。 ## 验证结果 本地环境:CANN 9.3.0(x86_64-linux),bash build.sh -u --ops=logical_or 编译并运行 op_api UT。 - 全量顺序运行(平台隔离生效):**25/25 PASSED** - 4 个恢复断言用例单独运行(默认 ASCEND910B 平台):**4/4 PASSED** - --gtest_shuffle 随机顺序 ×2(seed=42/7):**25/25 PASSED** 成功与错误码用例分别核验:错误码用例 028/029/030/031 保持 ACLNN_ERR_PARAM_INVALID 断言不变,全部通过。 ## 关联 - fix #4290 - 回链原始反馈单 #4199 See merge request: cann/ops-math!6879 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6802 merge mm into master fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 修正 maximum_grad / minimum_grad 测试资产(tests/assets/golden.py 三方标杆与 *_e2e.py e2e 通路)中浮点反向的实现与计时口径。 ### 改动原因 - 旧实现浮点路径每次调用裸起 tf.GradientTape,前向(maximum/minimum 与 Mul)随反向一同进入执行与计时窗口,GPU 三方标杆采集的 device_us 并非纯反向耗时,与 NPU 侧 e2e 通路口径不对称。 - 旧 e2e 实现为规避 npu_device 动态图 GE 会话模型缓存按算子节点名复用导致的常量串台问题,每次调用都以唯一 name_scope 强制 graph_id 错开,代价是每次调用重新编译,同签名用例无法共享已编译图。 ### 改动方法 - **golden.py(三方标杆)**:浮点路径改为 tf.function 包裹的 tape 反向,只返回梯度,前向为死代码被剪除,计时窗口纯反向;int32 无梯度定义,抽出手拼分支(GreaterEqual/LessEqual + SelectV2×2 + Sum,与 golden 同口径)。 - **\*_e2e.py(e2e 通路)**:浮点路径改为 tf.function 包裹的 tape 反向且只返回梯度,NPU 执行纯反向链(融合后 te_maximumgrad/te_minimumgrad + te_reducesum),与 GPU 侧标杆口径对称;tf.function 按 (shape,dtype) 签名缓存 concrete function,同签名共享编译图(输入为 placeholder,无常量串台),跨签名 trace 时以 _TRACE_SEQ 唯一化 name_scope 错开 graph_id;int32 保留手拼路径。 - numpy golden(kernel/geir 通路 oracle)与精度判据(binary_equal、三比值)不变;融合规则的 gradient_tape scope 检查按名字分段匹配,前缀不影响。 ## 关联的Issue - #4204 ## 测试 - 变更仅涉及 tests/assets 测试资产,不改动算子实现(op_host/op_kernel/op_graph)。 - 验证方式:复用进程批跑 maximum_grad / minimum_grad 的 e2e 用例,确认浮点 golden 三比值 cross_check 通过、int32 binary_equal 通过、device_us 采集正常且同签名用例不重复触发编译。 ## 文档更新 - 无(不涉及 README / docs 变更)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6802 | 11 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6802 merge mm into master fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 修正 maximum_grad / minimum_grad 测试资产(tests/assets/golden.py 三方标杆与 *_e2e.py e2e 通路)中浮点反向的实现与计时口径。 ### 改动原因 - 旧实现浮点路径每次调用裸起 tf.GradientTape,前向(maximum/minimum 与 Mul)随反向一同进入执行与计时窗口,GPU 三方标杆采集的 device_us 并非纯反向耗时,与 NPU 侧 e2e 通路口径不对称。 - 旧 e2e 实现为规避 npu_device 动态图 GE 会话模型缓存按算子节点名复用导致的常量串台问题,每次调用都以唯一 name_scope 强制 graph_id 错开,代价是每次调用重新编译,同签名用例无法共享已编译图。 ### 改动方法 - **golden.py(三方标杆)**:浮点路径改为 tf.function 包裹的 tape 反向,只返回梯度,前向为死代码被剪除,计时窗口纯反向;int32 无梯度定义,抽出手拼分支(GreaterEqual/LessEqual + SelectV2×2 + Sum,与 golden 同口径)。 - **\*_e2e.py(e2e 通路)**:浮点路径改为 tf.function 包裹的 tape 反向且只返回梯度,NPU 执行纯反向链(融合后 te_maximumgrad/te_minimumgrad + te_reducesum),与 GPU 侧标杆口径对称;tf.function 按 (shape,dtype) 签名缓存 concrete function,同签名共享编译图(输入为 placeholder,无常量串台),跨签名 trace 时以 _TRACE_SEQ 唯一化 name_scope 错开 graph_id;int32 保留手拼路径。 - numpy golden(kernel/geir 通路 oracle)与精度判据(binary_equal、三比值)不变;融合规则的 gradient_tape scope 检查按名字分段匹配,前缀不影响。 ## 关联的Issue - #4204 ## 测试 - 变更仅涉及 tests/assets 测试资产,不改动算子实现(op_host/op_kernel/op_graph)。 - 验证方式:复用进程批跑 maximum_grad / minimum_grad 的 e2e 用例,确认浮点 golden 三比值 cross_check 通过、int32 binary_equal 通过、device_us 采集正常且同签名用例不重复触发编译。 ## 文档更新 - 无(不涉及 README / docs 变更)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6802 | 11 days ago | |
fix(mod): support int8/uint8 fmod scalar promotion (#4177) Co-authored-by: zhouyuanhang30083383<zhouyuanhang4@h-partners.com> # message auto-generated for no-merge-commit merge: !7013 merge fix/fmod-scalar-minimal-dtype into master fix(mod): support int8/uint8 fmod scalar promotion (#4177) Created-by: m0_55003149 Commit-by: zhouyuanhang30083383 Merged-by: cann-robot Description: ## 描述 aclnnFmodScalar / aclnnInplaceFmodScalar 在非 RegBase 路径中,int8 Tensor + uint8 Scalar(以及反向)当前按 Tensor-Tensor 表推导为不支持的 int16,导致第一段接口返回 161002。 修改:保留原有 Tensor-Tensor 推导;仅当推导结果不受支持且组合为 s8 + u8 / u8 + s8 时回退到 Tensor-Scalar 结果: ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4177 ## 测试 新增 aclnnFmodScalar 与 aclnnInplaceFmodScalar 的双向用例: - int8 Tensor + uint8 Scalar - uint8 Tensor + int8 Scalar text 12 tests from 2 test suites ran. [ PASSED ] 12 tests. ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7013 | 7 days ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 11 days ago | |
docs: 修正 math 算子 README 文档中的描述与数据类型说明 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !6158 merge 3246 into master docs: 修正 math 算子 README 文档中的描述与数据类型说明 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 修正 math 目录下 13 个算子 README.md 文档中的描述问题,提升文档准确性与术语一致性,具体包括: - 数据类型说明修正: abs 输出类型列表去掉重复的 FLOAT16、FLOAT,改为 COMPLEX32、COMPLEX64;assign_sub 修正拼写 BFOAT16 → BFLOAT16。 - 属性名拼写修正:hans_encode 的 reshuff → reshuffle。 - 术语大小写统一:arg_min 的 infershape → InferShape;reduce_all 的 tenor → Tensor。 - 表述/用词修正:add_n 的"主元素相加"→"逐元素相加";add_lora 的"Lora"→"LoRa";cholesky 的"需为"→"须为";cosine_similarity 的"显示指定"→"显式指定";cumsum 的"累计求和"→"累积求和";lgamma 的"输入张量x1"→"输入张量x";mul_addn 表述精简;asinh_grad 的"通过图模式方式调用"→"通过图模式调用"。 ### 改动原因 文档中存在错别字、术语拼写与大小写不统一、数据类型说明错误等问题,影响可读性与准确性。 ### 改动方法 逐文件校对并修正上述 README.md 中的文本与类型说明,仅涉及文档,不改变任何代码逻辑。 ## 关联的Issue #3426 ## 测试 文档变更,无需代码测试。 ## 文档更新 更新 math 目录下以下 13 个 README.md: math/abs、math/add_lora、math/add_n、math/arg_min、math/asinh_grad、math/assign_sub、math/cholesky、math/cosine_similarity、math/cumsum、math/hans_encode、math/lgamma、math/mul_addn、math/reduce_all ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6158 | 1 month ago | |
fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6947 merge fix/add-v2-tensor-redirect-validation-20261031 into master fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 统一修复AddV2、TensorRedirect和MulNoNan的推导/参数校验,完善GEIR示例、测试参考及仓内小型ST。共27个变更文件、1个提交, experimental相对目标主线无改动。 - AddV2/TensorRedirect:修复合法rank0标量storage []/[1]等价表示被Tiling误拒绝的问题,保留非法shape/dtype校验,补InferShape rank8上限并透传首报诊断。TensorRedirect尾核仅计算实际分支长度,避免无用满块乘积溢出。 - 两份GEIR示例核对真实输出、修正节点名及Session所有权,完善失败诊断;对应Host/CPU Kernel UT保留。 - 完整引入[原PR !6971](https://gitcode.com/cann/ops-math/pull/6971)的MulNoNan提交6f1e0471275f6f1f7d08232dd823636b4a1a5279,8个文件内容与源提交逐字节一致:InferShape独立检查两个输入的rank上限,InferDataType检查四种合法dtype及同类型关系;保留广播、标量、动态shape/rank和空Tensor语义,新增负向UT。 - MulNoNan golden使用Torch完成物理dtype舍入,TensorFlow TestSpec增加FP64组合数学参考,覆盖TF CPU不支持的合法六维广播及CANN原有INT32输入域;示例支持--device-id=N,新增8条小shape仓内ST。 - 仓内ST合计4份CSV、24条,三个算子各8条。不同表头分开,相同表头在所属算子内合并;最大单Tensor约112KiB,未把GiB压力shape放入默认ST。外部测例仓库未改。 原AddV2/TensorRedirect的19个文件保持原内容,MulNoNan的8个文件完整导入,无冲突。AddV2看板中旧A2实验材料继续按来源分类,不混作A5修复;MulNoNan保留原A2/A3产品支持,不新增平台适配。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4378 - https://gitcode.com/cann/ops-math/issues/4387 ## 测试 先cherry-pick源提交,再squash为1提交;同一原始基点的完整binary diff及Git tree均不变。随后一次rebase到当次从官方主仓获取的master 58e411acd306ae5d391301bf2e21d25d1bf4fae5,27个文件内容均保持,相关算子/公共依赖无主线增量。最终受测提交为af1eeea72c5c773ed3fb136d9ea75d3228b9d90d。 | 验证 | 本轮结果 | |---|---| | 指定本地CI | /workspace/CI-skills/ci_local_check.sh完整通过;A5 ascend950,并发2;27文件pre-commit、隔离OAT、链接/SKIP契约及golden语法检查PASS | | 构建/UT | 三份GEIR示例syntax-only、三算子定向包及package/Host loader GE依赖检查PASS;Host UT 151/151、Graph UT 6/6、TensorRedirect CPU Kernel UT 2/2。API阶段0例,不计实际UT通过 | | 运行包来源 | 安装本轮CI生成的标准.run,177个payload文件SHA256全部一致,含17个预编译对象及三个算子注册信息;未使用旧包冒充本轮构建 | | 组合仓内ST | 三算子24/24 binary Kernel通过,全部BINARY_MATCH;MulNoNan另8/8 static Kernel及8/8 GEIR数值通过,共40次执行 | | 原修复证据 | AddV2/TensorRedirect前期128条NPU正向、两份C++示例实机完整输出/文件失败路径分别保留,不与本轮执行次数直接累加;MulNoNan原PR更广的历史验证在源PR记录,本轮不冒称重跑 | 实机Ascend950PR_9579/device0,使用当前任务独立CANN_Revise 9.3.0和干净的任务TTK 5a7337679b3a4a1cf8a1346392adc9a65cfd378f;每次TTK显式--pc=1,golden来自各算子代码仓。 本地缺GPU/XPU端点,命令显式--compare binary比较导入后的CPU golden;有限值按binary_equal核对,TTK对双方NaN位置一致的元素判相等,不宣称NaN payload逐位一致或默认GPU cross_check已通过。GEIR是数值验证,不当作独立运行时rank元数据dump或全部清理故障路径验证。本轮仅A5实机/CI,源PR已有其他产品证据不作为本轮新增测试。MulNoNan直接Kernel 0D在线编译问题、性能、完整L0/L1及全部资源故障均不在此次合并的通过结论中。已向同一受测SHA提交[compile触发线上CI](https://gitcode.com/cann/ops-math/merge_requests/6947#note_197811371);[线上流水线](https://gitcode.com/CANN/ops-math/actions/runs/42aadc4ec89646c2888de81d318470cb)已启动,结果待出,不由本地通过推断。 ## 文档更新 - AddV2/TensorRedirect继续保留所有原产品能力,按用户指引保留格式整改和删除冗余范围声明;没有重新添加当前源码/实测平台范围提示。 - MulNoNan README完整保留源PR内容:全局rank8及动态rank运行时上限表述、产品差异列表和必要设备选择参数;保留原A2/A3支持,不因内部TestSpec增加用户接口声明。 - 组合提交的来源、测试范围及限制写入本PR与任务独立验证记录。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:合并MulNoNan测试参考/负向UT及小型ST See merge request: cann/ops-math!6947 | 7 days ago | |
[Docs] 删除 Muls 数据类型表中的空注释 Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !6763 merge docs/issue-3906-muls-empty-note into master [Docs] 删除 Muls 数据类型表中的空注释 Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 描述 Muls 的 self 数据类型单元格末尾有无正文的 <br>注:,删除该空标记。现有类型列表、类型推导链接和产品限制说明保持完整,无法由空标记推断出的额外约束不予补写。 仓内同类写法:参照同一参数表 other、out 及原地接口 selfRef 的数据类型单元格:相同类型列表均无空注释。 ## 关联的Issue Fixes #3906 https://gitcode.com/cann/ops-math/issues/3906 ## 测试 - 对照最新主干 6d7d49d9e 的函数原型、相关参数检查或类型推导实现,核实资料问题。 - 使用 MarkdownIt 渲染修改后的页面,检查目标表格内容、参数名及错误码行跨度。 - git diff --check 通过。仅修改文档,未运行算子编译或设备数值测试。 ## 文档更新 - math/muls/docs/aclnnMuls&aclnnInplaceMuls.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!6763 | 12 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6606 merge fix_errorNum_1021 into master fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次 PR 整改以下 43 个算子中非法使用的内部错误码(E*9****),使其符合错误码使用规范: - cholesky / complex / cross / cummax / cummin / cumprod / get_shape / histogram_v2 / is_finite / is_inf - kl_div_v2 / lin_space / log_add_exp / non_finite_check / pdist / polar / pows / radix_top_k - reduce_log_sum / reduce_log_sum_exp / reduce_max / reduce_mean / reduce_mean_with_count / reduce_min - reduce_nansum / reduce_std_with_mean / rfft1_d / search_sorted / signbit / sin / sinc / sinkhorn / topk - affine_grid / amp_update_scale / angle_v2 / arg_max_v2 / arg_min / arg_min_with_value / atan2 / bessel_i1e / cdist_grad - conversion/tril 改动原因:上述算子 op_host / op_api / op_graph 源码中存在裸 OP_LOGE (EZ9999 兜底上报)、 OP_CHECK_NULL_WITH_CONTEXT / OP_CHECK_NOTNULL (EZ9999 上报)等不符合错误码使用规范的上报路径,需按失败原因分类整改为正式语义码或内部透传。 采取的方法: - op_host 参数/输入校验类(shape / dtype / format / attr 值域等)裸 OP_LOGE → 正式语义宏(EZ0004 / EZ0008–EZ0038) - op_host 内部 API 失败类(平台能力查询、tiling API 失败等)→ OP_LOGE_WITHOUT_REPORT 透传,去掉 EZ9999 上报、保留日志 - OP_CHECK_NULL_WITH_CONTEXT (EZ9999)→ 显式空指针检查 + 正式码宏 - op_api OP_CHECK_NOTNULL (EZ9999)→ 显式检查 + OP_LOGE_WITHOUT_REPORT(ACLNN_ERR_INNER_NULLPTR) + 返回公共错误码 - op_api OP_LOGE(ACLNN_ERR_INNER_* / RUNTIME_ERROR) (561xxx / 361xxx)→ OP_LOGE_WITHOUT_REPORT ;正式参数码 ACLNN_ERR_PARAM_* (161xxx)保留 - 删除 CREATE_EXECUTOR 之后不可达的空指针死检查( CHECK_RET(executor.get()!=nullptr, ACLNN_ERR_INNER_CREATE_EXECUTOR) ,40 处) - op_graph(histogram_v2 / reduce_mean 融合 pass)E9 上报 → 正式码或透传 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3977 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 43 算子 op_host / op_api / op_graph 全量编译通过,exit 0(910b + 950/arch35) - 本地增加ut测试130 用例全量通过(910b 83 + 950 47),日志级验证触发 78 次正式 EZ 错误码上报,覆盖 14 个正式错误码 - 原版 math_op_host_ut 300 用例全量通过,无回归 - 静态复扫:范围内 E*9**** 正式上报清零(残留均为 CHECK_RET 返回公共码 / 动态 return 等允许项) - 附:适配 CANN 9.3.0 atvoss 库 tiling key 编码变化,更新 reduce_max / reduce_mean_with_count 测试的 9 处 expectedTilingKey (官方 master 在 9.3.0 下同样失败,非本 PR 引入) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6606 | 14 days ago | |
docs: 修复math算子文档错误码表缺项并对齐数据类型约束与实现 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6765 merge fix_mathMD_1028 into master docs: 修复math算子文档错误码表缺项并对齐数据类型约束与实现 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 本次PR针对多个math算子文档与实现不一致或错误码表缺项的问题进行修复,共涉及6份算子文档: 1. aclnnMaxDim:错误码表161002补充"self、out、indices维度大于8时"子项,与参数表维度0-8说明对齐; 2. aclnnBitwiseXorTensor:删除out不支持UINT16/UINT32/UINT64/COMPLEX64/COMPLEX128的约束描述,对齐实际实现的放行行为; 3. aclnnFloor:删除非连续Tensor列UINT16/UINT32/UINT64不支持的无效约束(A2真机实测非连续输入均正常支持); 4. aclnnLeScalar/aclnnLeTensor:补充out、selfRef不支持UINT32/UINT64的平台约束(910/310p、A3/910b),并合并到既有平台约束块; 5. aclnnNeTensor:补充Atlas A2/A3系列self、other不支持UINT64的约束说明(A2真机验证放开校验会产生错误结果,当前拒绝行为是安全的)。 ## 关联的Issue - #3884:aclnnMaxDim错误码表缺少维度大于8子项 - #3881:aclnnBitwiseXorTensor文档声明out不支持UINT16/UINT32/UINT64/COMPLEX64/COMPLEX128与实现不符 - #3883:aclnnFloor文档多写非连续Tensor不支持UINT16/UINT32/UINT64约束 - #3853:aclnnNeTensor A2平台UINT64支持说明与实现不符 - #3889:aclnnLeTensor/aclnnLeScalar out支持UINT32/UINT64与实现不符 ## 测试 本次为纯文档修改,无代码变更。各文档改动均经实现代码(dtype支持列表、校验逻辑)静态核对,并对以下场景在A2真机验证: - aclnnFloor非连续UINT16/UINT32/UINT64输入6组用例全部成功且结果正确; - aclnnNeTensor UINT64放开校验后输出全假并伴随堆内存损坏,确认kernel未实现UINT64模板,以文档约束闭环; - aclnnBitwiseXorTensor COMPLEX64/COMPLEX128输出语义验证通过。 ## 文档更新 - math/arg_max_with_value/docs/aclnnMaxDim.md - math/bitwise_xor/docs/aclnnBitwiseXorTensor&aclnnInplaceBitwiseXorTensor.md - math/floor/docs/aclnnFloor&aclnnInplaceFloor.md - math/less_equal/docs/aclnnLeScalar&aclnnInplaceLeScalar.md - math/less_equal/docs/aclnnLeTensor&aclnnInplaceLeTensor.md - math/not_equal/docs/aclnnNeTensor&aclnnInplaceNeTensor.md ## 类型标签 - [x] 文档更新 See merge request: cann/ops-math!6765 | 12 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
[CANNBOT] Pdist新增Ascend950 pypto实现 Co-authored-by: SimonZzz<zhouquan79@huawei.com> # message auto-generated for no-merge-commit merge: !5438 merge pdist_pypto into master [CANNBOT] Pdist新增Ascend950 pypto实现 Created-by: SimonZzz Commit-by: SimonZzz Merged-by: cann-robot Description: ## 描述 pdist 算子新增 Ascend 950PR/950DT 系列(reg-base,DAV_3510/DAV_5102)PyPTO 内核实现,补齐 host 侧 tiling、GE 注册/推导到测试资产的全链路改动: - **PyPTO kernel(op_kernel/pdist.py)**:m-lane row-major 布局(零转置,消除 v1 pair-lane 转置布局下 vscatter 导致的 UB bank 串行化,fp16 [8192,512] 由 963ms 优化至约 20.6ms);M_BLK=128 分块 ping-pong 部分和累加(含 p=1/inf 分支的 NaN 计数);按 PBranch 编译期折叠的无分支内层 m 循环;提供 fp32/fp16 双 dtype 实例(fp16 以 pl.cast 展宽至 fp32 计算、出口 CAST_RINT 收窄) - **host tiling(op_host/arch35/pdist_tiling.cpp/.h)**:p 值映射 0-5 的 PBranch 分支并以 GET_TPL_TILING_KEY 编码 TilingKey;闭式 PdistFloorSum 计算 64 对任务块数 B,按核连续块域切分,MIX 发射方式计算 blockDim;tiling 数据含 N/M/B/p_val/inv_p 字段 - **GE 注册与推导(op_host/pdist_def.cpp、pdist_infershape.cpp)**:ascend950 AICore 配置及 DynamicShapeSupportFlag 等动态开关;输出 y=[N*(N-1)/2],dtype 与输入一致 - **测试资产**:examples/test_aclnn_pdist.cpp 重构为带 golden 容差比对的用例(fp32 覆盖 p=0/0.5/1/2/3/inf、大 M 多块场景及 fp16 用例);新增 GE IR RunGraph 用例 test_geir_pdist.cpp;tests/assets/golden.py 提供上三角行优先输出语义的参考实现与 TTK TestSpec(PdistTestSpec/AclnnPdistTestSpec/AclnnPdistForwardTestSpec)注册及 fp16/fp32 容差配置 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4169 ## 测试 - kernel 移植自 Stage-4 验证通过的 PyPTO-Pro v2 交付(verifier PASS 15/15、16/16 用例,附 Stage 5 性能证据) - eager 模式示例 fp32(p=0/0.5/1/2/3/inf、大 M 多块)与 fp16 用例均与 golden 容差比对通过 - 本地 pre-commit 全量通过(clang-format / ruff / codespell / OAT 合规),CI CodeCheck 门禁通过;PreSmoke 示例已去除 securec 依赖修复链接失败,随本提交重新验证 ## 文档更新 更新 math/pdist/README.md、docs/aclnnPdist.md、docs/aclnnPdistForward.md(实现方案、参数与产品支持说明) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5438 | 11 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
perf(population_count): 小shape性能优化:核扇出收敛+SWAR寄存器链 Co-authored-by: babeiee<125106023003@njust.edu.cn> # message auto-generated for no-merge-commit merge: !6383 merge perf/population-count-small-shape into master perf(population_count): 小shape性能优化:核扇出收敛+SWAR寄存器链 Created-by: babeiee Commit-by: babeiee Merged-by: cann-robot Description: ## 问题单 比率0.544 < 带宽折算(均值)=0.556,15 例小 shape(n=84~152K,int16/uint16)性能均值不过。 ## 根因(实测修正) 1. **主因:小 shape 核数扇出**。旧 tiling 以 32 元素最小块对齐( blockFactor = CeilAlign(CeilDiv(n, coreNum), ubBlockSize)),小 shape 被铺满核(n=3544 → 56 核 × 64 元素)。AIV 块调度成本随核数线性增长(实测 ~7-10ns/核),而 launch-bound 小 kernel 每核计算仅 1 个 VF tile。对照 abs(atvoss 调度器 512 元素对齐,n=3544 仅 7 核)floor 1.50us vs 修复前 2.01us。 2. **次因:SWAR 计算链 UB 驻留形态**(实测稳态差 ~0.1us,方差显著)。 ## 修复内容(3 文件 +100/-57) - **tiling**(population_count_tiling_arch35.cpp):blockFactor 对齐 512 元素(1KB/核,int16),小 shape 收敛至少数核;双 buffer 仅在 loopCount>=2(blockFactor > ubFactorSingle)时启用 - **kernel**(population_count.h):Compute 改为 __VEC_SCOPE__ 寄存器驻留 SWAR 链——DIST_NORM 128 元素/拍打包装载,DIST_PACK_B16 store 取每 16-bit lane 低字节直出 uint8(省去 Cast/0x00FF 掩码/VECCALC tmpBuf) - 入口补 KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_AIV_ONLY)(仓内标准写法) 数值正确性:step3 后 0x0F0F 掩码保留(nibble 残留会污染 bit4,popcount=16 输入出错);step4 后高字节残留由 PACK_B16 低字节选取自然丢弃。 ## 验证(Ascend950PR_9599 / CANN 9.3.0 / ttk v3.0.0 e2e,CI framework-api 同链路) - **15 失败例 CST 均值 0.519 → 0.697(阈值 0.556,余量 +25%),逐例 0.62~0.77 全过线** - 精度 **49/49 逐位一致**(15 失败例 + 26 边界例[标量/空张量/非对齐尾拍/1M/10M × int16+uint16] + 8 极值例[全0/全-1/±32767/65535]) - 大 shape 带宽不回归:10M 例 ~1871 GB/s ≥ 旧版 1779 GB/s - 大 shape 段比值原有 2.3~2.7 优势不变(未改动其执行路径参数) ## 复测注意 - 改 host tiling 后需清理 GE 图编译缓存(kernel_meta/),否则旧 tiling 被缓存冻结 - 自定义包 e2e 首跑含在线编译,判定用 per-call 稳态(min)或缓存预热后重跑 ## 关联的Issue - #3605(https://gitcode.com/cann/ops-math/issues/3605) See merge request: cann/ops-math!6383 | 22 days ago | |
fix(pow/sub): A2/A3补充out dtype白名单校验(#3964) Co-authored-by: doufloat<baijinxiang@huawei.com> # message auto-generated for no-merge-commit merge: !6800 merge fix/pow-out-dtype-whitelist into master fix(pow/sub): A2/A3补充out dtype白名单校验(#3964) Created-by: doufloat Commit-by: doufloat Merged-by: cann-robot Description: ## 描述 **问题** aclnnPowScalarTensor、aclnnPowTensorScalar、aclnnPowTensorTensor、aclnnSubs 和 aclnnSub 在 out 传入资料输出支持列表之外的 dtype(如 DT_INT4)时,A2/A3 会继续进入 Build/Cast 并返回内部错误码,而不是第一段接口约定的 161002。 **根因** 输出类型此前只经过可转换关系检查。部分非法 dtype 能被 CanCast 放行,随后在 Build/Cast 阶段失败,导致参数非法被降级为内部错误。 **方案** - 新增 out dtype 白名单校验,但仅在 NpuArch::DAV_2201(A2/A3)启用。 - aclnn_pow.cpp 和 aclnn_pow_tensor_tensor.cpp 覆盖 aclnnPowScalarTensor、aclnnPowTensorScalar、aclnnPowTensorTensor 三个 out-of-place 入口。 - aclnn_sub.cpp 在 CheckParamsScalar 和 CheckParams 中覆盖 aclnnSubs、aclnnSub;原地接口继续沿用原有输入别名校验。 - A5 走 DAV_3510 路径,不启用新增白名单,保持原有 CanCast 及后续 Build 行为不变。 - A2/A3 合法 out dtype 路径不变,仅将非法 dtype 的返回码修正为 ACLNN_ERR_PARAM_INVALID(161002)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3964 ## 测试 **A2:Ascend 910B3,CANN 9.2.0** - math_op_api_ut:158/158 PASS,包含新增 A2 非法 out 校验和 A5 不拦截回归用例。 - 当前补丁真机矩阵:PowScalarTensor/PowTensorScalar/PowTensorTensor/Subs/Sub 的 INT4/UINT1/HIFLOAT8/FLOAT8_E5M2/COMPLEX32 均返回 161002。 - 合法路径未被误拦截:三个 Pow 入口的 INT64 -> UINT16/UINT32/UINT64 均返回 0;FLOAT/FLOAT16/DOUBLE/BF16/COMPLEX64/COMPLEX128 输出在对应可转换输入下保持 0。 **A5:Ascend 950PR,CANN 9.2.0** - math_op_api_ut:158/158 PASS,包含 Ascend950_out_dtype_check_not_applied 回归用例。 - 当前补丁真机矩阵与基线一致: | out dtype | PowScalarTensor | PowTensorScalar / PowTensorTensor / Subs / Sub | | --- | --- | --- | | INT4 / UINT1 / COMPLEX32 | 561000 | 561103 | | HIFLOAT8 / FLOAT8_E5M2 | 0 | 0 | - 新增 A2/A3 out 白名单在 A5 未生效;合法 INT64 -> UINT16/UINT32/UINT64 仍返回 0。 **实现路径说明** A3 与 A2 均走 DAV_2201 路径,共用同一实现。本轮完成 A2 和 A5 真机验证。 ## 文档更新 不涉及。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他(请说明) See merge request: cann/ops-math!6800 | 10 days ago | |
feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Co-authored-by: esok11<yangsifa@huawei.com> # message auto-generated for no-merge-commit merge: !6869 merge f1029 into master feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Created-by: esok11 Commit-by: esok11 Merged-by: cann-robot Description: ## 描述 面向 ops-math RT1.0 → RT2.0 迁移,为本仓 11 个算子补齐 op_graph 侧 InferDataType 推导,并将 op_host InferShape 的边界语义与 RT1.0 对齐(未知秩、非常量 shape、标量等),避免 C1 日落 rt1.0 后图模式推导回归。 ### 改动原因 1. 部分算子只有 InferShape、缺少 InferDataType 注册,图模式下无法完成输出 dtype 推导。 2. 部分 op_host InferShape 与 RT1.0 语义不一致,例如:AsStrided 在 size 非/未知时误用常量值计算甚至越界;Assign 取 value(输入1)而非 ref(输入0);DynamicPartition 只有 InferShapeRange 无 InferShape;Pack/Unpack 将未知秩当已知维计算;ReciprocalGrad 误用 elewise 推导导致广播场景结果错误。 ### 改动方法 1) 新增 op_graph InferDataType(输出 dtype 透传输入 dtype) - 单输出、透传输入 0:Adds、Asin、Power、Assign、TensorMove、ViewCopy - 多输出、逐个透传:Pack、Unpack、DynamicPartition(输入 0 x)、AsStrided(输入 0 x)、StridedSliceGrad(输入 4 dy) - 均为 IMPL_OP(<Op>).InferDataType(...) 注册;op_graph 源码由 cmake/func.cmake 的 file(GLOB_RECURSE ... op_graph/*.cpp) 自动收集,无需改 CMakeLists。 2) op_host InferShape 对齐 - AsStrided:size 张量缺失、size 描述符含未知维/未知秩、GetValueToShape 取常量失败时,输出置未知秩并返回成功(对齐 rt1.0 SetOutputForRank)。 - Assign:输出 shape 改为取输入 0(ref),修复 value 为标量(numel=1)时输出 shape 错误。 - DynamicPartition:新增 InferShape4DynamicPartition(输入未知秩 → 各输出未知秩;输出秩 = x秩 - partitions秩 + 1,第 0 维为 -1,其余维取 x 对应维;partitions 秩大于 x 秩报错),并注册 InferShape + InferShapeRange + OutputShapeDependOnCompute({0})。 - Pack:未知秩输入按通配处理,取首个已知秩输入作为基准,全未知秩则输出未知秩;保留 N 与实例数一致性校验,失败日志改为同时打印基准索引。 - Unpack:输入未知秩时各输出保持未知秩,不再退化为 0 维。 - StridedSliceGrad:shape 输入形状值为 0(前向为 rank-0 标量)时输出 0 维标量,不再报错。 - ReciprocalGrad:InferShape4Elewise → InferShape4Broadcast。 - Adds/Asin/TensorMove/ViewCopy:仅 namespace 注释与格式修正,逻辑不变。 3) 测试 新增 39 个 host 侧 InferShape UT,覆盖未知秩/非常量/标量/广播/失败分支。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4383 ## 测试 - 新增 UT:as_strided 6 例、assign 2 例、concat 7 例、concat_d 4 例、pack 7 例、unpack 6 例、reciprocal_grad 5 例、strided_slice_grad 2 例(共 39 例,全部位于各算子 tests/ut/op_host)。 - 说明:本次流程未在本环境执行编译与 UT 运行,用例已随 PR 提交,需由 CI/本地环境验证。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6869 | 7 days ago | |
fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6606 merge fix_errorNum_1021 into master fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次 PR 整改以下 43 个算子中非法使用的内部错误码(E*9****),使其符合错误码使用规范: - cholesky / complex / cross / cummax / cummin / cumprod / get_shape / histogram_v2 / is_finite / is_inf - kl_div_v2 / lin_space / log_add_exp / non_finite_check / pdist / polar / pows / radix_top_k - reduce_log_sum / reduce_log_sum_exp / reduce_max / reduce_mean / reduce_mean_with_count / reduce_min - reduce_nansum / reduce_std_with_mean / rfft1_d / search_sorted / signbit / sin / sinc / sinkhorn / topk - affine_grid / amp_update_scale / angle_v2 / arg_max_v2 / arg_min / arg_min_with_value / atan2 / bessel_i1e / cdist_grad - conversion/tril 改动原因:上述算子 op_host / op_api / op_graph 源码中存在裸 OP_LOGE (EZ9999 兜底上报)、 OP_CHECK_NULL_WITH_CONTEXT / OP_CHECK_NOTNULL (EZ9999 上报)等不符合错误码使用规范的上报路径,需按失败原因分类整改为正式语义码或内部透传。 采取的方法: - op_host 参数/输入校验类(shape / dtype / format / attr 值域等)裸 OP_LOGE → 正式语义宏(EZ0004 / EZ0008–EZ0038) - op_host 内部 API 失败类(平台能力查询、tiling API 失败等)→ OP_LOGE_WITHOUT_REPORT 透传,去掉 EZ9999 上报、保留日志 - OP_CHECK_NULL_WITH_CONTEXT (EZ9999)→ 显式空指针检查 + 正式码宏 - op_api OP_CHECK_NOTNULL (EZ9999)→ 显式检查 + OP_LOGE_WITHOUT_REPORT(ACLNN_ERR_INNER_NULLPTR) + 返回公共错误码 - op_api OP_LOGE(ACLNN_ERR_INNER_* / RUNTIME_ERROR) (561xxx / 361xxx)→ OP_LOGE_WITHOUT_REPORT ;正式参数码 ACLNN_ERR_PARAM_* (161xxx)保留 - 删除 CREATE_EXECUTOR 之后不可达的空指针死检查( CHECK_RET(executor.get()!=nullptr, ACLNN_ERR_INNER_CREATE_EXECUTOR) ,40 处) - op_graph(histogram_v2 / reduce_mean 融合 pass)E9 上报 → 正式码或透传 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3977 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 43 算子 op_host / op_api / op_graph 全量编译通过,exit 0(910b + 950/arch35) - 本地增加ut测试130 用例全量通过(910b 83 + 950 47),日志级验证触发 78 次正式 EZ 错误码上报,覆盖 14 个正式错误码 - 原版 math_op_host_ut 300 用例全量通过,无回归 - 静态复扫:范围内 E*9**** 正式上报清零(残留均为 CHECK_RET 返回公共码 / 动态 return 等允许项) - 附:适配 CANN 9.3.0 atvoss 库 tiling key 编码变化,更新 reduce_max / reduce_mean_with_count 测试的 9 处 expectedTilingKey (官方 master 在 9.3.0 下同样失败,非本 PR 引入) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6606 | 14 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix 950 ut编译失败 Co-authored-by: chenqi317<CF2usBBbA386a-MRyWP5pYfd> # message auto-generated for no-merge-commit merge: !6699 merge master into master fix 950 ut编译失败 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> fix 950 ut 编译失败 [2026-10-26 17:42:42] make[3]: *** [tests/ut/op_host/CMakeFiles/math_op_host_ut.dir/build.make:110: tests/ut/op_host/math_op_host_ut] Error 1 [2026-10-26 17:42:42] make[2]: *** [CMakeFiles/Makefile2:14718: tests/ut/op_host/CMakeFiles/math_op_host_ut.dir/all] Error 2 [2026-10-26 17:42:42] make[1]: *** [CMakeFiles/Makefile2:14725: tests/ut/op_host/CMakeFiles/math_op_host_ut.dir/rule] Error 2 [2026-10-26 17:42:42] make: *** [Makefile:1152: math_op_host_ut] Error 2 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6699 | 14 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 | |
产品名变更 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 | |
产品名变更 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 | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6606 merge fix_errorNum_1021 into master fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次 PR 整改以下 43 个算子中非法使用的内部错误码(E*9****),使其符合错误码使用规范: - cholesky / complex / cross / cummax / cummin / cumprod / get_shape / histogram_v2 / is_finite / is_inf - kl_div_v2 / lin_space / log_add_exp / non_finite_check / pdist / polar / pows / radix_top_k - reduce_log_sum / reduce_log_sum_exp / reduce_max / reduce_mean / reduce_mean_with_count / reduce_min - reduce_nansum / reduce_std_with_mean / rfft1_d / search_sorted / signbit / sin / sinc / sinkhorn / topk - affine_grid / amp_update_scale / angle_v2 / arg_max_v2 / arg_min / arg_min_with_value / atan2 / bessel_i1e / cdist_grad - conversion/tril 改动原因:上述算子 op_host / op_api / op_graph 源码中存在裸 OP_LOGE (EZ9999 兜底上报)、 OP_CHECK_NULL_WITH_CONTEXT / OP_CHECK_NOTNULL (EZ9999 上报)等不符合错误码使用规范的上报路径,需按失败原因分类整改为正式语义码或内部透传。 采取的方法: - op_host 参数/输入校验类(shape / dtype / format / attr 值域等)裸 OP_LOGE → 正式语义宏(EZ0004 / EZ0008–EZ0038) - op_host 内部 API 失败类(平台能力查询、tiling API 失败等)→ OP_LOGE_WITHOUT_REPORT 透传,去掉 EZ9999 上报、保留日志 - OP_CHECK_NULL_WITH_CONTEXT (EZ9999)→ 显式空指针检查 + 正式码宏 - op_api OP_CHECK_NOTNULL (EZ9999)→ 显式检查 + OP_LOGE_WITHOUT_REPORT(ACLNN_ERR_INNER_NULLPTR) + 返回公共错误码 - op_api OP_LOGE(ACLNN_ERR_INNER_* / RUNTIME_ERROR) (561xxx / 361xxx)→ OP_LOGE_WITHOUT_REPORT ;正式参数码 ACLNN_ERR_PARAM_* (161xxx)保留 - 删除 CREATE_EXECUTOR 之后不可达的空指针死检查( CHECK_RET(executor.get()!=nullptr, ACLNN_ERR_INNER_CREATE_EXECUTOR) ,40 处) - op_graph(histogram_v2 / reduce_mean 融合 pass)E9 上报 → 正式码或透传 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3977 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 43 算子 op_host / op_api / op_graph 全量编译通过,exit 0(910b + 950/arch35) - 本地增加ut测试130 用例全量通过(910b 83 + 950 47),日志级验证触发 78 次正式 EZ 错误码上报,覆盖 14 个正式错误码 - 原版 math_op_host_ut 300 用例全量通过,无回归 - 静态复扫:范围内 E*9**** 正式上报清零(残留均为 CHECK_RET 返回公共码 / 动态 return 等允许项) - 附:适配 CANN 9.3.0 atvoss 库 tiling key 编码变化,更新 reduce_max / reduce_mean_with_count 测试的 9 处 expectedTilingKey (官方 master 在 9.3.0 下同样失败,非本 PR 引入) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6606 | 14 days ago | |
fix(ragged_bin_count): fix weighted accuracy and validate GE splits Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !7037 merge fix/ragged-bin-count-august-regression into master fix(ragged_bin_count): fix weighted accuracy and validate GE splits Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 RaggedBinCount 的长加权输入在默认模式下使用 FP32 原子累加,舍入误差会超过混合容差标准。在官方 master c47568d3b5d22b1570bfbaad40dc63681ff5ca30 上,8 月测试记录中的 11 条失败用例使用原冻结输入全部复现。 - 非二值且带权重、values 元素数大于 256,且 direct/partials/integer-histogram 至少一条有界实现可用时,复用现有高精度累加路径;超出覆盖范围的默认模式保留原 ROW/VALUE 映射,避免逐 bin 重扫行。 - 在 GE 早期 verifier 中拒绝已知长度为 0 或 1 的 splits,避免零行输出在图通路绕过下游校验;原 L2_exc_constraint_030 已用实际 GEIR 对照确认修复。 - 将整数直方图 workspace 上限扩展到 1 GiB,使本批宽输出可使用现有整数累加实现;原 L1_259 所需用户直方图为 739,458,048 字节,上限仍有界。 - 更新路由及 workspace UT;在现有 kernel ST CSV 中补充两条约 26 万元素的回归,覆盖两种索引 dtype。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4422 ## 测试 - Ascend950PR_9579;任务内独立 Master/Revise CANN,定向构建并核对部署内容与实际 binary 来源。 - TTK 5bc080fe42c25b2a11654e514de10ac08771cb02,全部执行显式 --pc=1;沿用原仓内 golden 和 mixed 精度标准,输入 SHA256 与原失败记录一致。 - 原失败 11 条:主线 mixed 11/11 FAIL,修复后 mixed 11/11 PASS;真实 A100 三方对照 11/11 PASS。 - 同输入性能:GPU 采用仓内 PyTorch eager 组合标杆,按交付口径 GPU_us / NPU_us * 1555 / 1400 折算,11 条最低值 0.786211,全部达到本次要求的 0.1。额外 3 条稀疏大输出真实 GPU 三方与性能边界均通过,最低折合 0.854664。 - Ascend 950 Host UT 92/92 PASS;新增有界路由 20/20 编译分支命中,覆盖恰好 1 GiB、单行与多行超界回退,显式确定性语义保持。Graph UT 3/3 PASS,通过真实 OperatorFactory/VerifyAllAttr 调用;旧注册对象 red 对照按预期失败,修复后通过。 - 仓内 kernel ST 20/20 PASS,包括新增两条回归;主线最小 ROW 用例先失败、修复后通过。 - 仓内 GEIR 静态、动态 ST 13/13 PASS,两条模式分别检查通过;原 4 条 nan 形状在 CSV 解析阶段失败,4 条错误的预期输出描述被 GE 正常推导;splits=0/1 在修复后均从实际 verifier 拒绝,不将原 ACLNN 错误码预期等同于 GEIR 验证通过。指定统一入口本地 CI 已通过,受测 SHA 58054666b6d248a8246dac86ac0b5536a761232d,官方 master 快照 c47568d3b5d22b1570bfbaad40dc63681ff5ca30;950 Host/Graph 为 92/3,910b 为 51/3,实际 UT 共 149 条(OpAPI/Kernel 的 0 用例不计入)。pre-commit、完整文件列表隔离 OAT、双 SOC 定向 package/UT 及实际依赖门禁均通过。 - 最终受测 SHA 已同步 PR;[compile 评论197755522](https://gitcode.com/cann/ops-math/merge_requests/7037#note_197755522) 已回查,对应[线上 run6502](https://gitcode.com/cann/ops-math/actions/runs/8946107c692649b993cd42f145e18490) 已全部通过,54 个任务节点 COMPLETED,PR HEAD 与本地 CI 受测 SHA 一致。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7037 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: 迁移gelocal控制流与基础算子交付件(含While/If/Case/For/PartitionedCall、TF控制流插件、reshape),实现RT2.0交付 Co-authored-by: Dazhou_Cao<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !6621 merge migrate-gelocal-delivery into master feat: 迁移gelocal控制流与基础算子交付件(含While/If/Case/For/PartitionedCall、TF控制流插件、reshape),实现RT2.0交付 Created-by: Dazhou_Cao Commit-by: Dazhou_Cao Merged-by: cann-robot Description: ## 描述 汇总迁移 gelocal(RT2.0)算子交付件: - **基础/GE 控制流算子**:size、rank、LoopCond、NextIteration、RefIdentity、SwitchByIndex、aipp_data、End、squeezev2、unsqueezev2,以及 enter/exit/merge/switch/switch_n/ref_* 等 - **子图控制流算子**:If、Case、For、PartitionedCall、While(原型注册 + RT2.0 推导注册 + UT + README,If/Case/For/PartitionedCall 含 GeIR 示例;均归入 ge 分类) - **TF 控制流插件**:If/_If/StatelessIf、While/_While/StatelessWhile、Case/StatelessCase、PartitionedCall/StatefulPartitionedCall 变体合并映射 - **reshape**:infershape 对齐 RT1.0 语义、allowzero/shape 属性注册、信息库 - **文档**:README 产品支持表统一(全部√)、gather_shapes 归入 conversion、op_list 同步登记 ## 测试 - bash build.sh --ophost --opgraph -j8 构建通过(含各算子 REG_OP 注册校验) - 宿主侧全量 UT:2594/2594 PASSED(384 test suites) ## 说明 - 内容汇总自此前迁移 PR(6474 / 6522 / 6208)的交付件,本 PR 为其合并后的统一交付 See merge request: cann/ops-math!6621 | 14 days ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !5815 merge fix/proto-comment-grammar into master fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 对 39 个算子的 op_graph/*_proto.h 注释做拼写与语法修复,仅注释与格式变更,不涉及任何代码逻辑: - **拼写错误**:select_v2 condittion→condition(2处)、axpy_v2 opratioan→operation、clip_by_value 英文 dtype 列表中的全角逗号改半角 - **系统性语法(历史模板复制扩散)**:Support broadcasting→Supports broadcasting(27个文件)、A ND→An ND(33个文件97处) - **单文件语法修复 71 处(含 signbit returns→Returns、axpy should→Should 两处句首大写补漏)**:ger has→have、addcmul/addcdiv multiply→multiplies、muls An required→A required、equal (x=y)→(x1==x2)、Elementwise→Element-wise、bias_add/lerp/gcd 语序与冠词修复、aicore→AiCore、mod/floor_mod 矛盾表述统一、句首大小写与标点空格等 - 附带 pre-commit 钩子强制规范化(clang-format 重排、尾随空白、文件末尾换行),并保留各文件原有行尾风格(CRLF/LF) 涉及算子:add/sub/mul/muls/div/real_div/floor_div/div_no_nan/pow/minimum/maximum/signbit/less/less_equal/greater/greater_equal/not_equal/equal/bias_add/squared_difference/lerp/logical_and/logical_or/bitwise_or/bitwise_and/bitwise_xor/tanh_grad/axpy/axpy_v2/addcmul/addcdiv/select/select_v2/mod/floor_mod/ger/gcd/clip_by_value/clip_by_value_v2 ## 关联的Issue - #3234 - https://gitcode.com/cann/ops-math/issues/3234 ## 测试 - 纯注释变更,无功能影响 - pre-commit 钩子全部通过(clang-format / trailing-whitespace / end-of-file-fixer / codespell / OAT 合规检查) - 严格限定在上述 39 个算子文件,全仓其余算子未改动(其余算子同类问题可后续另行清理) ## 文档更新 不涉及仓内 docs/ 目录;本 PR 即为 proto.h 注释(算子原型文档源)的修正 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5815 | 16 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
reciprocal_grad新增 ascend960dt/ascend960pr 平台支持 Co-authored-by: liushaxiangdong<jinpeng11@huawei.com> # message auto-generated for no-merge-commit merge: !6536 merge master into master reciprocal_grad新增 ascend960dt/ascend960pr 平台支持 Created-by: liushaxiangdong Commit-by: liushaxiangdong Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> reciprocal_grad新增 ascend960dt/ascend960pr 平台支持 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 验证冒烟用例,算子用例 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6536 | 20 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat(5162a): 5162 短名/series 更名、reduce 算子注册与 IsSimtSupported 接口 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !6969 merge br_5162_series_rename into master feat(5162a): 5162 短名/series 更名、reduce 算子注册与 IsSimtSupported 接口 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 **1. 区分 5162 芯片 soc 版本与短名/series 命名**(对齐 MC62/Ascend950 惯例): - soc 版本:保留 Ascend5162A/ascend5162a;短名/series:ascend5162a 更名为 ascend5162 **2. reduce_sum/max/min/mean 算子注册适配 ascend5162**(移植 PR #6504,适配名统一改为 ascend5162): - 4 个 def.cpp 追加 AddConfig("ascend5162", aicoreConfig),复用 950 全量配置(含 B64 类型) - 4 个 CMakeLists 的 SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR 追加 ascend5162/arch35 **3. 新增 IsSimtSupported 平台 SIMT 能力查询函数**(common/inc/op_host/tiling_util.h,纯头文件): - 架构白名单 {DAV_3510, DAV_5102, DAV_9201, DAV_9202},DAV_5162 等无 SIMT 硬件的架构返回 false - DAV_ 常量经 opbase op_const_def.h 解析(旧版 CANN 兼容),TilingParseContext/TilingContext 双重载 - 参考 cann/opbase PR #1065 评审意见,与 ops-nn/ops-cv 仓实现保持一致 ## 测试 - pre-commit 全量 hook 通过 - IsSimtSupported g++ 语法校验与双重载实例化 0 error ## 文档更新 无 See merge request: cann/ops-math!6969 | 7 days ago | |
feat(5162a): 5162 短名/series 更名、reduce 算子注册与 IsSimtSupported 接口 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !6969 merge br_5162_series_rename into master feat(5162a): 5162 短名/series 更名、reduce 算子注册与 IsSimtSupported 接口 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 **1. 区分 5162 芯片 soc 版本与短名/series 命名**(对齐 MC62/Ascend950 惯例): - soc 版本:保留 Ascend5162A/ascend5162a;短名/series:ascend5162a 更名为 ascend5162 **2. reduce_sum/max/min/mean 算子注册适配 ascend5162**(移植 PR #6504,适配名统一改为 ascend5162): - 4 个 def.cpp 追加 AddConfig("ascend5162", aicoreConfig),复用 950 全量配置(含 B64 类型) - 4 个 CMakeLists 的 SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR 追加 ascend5162/arch35 **3. 新增 IsSimtSupported 平台 SIMT 能力查询函数**(common/inc/op_host/tiling_util.h,纯头文件): - 架构白名单 {DAV_3510, DAV_5102, DAV_9201, DAV_9202},DAV_5162 等无 SIMT 硬件的架构返回 false - DAV_ 常量经 opbase op_const_def.h 解析(旧版 CANN 兼容),TilingParseContext/TilingContext 双重载 - 参考 cann/opbase PR #1065 评审意见,与 ops-nn/ops-cv 仓实现保持一致 ## 测试 - pre-commit 全量 hook 通过 - IsSimtSupported g++ 语法校验与双重载实例化 0 error ## 文档更新 无 See merge request: cann/ops-math!6969 | 7 days ago | |
fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6606 merge fix_errorNum_1021 into master fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次 PR 整改以下 43 个算子中非法使用的内部错误码(E*9****),使其符合错误码使用规范: - cholesky / complex / cross / cummax / cummin / cumprod / get_shape / histogram_v2 / is_finite / is_inf - kl_div_v2 / lin_space / log_add_exp / non_finite_check / pdist / polar / pows / radix_top_k - reduce_log_sum / reduce_log_sum_exp / reduce_max / reduce_mean / reduce_mean_with_count / reduce_min - reduce_nansum / reduce_std_with_mean / rfft1_d / search_sorted / signbit / sin / sinc / sinkhorn / topk - affine_grid / amp_update_scale / angle_v2 / arg_max_v2 / arg_min / arg_min_with_value / atan2 / bessel_i1e / cdist_grad - conversion/tril 改动原因:上述算子 op_host / op_api / op_graph 源码中存在裸 OP_LOGE (EZ9999 兜底上报)、 OP_CHECK_NULL_WITH_CONTEXT / OP_CHECK_NOTNULL (EZ9999 上报)等不符合错误码使用规范的上报路径,需按失败原因分类整改为正式语义码或内部透传。 采取的方法: - op_host 参数/输入校验类(shape / dtype / format / attr 值域等)裸 OP_LOGE → 正式语义宏(EZ0004 / EZ0008–EZ0038) - op_host 内部 API 失败类(平台能力查询、tiling API 失败等)→ OP_LOGE_WITHOUT_REPORT 透传,去掉 EZ9999 上报、保留日志 - OP_CHECK_NULL_WITH_CONTEXT (EZ9999)→ 显式空指针检查 + 正式码宏 - op_api OP_CHECK_NOTNULL (EZ9999)→ 显式检查 + OP_LOGE_WITHOUT_REPORT(ACLNN_ERR_INNER_NULLPTR) + 返回公共错误码 - op_api OP_LOGE(ACLNN_ERR_INNER_* / RUNTIME_ERROR) (561xxx / 361xxx)→ OP_LOGE_WITHOUT_REPORT ;正式参数码 ACLNN_ERR_PARAM_* (161xxx)保留 - 删除 CREATE_EXECUTOR 之后不可达的空指针死检查( CHECK_RET(executor.get()!=nullptr, ACLNN_ERR_INNER_CREATE_EXECUTOR) ,40 处) - op_graph(histogram_v2 / reduce_mean 融合 pass)E9 上报 → 正式码或透传 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3977 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 43 算子 op_host / op_api / op_graph 全量编译通过,exit 0(910b + 950/arch35) - 本地增加ut测试130 用例全量通过(910b 83 + 950 47),日志级验证触发 78 次正式 EZ 错误码上报,覆盖 14 个正式错误码 - 原版 math_op_host_ut 300 用例全量通过,无回归 - 静态复扫:范围内 E*9**** 正式上报清零(残留均为 CHECK_RET 返回公共码 / 动态 return 等允许项) - 附:适配 CANN 9.3.0 atvoss 库 tiling key 编码变化,更新 reduce_max / reduce_mean_with_count 测试的 9 处 expectedTilingKey (官方 master 在 9.3.0 下同样失败,非本 PR 引入) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6606 | 14 days ago | |
feat(5162a): 5162 短名/series 更名、reduce 算子注册与 IsSimtSupported 接口 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !6969 merge br_5162_series_rename into master feat(5162a): 5162 短名/series 更名、reduce 算子注册与 IsSimtSupported 接口 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 **1. 区分 5162 芯片 soc 版本与短名/series 命名**(对齐 MC62/Ascend950 惯例): - soc 版本:保留 Ascend5162A/ascend5162a;短名/series:ascend5162a 更名为 ascend5162 **2. reduce_sum/max/min/mean 算子注册适配 ascend5162**(移植 PR #6504,适配名统一改为 ascend5162): - 4 个 def.cpp 追加 AddConfig("ascend5162", aicoreConfig),复用 950 全量配置(含 B64 类型) - 4 个 CMakeLists 的 SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR 追加 ascend5162/arch35 **3. 新增 IsSimtSupported 平台 SIMT 能力查询函数**(common/inc/op_host/tiling_util.h,纯头文件): - 架构白名单 {DAV_3510, DAV_5102, DAV_9201, DAV_9202},DAV_5162 等无 SIMT 硬件的架构返回 false - DAV_ 常量经 opbase op_const_def.h 解析(旧版 CANN 兼容),TilingParseContext/TilingContext 双重载 - 参考 cann/opbase PR #1065 评审意见,与 ops-nn/ops-cv 仓实现保持一致 ## 测试 - pre-commit 全量 hook 通过 - IsSimtSupported g++ 语法校验与双重载实例化 0 error ## 文档更新 无 See merge request: cann/ops-math!6969 | 7 days ago | |
fix(reduce_nansum): 0维标量输入按NaN->0语义处理,与向量路径一致(#3983) Co-authored-by: bjx<bjx@localhost> # message auto-generated for no-merge-commit merge: !6771 merge fix/reduce-nansum-scalar-nan into master fix(reduce_nansum): 0维标量输入按NaN->0语义处理,与向量路径一致(#3983) Created-by: doufloat Commit-by: bjx Merged-by: cann-robot Description: ## 描述 **问题** aclnnReduceNansum 对接口文档承诺"将 tensor 中 NaN 处理为 0 后求和"且 self 支持 0-8 维,但 rank-0 标量输入走了 L0 提前返回分支,NaN 被原样穿透: - 输入 FLOAT32 标量 NaN(shape 为 {})、dim=[0] 时,输出仍为 NaN; - 对照单元素向量 [1](rank=1)相同 NaN 输入,内核 CopyIn 的 Compare+Select 预处理生效,输出为 0。 同一算子标量分支与向量分支统计语义不一致,违反资料的无条件 NaN→0 承诺。 **根因** math/reduce_nansum/op_api/reduce_nansum.cpp 的 ReduceNansum 对 GetViewShape().GetDimNum() == 0 直接 return self,跳过了内核路径中内嵌的 NaN→0 预处理(reduce_nansum_apt.cpp 注释自述的 Compare(x,x,EQ)+Select 流程)。 **方案** 标量分支保留"不调用算子"的原有结构,浮点类型(FLOAT/FLOAT16/BF16,即 L0 实际承载的类型)先经 l0op::NanToNum(self, nan=0, posinf=+inf, neginf=-inf) 将 NaN 替换为 0(±inf 保持语义不变)再返回;整型标量无 NaN 概念,返回原值不变。顺带清除不应入库的 [DIRECT DEBUG] printf 调试残留。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3983 ## 测试 - 环境:Ascend 910B2,CANN 9.2.0。 - 端到端真机验证(符号覆盖法):将 PR 的 reduce_nansum.cpp 与基线版分别单独编译为共享库,以 LD_PRELOAD 仅覆盖 l0op::ReduceNansum 符号(规避与内置库的全量重复注册)后实跑 issue 复现程序: - 基线覆盖:FLOAT32 标量 NaN → 输出 NaN(缺陷复现),[1] 向量 NaN → 0; - 修复覆盖:**FLOAT32 标量 NaN → 输出 0**,[1] 向量 NaN → 0(原行为保持),标量 5.0 → 5.0(非 NaN 值不受影响)。 - 单测:math_op_api_ut(--ops=reduce_nansum -u --opapi --soc=ascend910b)**23/23 通过**,含判别用例 ascend910B2_case_test_scalar_nan_path:浮点标量(FLOAT/FLOAT16/BF16)断言 L0 不再原样返回输入 tensor,整型标量断言仍返回原值。回归有效性双向验证:将修复代码回退到基线后,该用例如预期失败。 - 编译验证:分支当前状态 bash build.sh --ops=reduce_nansum --soc=ascend910b -j16 全量构建通过(Build binary success)。 - pre-commit:全部通过(trailing-whitespace、end-of-file、clang-format、codespell、OAT 合规检查)。 ## 文档更新 不涉及。资料已承诺 NaN→0 与零维支持,本次使实现与资料一致。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他(请说明) See merge request: cann/ops-math!6771 | 12 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: ReduceStdV2Update 和 ReduceStdWithMean 适配 ascend960 Co-authored-by: wkyan<yanwenkai@huawei.com> # message auto-generated for no-merge-commit merge: !6555 merge 1020_reduce into master feat: ReduceStdV2Update 和 ReduceStdWithMean 适配 ascend960 Created-by: wkyan Commit-by: wkyan Merged-by: cann-robot Description: ## 描述 为 ReduceStdV2Update 和 ReduceStdWithMean 增加 ascend960dt 平台支持,并补充对应的 RegBase 路径与系统 workspace 配置。 ### 改动原因 两个算子原有构建配置和 AICore 注册仅包含 ascend950、ascend350,无法按当前算子实现配置在 ascend960dt 平台使用。 ### 改动方法 1. math/reduce_std_v2_update/CMakeLists.txt:将 ascend960dt 加入 SUPPORT_COMPUTE_UNIT,并复用 arch35 tiling 目录。 2. math/reduce_std_v2_update/op_host/reduce_std_v2_update_def.cpp:为 ReduceStdV2Update 增加 ascend960dt AICore 配置。 3. math/reduce_std_v2_update/op_kernel/arch35/reduce_std_v2_update.h:将 SetLoopModePara / ResetLoopModePara 的可用架构扩展为 __NPU_ARCH__ == 3510 || __NPU_ARCH__ == 9201,并同步更新不支持平台的编译错误信息。 4. math/reduce_std_with_mean/CMakeLists.txt:将 ascend960dt 加入 SUPPORT_COMPUTE_UNIT,并复用 arch35 tiling 目录。 5. math/reduce_std_with_mean/op_host/reduce_std_with_mean_def.cpp:为 ReduceStdWithMean 增加 ascend960dt AICore 配置。 6. math/reduce_std_with_mean/op_api/reduce_std_with_mean.cpp:引入 op_api/aclnn_check.h,使用 IsRegBase() 判断 AICore 路径,并更新 950/960DT 平台说明。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4014 ## 测试 本次 PR diff 未包含测试文件或可核验的测试结果;变更涉及 ascend960dt 编译平台注册、LoopMode 架构条件及系统 workspace 配置,需在对应平台完成编译、精度和算子泛化验证。 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6555 | 12 days ago | |
fix(aclnn_batch_norm_stats): 使用 AddInplace 减少 workspace 占用 Co-authored-by: andong_hw<andong2@huawei.com> # message auto-generated for no-merge-commit merge: !6982 merge fix-aclnn-bn-stats-workspace into master fix(aclnn_batch_norm_stats): 使用 AddInplace 减少 workspace 占用 Created-by: andong_hw Commit-by: andong_hw Merged-by: cann-robot Description: ## 描述 将 aclnnBatchNormStatsImplUnify 中的 l0op::Add 改为 l0op::AddInplace(eps, var),原地写回 ReduceVar 的 var 输出,去掉一块 [C] fp32 的临时 buffer。 以输入 [1, 51200000, 1]、fp16 为例: - workspaceSize:614401536 B → 426378752 B - mean / invstd 与 golden 比对通过 同时补充 aclnnBatchNormStats 的 TTK TestSpec golden(tests/assets/golden.py),便于用 TTK 验证该接口。 ## 关联的Issue Closes #4394 ## 测试 - bash build.sh --pkg --ops=reduce_std_with_mean --soc=ascend950 -j32 编译通过 - TTK ACLNN 用例(fp16 [1,51200000,1]):GOLD: PASS,PASS,PassRate 100% - pre-commit 全部通过 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6982 | 7 days ago | |
feat(5162a): 5162 短名/series 更名、reduce 算子注册与 IsSimtSupported 接口 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !6969 merge br_5162_series_rename into master feat(5162a): 5162 短名/series 更名、reduce 算子注册与 IsSimtSupported 接口 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 **1. 区分 5162 芯片 soc 版本与短名/series 命名**(对齐 MC62/Ascend950 惯例): - soc 版本:保留 Ascend5162A/ascend5162a;短名/series:ascend5162a 更名为 ascend5162 **2. reduce_sum/max/min/mean 算子注册适配 ascend5162**(移植 PR #6504,适配名统一改为 ascend5162): - 4 个 def.cpp 追加 AddConfig("ascend5162", aicoreConfig),复用 950 全量配置(含 B64 类型) - 4 个 CMakeLists 的 SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR 追加 ascend5162/arch35 **3. 新增 IsSimtSupported 平台 SIMT 能力查询函数**(common/inc/op_host/tiling_util.h,纯头文件): - 架构白名单 {DAV_3510, DAV_5102, DAV_9201, DAV_9202},DAV_5162 等无 SIMT 硬件的架构返回 false - DAV_ 常量经 opbase op_const_def.h 解析(旧版 CANN 兼容),TilingParseContext/TilingContext 双重载 - 参考 cann/opbase PR #1065 评审意见,与 ops-nn/ops-cv 仓实现保持一致 ## 测试 - pre-commit 全量 hook 通过 - IsSimtSupported g++ 语法校验与双重载实例化 0 error ## 文档更新 无 See merge request: cann/ops-math!6969 | 7 days ago | |
fix(reduce_var): unbiased为TRUE 且归约元素数为 1 时返回 NaN Co-authored-by: zhouyuanhang30083383<zhouyuanhang4@h-partners.com> # message auto-generated for no-merge-commit merge: !7007 merge fix/aclnn-var-unbiased-n1 into master fix(reduce_var): unbiased为TRUE 且归约元素数为 1 时返回 NaN Created-by: m0_55003149 Commit-by: zhouyuanhang30083383 Merged-by: cann-robot Description: ## 描述 unbiased=true 等价于 correction=1;N=1 时样本方差为 0/0=NaN。当前 aclnnVar 未提前处理该退化边界,继续进入 ReduceStdV2Update,底层 tiling 拒绝 N<=correction 后在第一段返回 561103。 修改:aclnnVar 在 unbiased=true 且归约轴元素数为 1 时,提前填充 NaN,不再进入 ReduceMean → ReduceStdV2Update。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4178 ## 测试 - math_op_api_ut --gtest_filter='l2_var_test.*':44/44 通过。 - 设备探针修复后: - self=[1], unbiased=true → GWS=0,out=nan ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7007 | 7 days ago | |
fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6606 merge fix_errorNum_1021 into master fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次 PR 整改以下 43 个算子中非法使用的内部错误码(E*9****),使其符合错误码使用规范: - cholesky / complex / cross / cummax / cummin / cumprod / get_shape / histogram_v2 / is_finite / is_inf - kl_div_v2 / lin_space / log_add_exp / non_finite_check / pdist / polar / pows / radix_top_k - reduce_log_sum / reduce_log_sum_exp / reduce_max / reduce_mean / reduce_mean_with_count / reduce_min - reduce_nansum / reduce_std_with_mean / rfft1_d / search_sorted / signbit / sin / sinc / sinkhorn / topk - affine_grid / amp_update_scale / angle_v2 / arg_max_v2 / arg_min / arg_min_with_value / atan2 / bessel_i1e / cdist_grad - conversion/tril 改动原因:上述算子 op_host / op_api / op_graph 源码中存在裸 OP_LOGE (EZ9999 兜底上报)、 OP_CHECK_NULL_WITH_CONTEXT / OP_CHECK_NOTNULL (EZ9999 上报)等不符合错误码使用规范的上报路径,需按失败原因分类整改为正式语义码或内部透传。 采取的方法: - op_host 参数/输入校验类(shape / dtype / format / attr 值域等)裸 OP_LOGE → 正式语义宏(EZ0004 / EZ0008–EZ0038) - op_host 内部 API 失败类(平台能力查询、tiling API 失败等)→ OP_LOGE_WITHOUT_REPORT 透传,去掉 EZ9999 上报、保留日志 - OP_CHECK_NULL_WITH_CONTEXT (EZ9999)→ 显式空指针检查 + 正式码宏 - op_api OP_CHECK_NOTNULL (EZ9999)→ 显式检查 + OP_LOGE_WITHOUT_REPORT(ACLNN_ERR_INNER_NULLPTR) + 返回公共错误码 - op_api OP_LOGE(ACLNN_ERR_INNER_* / RUNTIME_ERROR) (561xxx / 361xxx)→ OP_LOGE_WITHOUT_REPORT ;正式参数码 ACLNN_ERR_PARAM_* (161xxx)保留 - 删除 CREATE_EXECUTOR 之后不可达的空指针死检查( CHECK_RET(executor.get()!=nullptr, ACLNN_ERR_INNER_CREATE_EXECUTOR) ,40 处) - op_graph(histogram_v2 / reduce_mean 融合 pass)E9 上报 → 正式码或透传 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3977 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 43 算子 op_host / op_api / op_graph 全量编译通过,exit 0(910b + 950/arch35) - 本地增加ut测试130 用例全量通过(910b 83 + 950 47),日志级验证触发 78 次正式 EZ 错误码上报,覆盖 14 个正式错误码 - 原版 math_op_host_ut 300 用例全量通过,无回归 - 静态复扫:范围内 E*9**** 正式上报清零(残留均为 CHECK_RET 返回公共码 / 动态 return 等允许项) - 附:适配 CANN 9.3.0 atvoss 库 tiling key 编码变化,更新 reduce_max / reduce_mean_with_count 测试的 9 处 expectedTilingKey (官方 master 在 9.3.0 下同样失败,非本 PR 引入) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6606 | 14 days ago | |
RightShift示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Co-authored-by: zhouqilong<zhouqilong2@huawei.com> # message auto-generated for no-merge-commit merge: !4743 merge raii-right_shift into master RightShift示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Created-by: zhou-qilong Commit-by: zhouqilong Merged-by: cann-robot Description: ## 描述 将 math/right_shift/examples 下的 aclnn 示例由手动资源管理改为 C++ RAII 管理,与同仓 math/is_finite、math/is_inf 示例风格保持一致。 ## 测试 验证文件:math/right_shift/examples/test_aclnn_right_shift.cpp。 C++11 编译、链接通过。 输入为 [10,20,30,40],右移位数为 [1,2,3,4],期望输出为 [5,5,3,2],实际输出与期望一致。 ## 文档更新 无。 ## 类型标签 - [x] 其他,请描述:示例代码改造(C++ RAII资源管理) See merge request: cann/ops-math!4743 | 9 days ago | |
feat(infershape): 补齐 12 个算子 op_graph InferDataType 注册 Co-authored-by: yangjinhan<yangjinhan@huawei.com> # message auto-generated for no-merge-commit merge: !6644 merge feat/register-infer-datatype into master feat(infershape): 补齐 12 个算子 op_graph InferDataType 注册 Created-by: Ruyue1550 Commit-by: yangjinhan Merged-by: cann-robot Description: ## 描述 按 RT1.0 到 RT2.0 推导框架迁移方案第 1 步(补齐缺失的 InferDataType 注册,零行为变更)要求,为 12 个缺失 InferDataType 注册的算子新增 op_graph/*_graph_infer.cpp 注册文件。本次变更只新增文件、不修改任何存量代码,共 12 个文件、240 行。 ### 改动点 | # | 算子 | 新增文件 | 注册方式 | |---|------|---------|---------| | 1 | Pad | conversion/pad/op_graph/pad_graph_infer.cpp | InferDataTypeOutputSameAsInput | | 2 | PadV2 | conversion/pad_v2/op_graph/pad_v2_graph_infer.cpp | 同上 | | 3 | PadV3 | conversion/pad_v3/op_graph/pad_v3_graph_infer.cpp | 同上 | | 4 | PadV3Grad | conversion/pad_v3_grad/op_graph/pad_v3_grad_graph_infer.cpp | 同上 | | 5 | MirrorPad | conversion/mirror_pad/op_graph/mirror_pad_graph_infer.cpp | 同上 | | 6 | BroadcastTo | conversion/broadcast_to/op_graph/broadcast_to_graph_infer.cpp | 同上 | | 7 | Transpose | conversion/transpose/op_graph/transpose_graph_infer.cpp | 同上 | | 8 | Rint | math/rint/op_graph/rint_graph_infer.cpp | 同上 | | 9 | TruncateDiv | math/truncate_div/op_graph/truncate_div_graph_infer.cpp | 同上 | | 10 | Expand | math/expand/op_graph/expand_graph_infer.cpp | 同上 | | 11 | GetShape | math/get_shape/op_graph/get_shape_graph_infer.cpp | 专门推导,输出固定 INT32 | | 12 | HistogramFixedWidth | math/histogram_fixed_width/op_graph/histogram_fixed_width_graph_infer.cpp | 专门推导,输出固定 INT32 | ### 改动原因 1. 背景:RT2.0 V2 路径的 dtype 推导在未注册 InferDataType 时依赖 IR(proto/def 的 TensorType)符号映射兜底。以显式注册替代隐式兜底,使推导逻辑代码自明、不依赖 IR 声明的隐式行为,并为后续推导框架切换就位 op_graph 注册设施。 2. dtype 语义逐算子以 RT1.0 SetDataType 为基线核对(迁移原则:非算子语义变更): - 上述 #1-#10 共 10 个算子的 canndev RT1.0 实现均为 SetDataType(input_dtype)(取输入 x 的类型,const/非 const/未知 rank 各分支一致),输出 dtype 跟随输入,故注册仓内公共推导函数 InferDataTypeOutputSameAsInput,与本仓已有 Tile/Erfc/TruncateMod 注册同构; - GetShape、HistogramFixedWidth 的 RT1.0 实现硬编码 SetDataType(DT_INT32),输出为形状值/直方图计数,与输入 dtype 无关,故注册输出固定 INT32 的专门推导,与两者 proto/def 中 OUTPUT(y, TensorType({DT_INT32})) 声明一致。 3. 零行为变更:注册结果与 IR 符号推导兜底结果一致,不改变任何现网推导行为。 4. 构建零改动:op_graph/*.cpp 由 CMake GLOB_RECURSE 自动收集(cmake/func.cmake),无需修改 CMakeLists。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4099 ## 测试 - 本地无 CANN 构建环境,未执行编译与 UT,请通过门禁验证(评论 compile 触发 CI) - 已完成静态核对:13 个注册的 dtype 语义与 canndev RT1.0 SetDataType 逐分支一致、与各算子 proto/def 输出声明一致、与本仓已有同款注册(tile/erfc/truncate_mod/circular_pad)代码风格一致 - UT dtype 断言用例(断言注册结果=兜底结果)可随检视意见补充 ## 文档更新 无需更新文档(纯推导注册代码,无接口与行为变化) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6644 | 13 days ago | |
Round示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Co-authored-by: zhouqilong<zhouqilong2@huawei.com> # message auto-generated for no-merge-commit merge: !4744 merge raii-round into master Round示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Created-by: zhou-qilong Commit-by: zhouqilong Merged-by: cann-robot Description: ## 描述 将 math/round/examples 下的 aclnn 示例由手动资源管理改为 C++ RAII 管理,与同仓 math/is_finite、math/is_inf 示例风格保持一致。 ## 测试 验证文件: - math/round/examples/test_aclnn_round.cpp - math/round/examples/test_aclnn_round_decimals.cpp C++11 编译、链接通过。 test_aclnn_round.cpp:输入为 [1.1,2.8,3.5],期望输出为 [1,3,4],实际输出与期望一致。 test_aclnn_round_decimals.cpp:输入为 [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8],decimals 为 0,期望输出为 [0,0,0,0,0,1,1,1],实际输出与期望一致。 ## 文档更新 无。 ## 类型标签 - [x] 其他,请描述:示例代码改造(C++ RAII资源管理) See merge request: cann/ops-math!4744 | 9 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
style(scale): isolate formatting and license header cleanup Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !6941 merge codex/scale-format-only into master style(scale): isolate formatting and license header cleanup Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: 本 PR 仅整理 Scale 的格式、文件末换行、注释和许可头,共15个文件;不修改算子计算、参数校验、接口签名或测试断言。 范围: - aclnn_scale.h、scale.cpp、scale.h及2个kernel/tiling结构头的排版。 - 7个测试CMake文件的注释和许可头。 - 2个已有UT源文件的排版,以及ATK JSON的文件末换行。 验证: - 所有C++文件去除注释/空白后令牌完全一致;CMake去除注释/空白后命令完全一致;JSON解析对象完全一致,共15/15。 - 相对origin/master的全部变更文件pre-commit通过;另外以单次调用检查全部15个文件,OAT全部通过;git diff --cached --check通过。 - 纯规范变更没有重新宣称设备精度或性能结果。 功能、回归测试及README/API契约修改单列在 https://gitcode.com/cann/ops-math/merge_requests/6933 ,两个PR的文件集合互不重叠。原实现目录和构建配置绑定的入口改名留在功能PR中。 See merge request: cann/ops-math!6941 | 8 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix(segsum): arch22末条带输入搬运长度改用行向钳位值,修复GM越界读 Co-authored-by: wanshilin<wanshilin@h-partners.com> # message auto-generated for no-merge-commit merge: !6936 merge fix_segsum into master fix(segsum): arch22末条带输入搬运长度改用行向钳位值,修复GM越界读 Created-by: wanshilin Commit-by: wanshilin Merged-by: cann-robot Description: ## 描述 MODE 0路径(tiling key 1000, tailDimSize > slideSize)中,SegsumND::Compute的CopyInBatch搬运长度误用列向钳位值calCount,而起点inOffset按行向(batchIdx * tailDimSize + rowIdx)计算,二者不同源。当T % slideSize != 0时末行条带读窗口越过x张量行末,造成GM越界读;多读数据不被消费,数值结果不受影响。 修复:输入搬运长度改为与inOffset同源的行向钳位值loopCount(即Min(slideSize, tailDimSize - rowIdx));calCount仍保留列条纹宽度语义供processY/CopyOutBatch消费,输出侧不受影响。 ## 关联的Issue fix #3845 ## 测试 1. 910B3 UT全通过:op_host 1、op_api 14、kernel 3 2. example通过:test_aclnn_segsum execute samples success 3. msSanitizer memcheck前后对比(fp32 T=13000, 2batch, ACL_MEM_MALLOC_NORMAL_ONLY):修复前illegal read of size 45952(与issue报告一致),修复后No error detected 4. 数值抽检(171点)修复前后一致,修复不引入数值变化 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6936 | 9 days ago | |
Select示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Co-authored-by: zhouqilong<zhouqilong2@huawei.com> # message auto-generated for no-merge-commit merge: !4748 merge raii-select into master Select示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Created-by: zhou-qilong Commit-by: zhouqilong Merged-by: cann-robot Description: ## 描述 将 math/select/examples 下的 aclnn 示例由手动资源管理改为 C++ RAII 管理,与同仓 math/is_finite、math/is_inf 示例风格保持一致。 ## 测试 验证文件:math/select/examples/test_aclnn_s_where.cpp。 C++11 编译、链接、clang-format 18.1.8 和 OAT 检查通过。 self 为 [0,0,0,0,0,0,0,7],other 为 [0,1,2,3,4,5,6,7],condition 为 [false,false,false,false,true,true,true,true],期望输出为 [0,1,2,3,0,0,0,7],实际输出与期望一致。 ## 文档更新 无。 ## 类型标签 - [x] 其他,请描述:示例代码改造(C++ RAII资源管理) See merge request: cann/ops-math!4748 | 9 days ago | |
docs(math): 补齐select_v2算子README资料入口 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !6778 merge docs/select-v2-readme into master docs(math): 补齐select_v2算子README资料入口 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 **问题**(#3788,拆分自 #3499): math/select_v2 目录含交付件(op_host 算子定义与 tiling、AICore/AI CPU 双 kernel、op_graph 原型、图模式样例、tests),但目录内无 README,未提供算子资料入口;docs/zh/op_list.md 已收录该算子(AI Core/AI CPU),链接直指目录却无资料可读。 **方案**:按仓内标准算子 README 模板新增 math/select_v2/README.md,五个章节: - **产品支持情况**:按 aclnnSWhere 接口文档口径(950PR&950DT、A3、A2、Atlas推理、Atlas训练支持,200I/500 A2 不支持)。aclnnSWhere 接口的计算由 SelectV2 算子承载(math/select/op_api/aclnn_s_where.cpp 经 l0op::SelectV2 派发至本目录交付的 AICore/AI CPU 实现)。 - **功能说明**:根据条件张量condition选取x1或x2中对应元素并返回(支持广播),兼容 TensorFlow SelectV2(op_graph/select_v2_proto.h 原型声明);计算公式与数值示例按 op_host/select_v2_def.cpp 参数口径。 - **参数说明**:condition/x1/x2/y 四参数表,参数名、参数顺序与数据类型均按 op_host/select_v2_def.cpp(AI Core)注册口径。 - **约束说明**:无。广播关系按仓内先例(mul/sub/maximum 等约束均为"无"、gcd README)在参数表描述列承载。 - **调用说明**:aclnn 与图模式两行。select_v2 支持 aclnn 调用,接口为 aclnnSWhere,由 select 目录交付(历史原因未随算子实现目录放置):样例链 ../select/examples/test_aclnn_s_where.cpp、说明链 ../select/docs/aclnnSWhere.md;图模式样例链 examples/test_geir_select_v2.cpp、说明链 op_graph/select_v2_proto.h。 **口径说明**: 1. 产品支持表照 aclnnSWhere 接口文档口径填写(安装 CANN 包后用户视角,符合 wiki《算子README文档模板》"不以源码开源的平台为准"标准);接口文档产品能力与算子能力的对应依据为 aclnn_s_where.cpp 的 l0op::SelectV2 唯一派发链。 2. 参数名与数据类型均按 op_host/select_v2_def.cpp(AI Core)注册口径填写。本算子 op_graph 原型与 AI CPU 侧注册名为 condition/then/else/result,与 AI Core def 的 condition/x1/x2/y 为同一位置参数(输入顺序一致,输出与第二个输入同型);AI CPU 实现与 aclnn 接口层支持类型更广(含 BOOL、UINT16、UINT32、UINT64、INT16、DOUBLE、COMPLEX64、COMPLEX128),如需在资料中一并呈现,请评审指示。 **索引同步**(2026-10-30 追加第二个提交,响应评审侧「请检查op_list.md内容是否要同步刷新」):docs/zh/op_list.md 中 select_v2 行链接原直指算子目录(无 README.md 后缀),同步更新为指向本 PR 新增的 README 入口,与索引内其余算子行链接口径一致;该行说明列与实现矩阵(op_kernel/op_host/op_api/op_graph、AI Core/AI CPU)经核对无需变更。同批 gcd(!6753)、ger(!6779)两 PR 经核查 op_list.md 均无需变更。同一 PR 交付索引链接与链接目标,合入即同时生效。 **aclnn 调用归属修正**(2026-10-30 第三个提交):math/select/op_api/ 四文件(aclnn_s_where.cpp/.h、select.cpp/.h)注册与派发的均为 SelectV2 算子(select.cpp OP_TYPE_REGISTER(SelectV2)、select.h 声明 l0op::SelectV2、aclnn_s_where.cpp 经 l0op::SelectV2 派发),select 算子自身无 aclnn 接口交付。op_list.md 按算子承载归属修正 aclnn 调用(op_api)列:select_v2 行 ×→√(aclnnSWhere 承载算子即 SelectV2,与 README 调用说明一致),select 行 √→×(其 op_api 目录交付均属 SelectV2)。该口径与接口文件物理位置(select 目录,历史原因)解耦。 ## 关联的Issue Closes #3788 ## 测试 纯文档变更(新增 README + 索引链接同步),无代码改动: - pre-commit 全部 hook 通过(trailing-whitespace / end-of-file-fixer / codespell / OAT 合规检查) - 相对链接核验:./examples/test_geir_select_v2.cpp、./op_graph/select_v2_proto.h、../select/examples/test_aclnn_s_where.cpp、../select/docs/aclnnSWhere.md 均存在于 master - 逐句核对事实源:功能与约束对应 op_graph/select_v2_proto.h;参数对应 op_host/select_v2_def.cpp(AI Core)注册;产品支持表对应 math/select/docs/aclnnSWhere.md;aclnn 调用链对应 math/select/op_api/aclnn_s_where.cpp(l0op::SelectV2 派发) - 索引链接同步提交:pre-commit 全部 hook 通过;全表链接口径核查——有 README 的算子行均链接至 <op>/README.md,本 PR 合入后全表仅剩 affine_grid、logspace、precision_compare 三个无 README 算子仍直指目录 - aclnn 调用归属:math/select/op_api/select.cpp OP_TYPE_REGISTER(SelectV2)、select.h l0op::SelectV2 声明、aclnn_s_where.cpp l0op::SelectV2 派发链逐项核验,select 算子无自有 aclnn 接口交付;矩阵修正提交 pre-commit 全部 hook 通过 ## 文档更新 - math/select_v2/README.md(新增,+47) - docs/zh/op_list.md(select_v2 行索引链接同步 +1/−1;select/select_v2 行 aclnn 调用归属修正 +2/−2) ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6778 | 9 days ago | |
feat: 迁移gelocal控制流与基础算子交付件(含While/If/Case/For/PartitionedCall、TF控制流插件、reshape),实现RT2.0交付 Co-authored-by: Dazhou_Cao<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !6621 merge migrate-gelocal-delivery into master feat: 迁移gelocal控制流与基础算子交付件(含While/If/Case/For/PartitionedCall、TF控制流插件、reshape),实现RT2.0交付 Created-by: Dazhou_Cao Commit-by: Dazhou_Cao Merged-by: cann-robot Description: ## 描述 汇总迁移 gelocal(RT2.0)算子交付件: - **基础/GE 控制流算子**:size、rank、LoopCond、NextIteration、RefIdentity、SwitchByIndex、aipp_data、End、squeezev2、unsqueezev2,以及 enter/exit/merge/switch/switch_n/ref_* 等 - **子图控制流算子**:If、Case、For、PartitionedCall、While(原型注册 + RT2.0 推导注册 + UT + README,If/Case/For/PartitionedCall 含 GeIR 示例;均归入 ge 分类) - **TF 控制流插件**:If/_If/StatelessIf、While/_While/StatelessWhile、Case/StatelessCase、PartitionedCall/StatefulPartitionedCall 变体合并映射 - **reshape**:infershape 对齐 RT1.0 语义、allowzero/shape 属性注册、信息库 - **文档**:README 产品支持表统一(全部√)、gather_shapes 归入 conversion、op_list 同步登记 ## 测试 - bash build.sh --ophost --opgraph -j8 构建通过(含各算子 REG_OP 注册校验) - 宿主侧全量 UT:2594/2594 PASSED(384 test suites) ## 说明 - 内容汇总自此前迁移 PR(6474 / 6522 / 6208)的交付件,本 PR 为其合并后的统一交付 See merge request: cann/ops-math!6621 | 14 days ago | |
feat: 迁移gelocal控制流与基础算子交付件(含While/If/Case/For/PartitionedCall、TF控制流插件、reshape),实现RT2.0交付 Co-authored-by: Dazhou_Cao<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !6621 merge migrate-gelocal-delivery into master feat: 迁移gelocal控制流与基础算子交付件(含While/If/Case/For/PartitionedCall、TF控制流插件、reshape),实现RT2.0交付 Created-by: Dazhou_Cao Commit-by: Dazhou_Cao Merged-by: cann-robot Description: ## 描述 汇总迁移 gelocal(RT2.0)算子交付件: - **基础/GE 控制流算子**:size、rank、LoopCond、NextIteration、RefIdentity、SwitchByIndex、aipp_data、End、squeezev2、unsqueezev2,以及 enter/exit/merge/switch/switch_n/ref_* 等 - **子图控制流算子**:If、Case、For、PartitionedCall、While(原型注册 + RT2.0 推导注册 + UT + README,If/Case/For/PartitionedCall 含 GeIR 示例;均归入 ge 分类) - **TF 控制流插件**:If/_If/StatelessIf、While/_While/StatelessWhile、Case/StatelessCase、PartitionedCall/StatefulPartitionedCall 变体合并映射 - **reshape**:infershape 对齐 RT1.0 语义、allowzero/shape 属性注册、信息库 - **文档**:README 产品支持表统一(全部√)、gather_shapes 归入 conversion、op_list 同步登记 ## 测试 - bash build.sh --ophost --opgraph -j8 构建通过(含各算子 REG_OP 注册校验) - 宿主侧全量 UT:2594/2594 PASSED(384 test suites) ## 说明 - 内容汇总自此前迁移 PR(6474 / 6522 / 6208)的交付件,本 PR 为其合并后的统一交付 See merge request: cann/ops-math!6621 | 14 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
SignBitsUnpack示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Co-authored-by: zhouqilong<zhouqilong2@huawei.com> # message auto-generated for no-merge-commit merge: !4750 merge raii-sign_bits_unpack into master SignBitsUnpack示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Created-by: zhou-qilong Commit-by: zhouqilong Merged-by: cann-robot Description: ## 描述 将 math/sign_bits_unpack/examples 下的 aclnn 示例由手动资源管理改为 C++ RAII 管理,与同仓 math/is_finite、math/is_inf 示例风格保持一致。 ## 测试 验证文件: - math/sign_bits_unpack/examples/arch35/test_aclnn_sign_bits_unpack.cpp - math/sign_bits_unpack/examples/test_aclnn_sign_bits_unpack.cpp C++11 编译、链接通过。 两个示例的输入均为 [0xAA,0x55],期望输出为 [[-1,1,-1,1,-1,1,-1,1],[1,-1,1,-1,1,-1,1,-1]],实际输出与期望一致。 ## 文档更新 无。 ## 类型标签 - [x] 其他,请描述:示例代码改造(C++ RAII资源管理) See merge request: cann/ops-math!4750 | 9 days ago | |
Signbit示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Co-authored-by: zhouqilong<zhouqilong2@huawei.com> # message auto-generated for no-merge-commit merge: !4751 merge raii-signbit into master Signbit示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Created-by: zhou-qilong Commit-by: zhouqilong Merged-by: cann-robot Description: ## 描述 将 math/signbit/examples 下的 aclnn 示例由手动资源管理改为 C++ RAII 管理,与同仓 math/is_finite、math/is_inf 示例风格保持一致。 ## 测试 验证文件:math/signbit/examples/test_aclnn_signbit.cpp。 C++11 编译、链接、clang-format 18.1.8 和 OAT 检查通过。 输入为 [0,1,2,3,4,5,6,7],期望输出为 8 个 false,实际输出与期望一致。 ## 文档更新 无。 ## 类型标签 - [x] 其他,请描述:示例代码改造(C++ RAII资源管理) See merge request: cann/ops-math!4751 | 9 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
fix: 修复 GetShape infershape UT 多输入用例的 NodeIoNum 声明冲突 Co-authored-by: tan_xin<tanxin44@huawei.com> # message auto-generated for no-merge-commit merge: !7022 merge master-tile into master fix: 修复 GetShape infershape UT 多输入用例的 NodeIoNum 声明冲突 Created-by: tan_xin Commit-by: tan_xin Merged-by: cann-robot Description: ## 描述 修复 math/get_shape/tests/ut/op_host/test_get_shape_infershape.cpp 中多输入用例的 NodeIoNum 声明冲突: - TwoInputs_2D_And_3D(2 输入)与 MultipleDtypes(3 输入)两个用例原带 .NodeIoNum(1, 1),声明 node 仅 1 输入 1 输出,与 IrInstanceNum({2}/{3}, {1}) 设置的多输入矛盾,导致 UT 失败。 - 移除这两个用例中的 .NodeIoNum(1, 1),使其与实际输入个数一致;单输入用例(SingleInput_3D_Tensor / ScalarInput_Fail / VectorInput)不受影响,保留原声明。 ## 关联的Issue 关联 Issue [#4417](https://gitcode.com/cann/ops-math/issues/4417) ## 测试 - get_shape infershape UT 全部用例通过(含多输入 2D/3D 与多 dtype 场景)。 ## 文档更新 NA ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7022 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
sort|sort_with_index|top_k_v2算子适配ascend960dt/ascend960pr Co-authored-by: tujun6<tujun6@huawei.com> # message auto-generated for no-merge-commit merge: !6202 merge add_960_sort into master sort|sort_with_index|top_k_v2算子适配ascend960dt/ascend960pr Created-by: tujun6 Commit-by: tujun6 Merged-by: cann-robot Description: ## 描述 本 PR 为 sort/sort_with_index/top_k_v2 三个算子适配 ascend960dt/ascend960pr 平台,使其能够在这两个平台上编译和运行。主要改动: - **算子定义注册**:在 math/sort/op_host/sort_def.cpp、math/sort_with_index/op_host/sort_with_index_def.cpp、math/top_k_v2/op_host/top_k_v2_def.cpp 中为 ascend960dt/ascend960pr 增加 AICore 配置(复用 ascend950 的 aicoreConfig) - **编译入口**:三个算子的 CMakeLists.txt 中 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt、ascend960pr(tiling 目录 arch35) - **二进制 kernel 配置**:新增 op_host/config/ascend960dt|ascend960pr 下的 *_binary.json 与 *_simplified_key.ini - **二进制编译注册**:scripts/kernel/binary_config/ascendc_config.json 中扩展 Sort/SortWithIndex/TopKV2 的 compute_units 至 ascend960dt/ascend960pr,并补充对应编译选项 -mllvm -cce-aicore-dcci-before-kernel-end=false ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3587 ## 测试 - 本地 pre-commit 全量检查通过(trailing-whitespace、end-of-file-fixer、check-json、clang-format、codespell 等全部 hook) - OAT 合规扫描通过(oat-py 1.0.3,PR 全部 19 个文件,License 头与文件类型违规均为 0) - 二进制 kernel 编译与算子精度验证依赖 CI 流水线及 ascend960 平台环境 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6202 | 26 days ago | |
sparse_bincount算子精度提升 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !6914 merge dev_bincount into master sparse_bincount算子精度提升 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> sparse_bincount算子精度提升 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4395 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6914 | 8 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 | 15 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
fix(square_sum_all): preserve square and reduction residuals Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !7040 merge fix/square-sum-all-accurate-reduction into master fix(square_sum_all): preserve square and reduction residuals Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 Ascend 950 SquareSumAll 在 71 元素小归约及 240669576 元素长归约中的三方精度失败。最新主线固定原输入回放时,第二路输出的原 L1 RMSE 比分别为 1.9344、1.5967,超过 1.5。 两条 kernel 路线在平方累计、水平归约及跨核合并中保留 FP32 舍入残差;复用现有 32 字节 workspace 槽位保存高低分量,同步 UB 预算与最小 UB 边界 UT。为全向量计算显式补零尾块,并保留 NaN/Inf 传播及两路输出隔离。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4423 ## 测试 - 发布 binary 固定输入回归 61/61 用例、122/122 输出通过原 cross_check L1;全部 BINARY_MATCH,内存检查全部通过。包含本轮两例失败及历史 seed42–53、两条 kernel 分支、尾块和特殊值。 - 原 golden、A100 FP32 torch.dot 及 L1 容差未修改。 - UB 边界 UT 已同步为 170496 字节,恰好够用和少一字节回退均通过;Ascend 950 Host UT 42/42,A2 公共 shape UT 10/10。最终提交包含该 UT 文件,共 6 个变更文件。 - 仓内精简 ST 19/19、38/38 输出通过原 cross_check L1,真实 A100 原 FP32 Compose 逐文件输入哈希核对并三次重复输出一致;新增一例 71 元素用例,最大规模保持 8193。 - A100 torch.compile 两路 torch.dot 的 Nsight Systems 实测覆盖 25 个规模。按带宽比 1555/1598.4 折算,G/N 最小值 0.2652,高于本次要求 0.1。存在性能回退,共同 55 例耗时比中位数 1.64,最大 4.21。 - 统一入口本地 CI PASS(Ascend 950/A2),受测与远端 SHA fc9c6e6e54bc4a7c15cc4c0e5dfce52523b6e726。线上 CI [compile 评论](https://gitcode.com/cann/ops-math/merge_requests/7040#note_197765066) 已回查,机器人确认[流水线已启动](https://gitcode.com/CANN/ops-math/actions/runs/0e843b2088be48be98b1da8ca91d895d);平台完成结果尚未确认。 ## 文档更新 接口、数学语义和支持范围不变,本次未修改对外文档。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7040 | 7 days ago | |
增加reduce模板算子v121配置 Co-authored-by: Sunee<sunyi35@huawei.com> # message auto-generated for no-merge-commit merge: !6243 merge v121 into master 增加reduce模板算子v121配置 Created-by: sunzhongwen1 Commit-by: Sunee Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 给bias_add_grad、diag_part、dot、kl_div_v2、reduce_all、reduce_any、reduce_log_sum_exp、reduce_max、reduce_mean、reduce_min、reduce_prod、reduce_sum、square_sum_v1算子增加v121/122配置 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6243 | 26 days ago | |
fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !5815 merge fix/proto-comment-grammar into master fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 对 39 个算子的 op_graph/*_proto.h 注释做拼写与语法修复,仅注释与格式变更,不涉及任何代码逻辑: - **拼写错误**:select_v2 condittion→condition(2处)、axpy_v2 opratioan→operation、clip_by_value 英文 dtype 列表中的全角逗号改半角 - **系统性语法(历史模板复制扩散)**:Support broadcasting→Supports broadcasting(27个文件)、A ND→An ND(33个文件97处) - **单文件语法修复 71 处(含 signbit returns→Returns、axpy should→Should 两处句首大写补漏)**:ger has→have、addcmul/addcdiv multiply→multiplies、muls An required→A required、equal (x=y)→(x1==x2)、Elementwise→Element-wise、bias_add/lerp/gcd 语序与冠词修复、aicore→AiCore、mod/floor_mod 矛盾表述统一、句首大小写与标点空格等 - 附带 pre-commit 钩子强制规范化(clang-format 重排、尾随空白、文件末尾换行),并保留各文件原有行尾风格(CRLF/LF) 涉及算子:add/sub/mul/muls/div/real_div/floor_div/div_no_nan/pow/minimum/maximum/signbit/less/less_equal/greater/greater_equal/not_equal/equal/bias_add/squared_difference/lerp/logical_and/logical_or/bitwise_or/bitwise_and/bitwise_xor/tanh_grad/axpy/axpy_v2/addcmul/addcdiv/select/select_v2/mod/floor_mod/ger/gcd/clip_by_value/clip_by_value_v2 ## 关联的Issue - #3234 - https://gitcode.com/cann/ops-math/issues/3234 ## 测试 - 纯注释变更,无功能影响 - pre-commit 钩子全部通过(clang-format / trailing-whitespace / end-of-file-fixer / codespell / OAT 合规检查) - 严格限定在上述 39 个算子文件,全仓其余算子未改动(其余算子同类问题可后续另行清理) ## 文档更新 不涉及仓内 docs/ 目录;本 PR 即为 proto.h 注释(算子原型文档源)的修正 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5815 | 16 days ago | |
test(stft): 修复 ascend950 下 STFTTiling 10个用例 UT 期望值平台差异 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !6887 merge fix-stft-ut-expect-tiling-data into master test(stft): 修复 ascend950 下 STFTTiling 10个用例 UT 期望值平台差异 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 关联 issue #4307 ## 问题 math_op_host_ut 中 STFTTiling.stft_tiling_005/006/007/015/016/017/020/022/023/024 在 ascend950 构建下失败(tiling_case_executor.cpp:274 字符串比对),maskUBSize/copyUBSize/planTilingData.ubMaxLine 与期望值不一致。 ## 根因 - ascend950(NpuArch 3510)下 UT 平台有效 UB = 262144,基线平台(910B,2201)下为 261888,差 256 字节 - CalcMaskUBSize / CalcCopyUBSize / ubMaxLine 均为 UB 预算派生字段,随之变化(+64/+256/+1) - 核切分字段期望与实际完全一致,MR !4502 新增的 950 因子表与切分逻辑工作正常,tiling 代码无 bug - 期望值平台相关:910B 构建下实际输出恰等于现有期望值 ## 修复 - test_stft_tiling.cpp:保留原字面量为基线值,新增 MakeExpectTilingData(caseId, baseline),ascend950 构建下做整 token 映射替换(每处差异 token 已验证唯一),其他构建原样返回 - CMakeLists.txt:参考 segsum/exp_segsum_grad 惯例,仅在 ASCEND_COMPUTE_UNIT=ascend950 时注入 BUILD_SOC_VERSION 宏 ## 验证 | 构建 | STFT 用例 | 全量对比 | |---|---|---| | ascend950 | 24/24 通过(修复前 10 失败) | 恰好移除基线 10 个 STFT 失败,零新增 | | ascend910b | 24/24 通过(修复前同样 10 失败,顺带修复) | 与基线 diff 为空,零回归 | See merge request: cann/ops-math!6887 | 10 days ago | |
fix(pow/sub): A2/A3补充out dtype白名单校验(#3964) Co-authored-by: doufloat<baijinxiang@huawei.com> # message auto-generated for no-merge-commit merge: !6800 merge fix/pow-out-dtype-whitelist into master fix(pow/sub): A2/A3补充out dtype白名单校验(#3964) Created-by: doufloat Commit-by: doufloat Merged-by: cann-robot Description: ## 描述 **问题** aclnnPowScalarTensor、aclnnPowTensorScalar、aclnnPowTensorTensor、aclnnSubs 和 aclnnSub 在 out 传入资料输出支持列表之外的 dtype(如 DT_INT4)时,A2/A3 会继续进入 Build/Cast 并返回内部错误码,而不是第一段接口约定的 161002。 **根因** 输出类型此前只经过可转换关系检查。部分非法 dtype 能被 CanCast 放行,随后在 Build/Cast 阶段失败,导致参数非法被降级为内部错误。 **方案** - 新增 out dtype 白名单校验,但仅在 NpuArch::DAV_2201(A2/A3)启用。 - aclnn_pow.cpp 和 aclnn_pow_tensor_tensor.cpp 覆盖 aclnnPowScalarTensor、aclnnPowTensorScalar、aclnnPowTensorTensor 三个 out-of-place 入口。 - aclnn_sub.cpp 在 CheckParamsScalar 和 CheckParams 中覆盖 aclnnSubs、aclnnSub;原地接口继续沿用原有输入别名校验。 - A5 走 DAV_3510 路径,不启用新增白名单,保持原有 CanCast 及后续 Build 行为不变。 - A2/A3 合法 out dtype 路径不变,仅将非法 dtype 的返回码修正为 ACLNN_ERR_PARAM_INVALID(161002)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3964 ## 测试 **A2:Ascend 910B3,CANN 9.2.0** - math_op_api_ut:158/158 PASS,包含新增 A2 非法 out 校验和 A5 不拦截回归用例。 - 当前补丁真机矩阵:PowScalarTensor/PowTensorScalar/PowTensorTensor/Subs/Sub 的 INT4/UINT1/HIFLOAT8/FLOAT8_E5M2/COMPLEX32 均返回 161002。 - 合法路径未被误拦截:三个 Pow 入口的 INT64 -> UINT16/UINT32/UINT64 均返回 0;FLOAT/FLOAT16/DOUBLE/BF16/COMPLEX64/COMPLEX128 输出在对应可转换输入下保持 0。 **A5:Ascend 950PR,CANN 9.2.0** - math_op_api_ut:158/158 PASS,包含 Ascend950_out_dtype_check_not_applied 回归用例。 - 当前补丁真机矩阵与基线一致: | out dtype | PowScalarTensor | PowTensorScalar / PowTensorTensor / Subs / Sub | | --- | --- | --- | | INT4 / UINT1 / COMPLEX32 | 561000 | 561103 | | HIFLOAT8 / FLOAT8_E5M2 | 0 | 0 | - 新增 A2/A3 out 白名单在 A5 未生效;合法 INT64 -> UINT16/UINT32/UINT64 仍返回 0。 **实现路径说明** A3 与 A2 均走 DAV_2201 路径,共用同一实现。本轮完成 A2 和 A5 真机验证。 ## 文档更新 不涉及。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他(请说明) See merge request: cann/ops-math!6800 | 10 days ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix(math): 移除Tan大值输入显式NaN保护并修复golden错配 Co-authored-by: dengguojie<dengguojie@huawei.com> # message auto-generated for no-merge-commit merge: !6661 merge fix/changwei_liuyi-3+125+165 into master fix(math): 移除Tan大值输入显式NaN保护并修复golden错配 Created-by: dengguojie Commit-by: dengguojie Merged-by: cann-robot Description: ## 问题 Tan 大值输入(|x|≥1e7,含 ±2^29/±2^31/±FLT_MAX/INT32 极值)在 aclnn/GEIR 通路输出全 NaN;tests/assets/golden.py 为 tanh 错配实现。 ## 根因 arch35 kernel 显式 LARGE_THRESHOLD=1e7 guard——源自旧手写实现精度边界,换用 SIMT tanf 后依据失效。 ## 修复 - 删除大值 NaN guard,保留 Inf/NaN→NaN; - golden 替换为正确 Tan 实现(类绑定兼容/惰性导入/注册键/容差条目); - tanh 用例 CSV 归位;README 约束更正为有限值语义。 ## 验证 - 21 点大值精度探针全部 spec 容差内(Ascend950PR); - 原失败大值用例 FAIL→PASS;全量回归 2831 例数值层无 PASS→FAIL; - 仓内 UT 24/24。 Fixes #3871 See merge request: cann/ops-math!6661 | 12 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix(repeat): A2/A3首段拦截超维repeat并保留A5兼容 Co-authored-by: doufloat<baijinxiang@huawei.com> # message auto-generated for no-merge-commit merge: !6816 merge docs/repeat-errcode-stage-3998 into master fix(repeat): A2/A3首段拦截超维repeat并保留A5兼容 Created-by: doufloat Commit-by: doufloat Merged-by: cann-robot Description: ## 描述 **问题** aclnnRepeat 在 A2/A3 上违反“首轴参与 repeat 时最多 4 个非 1 维度、首轴不参与时最多 3 个”的约束时,第一段 aclnnRepeatGetWorkspaceSize 返回 0,第二段执行才返回 561103(ACLNN_ERR_INNER_NULLPTR),报错时机和错误码均与入参约束不符。 进一步实测确认 A5 不存在该限制:相同超限输入在 A5 上两段均成功且输出正确。因此不能把该检查无条件前移到公共第一段,否则会误拒 A5 合法场景。 **方案** - 在 math/tile/op_api/aclnn_repeat.cpp 增加 A2/A3 路径门控,仅对 ASCEND910B、ASCEND910_93 生效; - 首轴参与 repeat 时最多允许 4 个非 1 维度,首轴不参与时最多允许 3 个; - 超限时第一段返回 ACLNN_ERR_PARAM_INVALID(161002); - 空 Tensor、repeats 含 0 等不进入 Tile kernel 的分支保持原行为; - A5(RegBase/ASCEND950)保持现状; - 不修改接口资料,A5 兼容性说明通过 Issue 答复同步。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3998 ## 测试 - A2 Ascend910B3:fp32/fp16/bf16/int32 × 两个超限场景,8/8 均 phase1=161002, phase2=skipped;合法边界 8/8 成功;负值控制项 4/4 返回 161002。 - A3 Ascend910_93:同一矩阵 8/8 第一段返回 161002,合法边界 8/8 成功,负值控制项 4/4 返回 161002。 - A5 Ascend950PR:同一超限矩阵 8/8 两段成功且输出校验通过,合法边界 8/8 成功。 - op_api UT:tile 在 A2、A3、A5 各 12/12 通过,覆盖 A2/A3 拒绝、A5 放行、8 维超限以及空/含 0 no-op。 - 构建:A2 ascend910b、A3 ascend910_93、A5 ascend950 均完成 math_op_api_ut 构建。 - pre-commit:全部通过,包括 clang-format、codespell、OAT。 ## 文档更新 不涉及。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他 See merge request: cann/ops-math!6816 | 10 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 | |
产品名变更 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 | |
TopkV2算子编译时长优化 Co-authored-by: caoyan_huawei<caoyan11@huawei.com> # message auto-generated for no-merge-commit merge: !6919 merge cy_topk_compile_1031 into master TopkV2算子编译时长优化 Created-by: caoyan_huawei Commit-by: caoyan_huawei Merged-by: cann-robot Description: 变更摘要 本 PR 旨在优化 TopkV2 算子在 arch35 平台上的编译时长。核心思路是把原本在单次编译中展开的、按 N/K 全量递归模板实例化的标量选择分发,改为按 N 区间拆分到多个独立的 CANN 编译单元(tiling key),并把多处递归模板展开改写为 std::index_sequence 配合折叠表达式实现;同时把标量 N 维度的分发职责从 kernel 侧运行时判断前移到 host tiling 与 tiling key 注册。 主要改动 1. 标量 N 区间新增独立 tiling key:在 top_k_constant_var_simd.h 中新增 TOPK_GM_SCALAR_KEY_BASE(1000000)以及 TOPK_GM_SCALAR_N3_10_KEY、TOPK_GM_SCALAR_N11_18_KEY、TOPK_GM_SCALAR_N19_26_KEY、TOPK_GM_SCALAR_N27_32_KEY 与 TOPK_GM_SCALAR_N_PER_KEY(8),将 N 的取值域按每 8 个一组切分,使每个区间成为独立编译单元。 2. Host 侧 tiling key 计算:top_k_v2_tiling_arch35.cpp 的 TryTopKSmallAxisSort 改为按 lastAxis 计算 scalarKey 并传入 FillTopKDirectTiling,替代原先的 dataTypeKey,由 host 决定走哪个 N 区间 key。 3. Kernel 入口按 tiling key 分发 N 组:top_k_v2_apt.cpp 为四个 scalar 区间 key 注册 TILING_KEY_IS 与 KERNEL_TASK_TYPE(..., KERNEL_TYPE_MIX_AIV_1_0),并新增 GenerateTopKScalarGroup / TryGenerateTopKScalarN,从 TILING_KEY_VAR 反推 firstN 与 countN,在组内按 lastAxisNum 匹配后调用 DispatchTopKSimtGmScalarK。 4. 标量选择分发改为非递归展开:top_k_small_k_simt_gm_select.h 删除 DispatchTopKSimtGmScalarSelect / DispatchTopKSimtGmScalarK 的二分递归模板与 TryRunTopKSimtGmScalarSelect 运行时提前返回逻辑,改为按给定 N 用 std::make_index_sequence 展开 K 候选项,并以 || 折叠短路命中。 5. 排序与宽度/阈值分发改用折叠表达式:TopKSimtGmSortCandidates 拆出 TopKSimtGmExchangeCandidates 与 TopKSimtGmSortCandidateSteps,静态形状走 #pragma unroll 循环、非静态走索引序列折叠;DispatchTopKSimtGmWidth 与 DispatchTopKThresholdSimtGm 也由递归实例化改为 TryLaunchTopKSimtGmWidth / TryLaunchTopKThresholdSimtGm 的折叠表达式遍历。 6. Bitonic 路径的编译期裁剪:generateOpObject 中的 TOPK_DIRECT_MODE 分支被包进 if constexpr (!IS_BITONIC_SORT),避免 Bitonic 排序实例化时同时编译 direct GM 路径。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6919 | 8 days ago | |
fix test_geir_top_k_v2_d Co-authored-by: sujunwei3<sujunwei3@huawei.com> # message auto-generated for no-merge-commit merge: !7005 merge dev into master fix test_geir_top_k_v2_d Created-by: sujunwei3 Commit-by: sujunwei3 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 top_k_v2_d 的 GE IR 用例(test_geir_top_k_v2_d.cpp)两处缺陷: 1. **dtype 与 AICPU 派发表对齐**:TopKV2D 的 AICPU 运行时派发描述(canndev aicpu_kernel.ini / 安装态 aicpu_kernel.json 的 [TopKV2D])中 x/values 仅接受 DT_FLOAT16,原用例构造为 DT_FLOAT,叠加 ge.exec.exclude_engines=AiCore 强制走 AICPU,标准 CANN 环境构图必然失败。将 inDtype 由 DT_FLOAT 改为 DT_FLOAT16,x/values 随之对齐(proto.h 的 RealNumberType 同时兼容 FLOAT16)。 2. **float16 数据填充修复**:GenData 的 DT_FLOAT16 分支原将 uint16 整数位模式直接写入 FLOAT16 张量(按 float16 解读为次正规数),且忽略 value 参数。新增自包含转换函数 FloatToHalfBits()(IEEE 754 float→half、RNE 舍入、denormal 清零、溢出饱和),该分支统一按与其他分支一致的 value+i 规则填充真正的 float16 值。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> #4410 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 1. 用例编译验证: bash build.sh --run_example top_k_v2_d graph --noexec 通过(-Werror -Wall -Wextra -Wshadow 下无告警) 2. FloatToHalfBits 数值验证:与 aarch64 硬件 _Float16 转换基准 23/23 值逐位一致(含精确 tie 舍入到偶数、65504/65520 边界、负数、溢出饱和) 3. dtype 一致性核对:canndev aicpu_kernel.ini [TopKV2D] 与安装态 aicpu_kernel.json 均确认 x/values 仅接受 DT_FLOAT16 4. clang-format 合规 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7005 | 7 days ago | |
fix(TopKFusionPass): data_type DT_INT64 of input[1, k] is unsupported Co-authored-by: jerry_gd<jerry.luo@huawei.com> # message auto-generated for no-merge-commit merge: !7006 merge TopKFusionPass into master fix(TopKFusionPass): data_type DT_INT64 of input[1, k] is unsupported Created-by: jerry_gd Commit-by: jerry_gd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 修复TopKFusionPass 在两处场景下的 dtype 处理问题。其一,被各道门禁拒绝(x dtype 不合规、sorted=false、TopKD 后端拒绝)的 TopK 源节点如果 k 输入 desc 为 int64,原实现直接跳过,导致后续 AICPU 选型报 DT_INT64 ... unsupported;现以 int32 的 k desc 重建该节点。其二,AICPU 降级替换时 indices 输出 desc 改为无条件声明为 int32,避免从 values desc 继承 double 等不可选型 dtype。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4413 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 二级冒烟通过。 - ascend310B芯片下,跑相关k为int64的用例通过。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7006 | 7 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !6392 merge infershape-dtype into master feat: Infershape整改,25个math算子InferDataType注册迁移至op_graph目录(IMPL_OP独立链)及UT看护 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 作为 Infershape 整改的一部分,为 25 个 math 算子在 op_graph/ 目录新增 InferDataType(输出数据类型推导)独立注册及 UT 看护,共 50 个文件(+1757 -0,纯新增),对齐 ops-nn 仓方案(参考 PR#9839 样板): **注册方案(IMPL_OP 独立链):** - 每个算子新增 op_graph/<op>_graph_infer.cpp,通过 IMPL_OP(X).InferDataType(InferDataTypeX) 独立注册链注册,与 op_host 的 IMPL_OP_INFERSHAPE(InferShape)链解耦; - 涉及 25 个算子:abs_grad、add_n、assign_add、assign_sub、cast、cos、erf、exp、expm1、floor、log1p、logical_not、masked_scale、nan_to_num、neg、reciprocal、rsqrt、rsqrt_grad、sign、sin、sqrt、sqrt_grad、square、tanh、trunc; - 原 35 个算子中的另外 10 个(atan、ceil、is_finite、is_inf、is_nan、is_neg_inf、is_pos_inf、log、right_shift、round)的 op_graph 迁移已单独合入 master,不在本 PR 范围; **实现分类:** - 24 个算子输出 dtype 与第一个输入一致(SetOutputDataType(0, GetInputDataType(0))); - Cast 按属性推导并**新增枚举范围校验**:从 gert::RuntimeAttrs 读取 dst_type 属性,校验合法值域为 [0, DT_MAX) 且排除 DT_UNDEFINED(=28),非法值在推导处直接报错返回 GRAPH_FAILED(与 arch31 tiling 的 TransAclToGeDataType 白名单校验同款防御,防止非法值静默写入输出 desc)。 **UT 看护(25 个测试文件,26 个用例):** - 每算子新增 tests/ut/op_graph/test_<op>_graph_infer_pass.cpp,直接调用导出的 ops::InferDataTypeX 函数,通过 OpInferDataTypeContextBuilder 构造上下文,参数化断言推导返回 GRAPH_SUCCESS 且输出 dtype 符合预期; - Cast 参数化覆盖 dst_type 集合(含 FP16/FLOAT/BF16/INT 系列等),并新增非法值专项用例:dst_type 为 -1/DT_UNDEFINED/DT_MAX/999 时断言推导返回 GRAPH_FAILED。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - 关联 Issue #3792 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 25 个算子各新增 InferDataTypeTest 参数化 UT 用例(直接函数调用),全部通过; - Cast 额外新增非法 dst_type 专项用例(-1/DT_UNDEFINED/DT_MAX/999 断言 GRAPH_FAILED),覆盖枚举校验防御路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 无需文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6392 | 7 days ago | |
feat(infershape): 补齐 12 个算子 op_graph InferDataType 注册 Co-authored-by: yangjinhan<yangjinhan@huawei.com> # message auto-generated for no-merge-commit merge: !6644 merge feat/register-infer-datatype into master feat(infershape): 补齐 12 个算子 op_graph InferDataType 注册 Created-by: Ruyue1550 Commit-by: yangjinhan Merged-by: cann-robot Description: ## 描述 按 RT1.0 到 RT2.0 推导框架迁移方案第 1 步(补齐缺失的 InferDataType 注册,零行为变更)要求,为 12 个缺失 InferDataType 注册的算子新增 op_graph/*_graph_infer.cpp 注册文件。本次变更只新增文件、不修改任何存量代码,共 12 个文件、240 行。 ### 改动点 | # | 算子 | 新增文件 | 注册方式 | |---|------|---------|---------| | 1 | Pad | conversion/pad/op_graph/pad_graph_infer.cpp | InferDataTypeOutputSameAsInput | | 2 | PadV2 | conversion/pad_v2/op_graph/pad_v2_graph_infer.cpp | 同上 | | 3 | PadV3 | conversion/pad_v3/op_graph/pad_v3_graph_infer.cpp | 同上 | | 4 | PadV3Grad | conversion/pad_v3_grad/op_graph/pad_v3_grad_graph_infer.cpp | 同上 | | 5 | MirrorPad | conversion/mirror_pad/op_graph/mirror_pad_graph_infer.cpp | 同上 | | 6 | BroadcastTo | conversion/broadcast_to/op_graph/broadcast_to_graph_infer.cpp | 同上 | | 7 | Transpose | conversion/transpose/op_graph/transpose_graph_infer.cpp | 同上 | | 8 | Rint | math/rint/op_graph/rint_graph_infer.cpp | 同上 | | 9 | TruncateDiv | math/truncate_div/op_graph/truncate_div_graph_infer.cpp | 同上 | | 10 | Expand | math/expand/op_graph/expand_graph_infer.cpp | 同上 | | 11 | GetShape | math/get_shape/op_graph/get_shape_graph_infer.cpp | 专门推导,输出固定 INT32 | | 12 | HistogramFixedWidth | math/histogram_fixed_width/op_graph/histogram_fixed_width_graph_infer.cpp | 专门推导,输出固定 INT32 | ### 改动原因 1. 背景:RT2.0 V2 路径的 dtype 推导在未注册 InferDataType 时依赖 IR(proto/def 的 TensorType)符号映射兜底。以显式注册替代隐式兜底,使推导逻辑代码自明、不依赖 IR 声明的隐式行为,并为后续推导框架切换就位 op_graph 注册设施。 2. dtype 语义逐算子以 RT1.0 SetDataType 为基线核对(迁移原则:非算子语义变更): - 上述 #1-#10 共 10 个算子的 canndev RT1.0 实现均为 SetDataType(input_dtype)(取输入 x 的类型,const/非 const/未知 rank 各分支一致),输出 dtype 跟随输入,故注册仓内公共推导函数 InferDataTypeOutputSameAsInput,与本仓已有 Tile/Erfc/TruncateMod 注册同构; - GetShape、HistogramFixedWidth 的 RT1.0 实现硬编码 SetDataType(DT_INT32),输出为形状值/直方图计数,与输入 dtype 无关,故注册输出固定 INT32 的专门推导,与两者 proto/def 中 OUTPUT(y, TensorType({DT_INT32})) 声明一致。 3. 零行为变更:注册结果与 IR 符号推导兜底结果一致,不改变任何现网推导行为。 4. 构建零改动:op_graph/*.cpp 由 CMake GLOB_RECURSE 自动收集(cmake/func.cmake),无需修改 CMakeLists。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4099 ## 测试 - 本地无 CANN 构建环境,未执行编译与 UT,请通过门禁验证(评论 compile 触发 CI) - 已完成静态核对:13 个注册的 dtype 语义与 canndev RT1.0 SetDataType 逐分支一致、与各算子 proto/def 输出声明一致、与本仓已有同款注册(tile/erfc/truncate_mod/circular_pad)代码风格一致 - UT dtype 断言用例(断言注册结果=兜底结果)可随检视意见补充 ## 文档更新 无需更新文档(纯推导注册代码,无接口与行为变化) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6644 | 13 days ago | |
test: 18 算子 golden 新增 TestSpec 双注册与 third_party Co-authored-by: Xbying<2119046648@qq.com> # message auto-generated for no-merge-commit merge: !5789 merge 14 into master test: 18 算子 golden 新增 TestSpec 双注册与 third_party Created-by: 2301_81474000 Commit-by: Xbying Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - 16 个算子 golden 新增 __spec__(保留旧 __golden__,单一代码源双入口):Pad、PadV2、PadV3、MirrorPad、CircularPadGrad、PadV3GradReplication、DepthToSpace、SpaceToDepth、BatchToSpaceND、MatrixSetDiagV2、Sinc、TruncateDiv、TruncateMod、Erfc、Expand、Tile/TileD - 新建 2 个 golden:ReflectionPad3dGrad、Rint - 全部补 third_party 竞品实现(F.pad / aten backward / np.pad / torch.tile / torch.round 等),视图类输出加 .contiguous() - 顺带修复 4 处原 golden 缺陷(depth_to_space 死链与未定义名、pad_v2 0 维标量越界、pad_v3_grad_replication 部分维 pad、ruff E712/F841) - 全部经 TTK loader 双入口解析与 third_party↔golden 数值互验(BatchToSpaceND 因 golden 依赖 TF 仅做解析验证) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3226 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5789 | 29 days ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
feat(zero_op): aclnnInplaceZero支持UINT32/UINT64数据类型 Co-authored-by: zhouyuanhang30083383<zhouyuanhang4@h-partners.com> # message auto-generated for no-merge-commit merge: !7016 merge implace_zero_uint32_uint64_support into master feat(zero_op): aclnnInplaceZero支持UINT32/UINT64数据类型 Created-by: VoyageZhou Commit-by: zhouyuanhang30083383 Merged-by: cann-robot Description: ## 描述 为aclnnInplaceZero接口新增UINT32、UINT64数据类型支持,满足Atlas A2/A3上无符号整型Tensor的就地清零需求。 ZerosLike内核仅支持int32/int64,因此实现上通过aclOpExecutor::CreateView为uint32/uint64输入构造同shape、同stride的int32/int64视图,复用现有Contiguous + ZerosLike + ViewCopy流程写回同一块内存。类型转换只作用于视图,不修改调用方selfRef的dtype描述。 ## 关联的Issue [Issue 4419](https://gitcode.com/cann/ops-math/issues/4419) [Issue 4253](https://gitcode.com/cann/ops-math/issues/4253) ## 测试 - A2(910B3)+ CANN 9.3.0 真机ATK验证:uint32/uint64覆盖[1,4]、[19,1]、[3,5,7]、空tensor共9条用例全部通过,输出全0且dtype保持uint32/uint64,输入探针确认非零 - 存量289条ST用例回归全部通过(合计298/298) - 单元测试:l2ZeroTest 19/19通过(新增uint32/uint64用例,原以UINT32作为不支持类型的反例改为COMPLEX32);ZerosLike op_host UT 5/5通过 - clang-format 18.1.8 检查通过 ## 文档更新 同步更新 math/zero_op/docs/aclnnInplaceZero.md 与 math/zero_op/docs/aclnnInplaceZero_en.md,在Atlas A2/A3支持的数据类型中补充UINT32、UINT64。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7016 | 7 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 | |
增加A2 A3新算子支持 Co-authored-by: slx2008<shaolixin@huawei.com> # message auto-generated for no-merge-commit merge: !448 merge master into master 增加A2 A3新算子支持 Created-by: songkai111 Commit-by: slx2008 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!448 | 10 months ago |
| Files | Last commit | Last update |
|---|---|---|
| 13 days ago | ||
| 7 days ago | ||
| 10 days ago | ||
| 13 days ago | ||
| 29 days ago | ||
| 11 days ago | ||
| 27 days ago | ||
| 1 month ago | ||
| 11 days ago | ||
| 9 days ago | ||
| 11 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 10 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 10 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 1 month ago | ||
| 13 days ago | ||
| 12 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 17 days ago | ||
| 13 days ago | ||
| 1 month ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 11 days ago | ||
| 9 days ago | ||
| 16 days ago | ||
| 15 days ago | ||
| 7 days ago | ||
| 8 days ago | ||
| 7 days ago | ||
| 16 days ago | ||
| 11 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 12 days ago | ||
| 11 days ago | ||
| 12 days ago | ||
| 7 days ago | ||
| 10 days ago | ||
| 12 days ago | ||
| 13 days ago | ||
| 12 days ago | ||
| 20 days ago | ||
| 1 month ago | ||
| 13 days ago | ||
| 11 days ago | ||
| 8 days ago | ||
| 1 month ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 1 month ago | ||
| 12 days ago | ||
| 13 days ago | ||
| 10 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 18 days ago | ||
| 9 days ago | ||
| 12 days ago | ||
| 1 month ago | ||
| 9 days ago | ||
| 21 days ago | ||
| 13 days ago | ||
| 10 days ago | ||
| 16 days ago | ||
| 11 days ago | ||
| 12 days ago | ||
| 10 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 1 month ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 11 days ago | ||
| 25 days ago | ||
| 7 days ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 17 days ago | ||
| 22 days ago | ||
| 10 days ago | ||
| 10 days ago | ||
| 1 month ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 8 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 1 month ago | ||
| 8 days ago | ||
| 12 days ago | ||
| 21 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 10 days ago | ||
| 21 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 9 days ago | ||
| 12 days ago | ||
| 12 days ago | ||
| 13 days ago | ||
| 12 days ago | ||
| 12 days ago | ||
| 13 days ago | ||
| 10 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 1 month ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 11 days ago | ||
| 13 days ago | ||
| 11 days ago | ||
| 7 days ago | ||
| 11 days ago | ||
| 1 month ago | ||
| 7 days ago | ||
| 12 days ago | ||
| 7 days ago | ||
| 12 days ago | ||
| 7 days ago | ||
| 14 days ago | ||
| 12 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 11 days ago | ||
| 13 days ago | ||
| 22 days ago | ||
| 10 days ago | ||
| 7 days ago | ||
| 14 days ago | ||
| 13 days ago | ||
| 14 days ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 13 days ago | ||
| 14 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 14 days ago | ||
| 12 days ago | ||
| 16 days ago | ||
| 7 days ago | ||
| 20 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 14 days ago | ||
| 7 days ago | ||
| 12 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 12 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 14 days ago | ||
| 9 days ago | ||
| 13 days ago | ||
| 9 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 8 days ago | ||
| 13 days ago | ||
| 9 days ago | ||
| 9 days ago | ||
| 9 days ago | ||
| 14 days ago | ||
| 14 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 9 days ago | ||
| 9 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 26 days ago | ||
| 8 days ago | ||
| 15 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 26 days ago | ||
| 16 days ago | ||
| 10 days ago | ||
| 10 days ago | ||
| 12 days ago | ||
| 13 days ago | ||
| 12 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 10 days ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 8 days ago | ||
| 7 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 13 days ago | ||
| 7 days ago | ||
| 13 days ago | ||
| 29 days ago | ||
| 12 days ago | ||
| 12 days ago | ||
| 12 days ago | ||
| 7 days ago | ||
| 1 month ago | ||
| 10 months ago |