| fix: 对齐 ReduceStdV2Update 属性必选与可选语义 Co-authored-by: zhongheng<m202474569@hust.edu.cn> # message auto-generated for no-merge-commit merge: !4825 merge codex/reduce-std-v2-update-attr-consistency into master fix: 对齐 ReduceStdV2Update 属性必选与可选语义 Created-by: zhongheng Commit-by: zhongheng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ReduceStdV2Update 的算子原型与算子信息库对属性必选/可选语义的定义不够一致。 算子原型中: - dim 使用 REQUIRED_ATTR,为必选属性; - if_std、unbiased、keepdim、correction 使用 ATTR,为带默认值的可选属性。 本次修改在算子信息库中显式对齐上述语义: - dim 配置为 REQUIRED; - if_std、unbiased、keepdim、correction 配置为 OPTIONAL,并保持原有默认值不变。 同时完善 GE IR example: - 增加省略全部可选属性、验证默认值生效的正向用例; - 增加缺少必选 dim 属性时图编译失败的异常用例。 本次修改不涉及算子 kernel、tiling 或计算逻辑。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-math/issues/2719 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 代码检查及 pre-commit:PASS - Host UT:19/19 PASS - 算子编译及打包:PASS - TTK 全量测试:210/210 PASS - TTK 定向测试:14/14 PASS - mask 回归测试:2/2 PASS - GE IR 动态测试:6/6 PASS - GE IR 异常测试:12/12 PASS,包含缺少必选 dim 属性用例 - 可选属性默认值测试:PASS - 9 组关键形状在动态编译、静态编译及 release 二进制三种模式下共 27 条通路全部 PASS - 精度检查全部 PASS,内存越界检查全部为 OK,OK - 冒烟通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-math!4825 | 1 个月前 |
| [CANNBot]ReduceStdV2Update算子新增AscendC实现 Co-authored-by: zhongheng<m202474569@hust.edu.cn> # message auto-generated for no-merge-commit merge: !4353 merge cherry-pick-mr-4262-1785415278766-auto into master [CANNBot]ReduceStdV2Update算子新增AscendC实现 Created-by: zhaozhongyao Commit-by: zhongheng Merged-by: cann-robot Description: ## 描述 为ReduceStdV2Update算子新增Ascend C Kernel实现,目标平台ascend950(arch35),使该算子在Ascend 950上具备AscendC原生实现能力。 ReduceStdV2Update是CANN l0op内部算子,被aclnnVar/aclnnVarCorrection/aclnnVarMean在非regbase路径下内部调用,接收已计算好的均值mean,基于mean计算方差或标准差。此前该算子仅有TBE binary覆盖,无AscendC实现。 ### 计算公式 $$diff = x - \mu$$ $$sq\_sum = \sum_{i \in D} diff_i^2$$ $$var = \frac{sq\_sum}{N - correction}$$ $$output = \begin{cases} \sqrt{var} & \text{if } if\_std = true \\ var & \text{if } if\_std = false \end{cases}$$ 其中 $D$ 为归约维度集合,$N$ 为归约维度元素个数,$\mu$ 为外部传入的均值,correction=0 为有偏估计(分母 N),correction=1 为无偏估计(分母 N-1)。aclnn接口固定输出方差(if_std=false);GE IR图模式可通过if_std属性控制输出方差或标准差。 ### 调用链 aclnnVar(x, dim, correction, keepdim) → ReduceMean(x) → Expand(mean, x.shape) → l0op::ReduceStdV2Update(x, mean, dim, unbiased, keepdim) ← 本算子 → output_var - **op_kernel**:实现normal/group/empty三套模板。normal模板处理常规A×R 2D归约;group模板处理多核2D分核场景(A轴切分多核+R轴组内归约);empty模板处理空Tensor边界。FP16/BF16输入固定提升到FP32累加,结果转回原dtype。 - **op_host**:新增def.cpp(OpDef定义,dtype/format/属性配置)、infershape.cpp(shape推导,复用InferShape4ReduceStdFunc逻辑)、tiling_arch35.cpp(arch35 Tiling实现,标准4步pattern预处理+双切分+多核切分)。 - **op_graph**:新增proto.h(仅文档,REG_OP沿用canndev reduce_ops.h:1563已有注册,不重复定义)。 - **CMakeLists.txt**:改为add_all_modules_sources标准模板,配置ascend950 COMPUTE_UNIT和arch35 TILING_DIR,ACLNNTYPE=aclnn_exclude(L2接口不对外暴露,由aclnnVar等上层接口内部调用)。 - **examples**:新增GE IR图模式调用示例,覆盖FP32 var和std两个用例。 - **文档**:新增README.md(产品支持、功能说明、参数说明、约束说明、调用说明),更新docs/zh/op_list.md支持状态。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2327 ## 测试 - **编译验证**:ascend950平台编译通过,生成15份binary(5模板组合 × 3 dtype,动态TilingKey分发)。 - **GE IR通路验证**:run_example graph模式执行通过,覆盖FP32 var(if_std=false)和std(if_std=true)两个用例,验证算子在图模式下方差和标准差两条计算路径均正确。 - **Torch通路验证**:torch.var → aclnnVar → ReduceStdV2Update kernel调用链验证通过,3/3用例PASS(无偏方差、有偏方差、keepdim)。 - **TTK精度验证**:614条用例全部执行,通过率100%。覆盖FP32/FP16/BF16三种dtype、全维度归约/指定维度归约/负索引/keepdim/有偏无偏等场景。 - **白盒测试**:210条白盒用例,全部非空tensor,唯一参数组合率99.5%,覆盖if_std=true/unbiased=false/keepdim=true/负索引/多维度归约等场景,TilingKey覆盖率80%(4/5命中)。 ## 文档更新 - 新增math/reduce_std_v2_update/README.md:算子README,包含产品支持情况(6款产品)、功能说明、参数说明、约束说明、调用说明。 - 更新docs/zh/op_list.md:reduce_std_v2_update支持状态由×改为√(op_kernel=√, op_host=√, op_api=×, op_graph=√)。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4353 | 1 个月前 |
| legacy下线:为AdaCast/SignBitsUnpack/Sinh/Spence/Tan新增tiling/infer调试日志+op_graph InferDataType迁移 Co-authored-by: zhouxuan78<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !4498 merge master into master legacy下线:为AdaCast/SignBitsUnpack/Sinh/Spence/Tan新增tiling/infer调试日志+op_graph InferDataType迁移 Created-by: zhouxuan78 Commit-by: zhouxuan78 Merged-by: cann-robot Description: ## 描述 Legacy包下线整改:为AdaCast/SignBitsUnpack/Sinh/Spence/Tan 5个算子新增tiling/infer调试日志,补充spence op_graph InferDataType迁移。 ## 变更内容 - tiling入口新增OP_LOGD锚点日志,TilingData新增OP_LOGI日志 - InferShape新增OP_LOGI输出日志 - 补充spence_graph_infer.cpp(InferDataType迁移到op_graph,IMPL_OP注册) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> ## 测试 <!-- 描述您如何测试这些更改。--> ## 文档更新 <!-- 如果有文档更新,请在这里描述。--> ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:Legacy包下线整改 See merge request: cann/ops-math!4498 | 21 天前 |
| fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Co-authored-by: aqt666<2016141505@qq.com> # message auto-generated for no-merge-commit merge: !5722 merge codex/sign-bits-unpack-quality into master fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Created-by: aqt666 Commit-by: aqt666 Merged-by: cann-robot Description: ## 描述 **SignBitsUnpack** 1. 修复解包位序与 SignBitsPack 不一致的问题:逐字节执行 bit reverse,使输出按 MSB-first 顺序展开。 2. 修复符号极性相反的问题:统一为 bit 1 输出 -1、bit 0 输出 +1。 3. 在 InferShape 中增加解包元素总数的乘法溢出检查及 size 整除检查,避免非法 shape 被静默截断。 4. 同步更新算子 README、Host UT 和 Kernel UT,新增 Pack/Unpack 位序与极性兼容性测试。 5. ACLNN 对 dtype 参数增加显式白名单校验,仅允许既有的 FLOAT/FLOAT16,未新增任何 dtype。 6. README 和 ACLNN 文档明确区分 self=UINT8、size=int64_t 与 dtype 参数支持集,避免跨参数类型聚合误判。 7. 复核 size 约束:InferShape、Tiling、ACLNN、L0 均已实现 size > 0 校验,ACLNN/InferShape 同时校验整除关系,无需重复增加逻辑。 8. 将已有非法 dtype UT 名称修正为 ascend910B2_case_invalid_dtype。 ## 关联的Issue #3202 ## 测试 - SignBitsUnpack Host UT:17/17 通过。 - SignBitsUnpack Kernel UT:8/8 通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,明确 MSB-first 位序及 bit 1/0 对应的输出极性。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 > canndev Ascend 950 ini 清理由于属于 cann/canndev 仓库,不包含在本 ops-math PR 中。 **ReduceStdV2Update** 1. 完善空 Tensor 防御路径:保持 EMPTY_A 零操作,EMPTY_R 输出由固定 0 修正为 NaN,并与 normal 路径 N <= correction 时的 cof=NaN 语义保持一致。 2. 修复 EMPTY_R 路径 UB 预算超限:VECOUT 队列由双缓冲调整为单缓冲,最坏场景 UB 占用由 256KB 降至 192KB,低于 248KB 上限。 3. 去除 Kernel 入口文件 _apt 后缀,将 reduce_std_v2_update_apt.cpp 重命名为 reduce_std_v2_update.cpp,并同步更新算子注册配置。 4. 保留并验证 mean 的 dtype、format、shape 一致性校验,补充 EMPTY_A、EMPTY_R 和非正分母 NaN 场景 Host UT。 5. 同步更新 README 中的空 Tensor 与 NaN 边界语义。 测试: - ReduceStdV2Update Host UT:22/22 通过。 - ReduceStdV2Update Kernel 定向构建通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ### InferShape 补充加固 1. 修复非法 dim 在 InferShape 阶段被静默忽略的问题,越界轴现在返回失败;保留负轴、多轴和轴去重语义。 2. 增加静态场景下 mean.shape == x.shape 校验,并允许动态维度延后到运行期校验。 3. 增加输入 rank 不超过 8 的约束校验。 4. 修复 unknown-rank 动态 Shape 输出透传。 5. 补充多轴归约、越界轴、mean shape 不一致、unknown-rank 和 rank 9 的 InferShape UT。 补充测试: - PR 实际 head 上 ophost + opgraph 完整构建通过。 - ReduceStdV2Update Host UT:27/27 通过(Tiling 18 项、InferShape 9 项)。 - git diff --check 通过。 See merge request: cann/ops-math!5722 | 9 天前 |
| fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Co-authored-by: aqt666<2016141505@qq.com> # message auto-generated for no-merge-commit merge: !5722 merge codex/sign-bits-unpack-quality into master fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Created-by: aqt666 Commit-by: aqt666 Merged-by: cann-robot Description: ## 描述 **SignBitsUnpack** 1. 修复解包位序与 SignBitsPack 不一致的问题:逐字节执行 bit reverse,使输出按 MSB-first 顺序展开。 2. 修复符号极性相反的问题:统一为 bit 1 输出 -1、bit 0 输出 +1。 3. 在 InferShape 中增加解包元素总数的乘法溢出检查及 size 整除检查,避免非法 shape 被静默截断。 4. 同步更新算子 README、Host UT 和 Kernel UT,新增 Pack/Unpack 位序与极性兼容性测试。 5. ACLNN 对 dtype 参数增加显式白名单校验,仅允许既有的 FLOAT/FLOAT16,未新增任何 dtype。 6. README 和 ACLNN 文档明确区分 self=UINT8、size=int64_t 与 dtype 参数支持集,避免跨参数类型聚合误判。 7. 复核 size 约束:InferShape、Tiling、ACLNN、L0 均已实现 size > 0 校验,ACLNN/InferShape 同时校验整除关系,无需重复增加逻辑。 8. 将已有非法 dtype UT 名称修正为 ascend910B2_case_invalid_dtype。 ## 关联的Issue #3202 ## 测试 - SignBitsUnpack Host UT:17/17 通过。 - SignBitsUnpack Kernel UT:8/8 通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,明确 MSB-first 位序及 bit 1/0 对应的输出极性。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 > canndev Ascend 950 ini 清理由于属于 cann/canndev 仓库,不包含在本 ops-math PR 中。 **ReduceStdV2Update** 1. 完善空 Tensor 防御路径:保持 EMPTY_A 零操作,EMPTY_R 输出由固定 0 修正为 NaN,并与 normal 路径 N <= correction 时的 cof=NaN 语义保持一致。 2. 修复 EMPTY_R 路径 UB 预算超限:VECOUT 队列由双缓冲调整为单缓冲,最坏场景 UB 占用由 256KB 降至 192KB,低于 248KB 上限。 3. 去除 Kernel 入口文件 _apt 后缀,将 reduce_std_v2_update_apt.cpp 重命名为 reduce_std_v2_update.cpp,并同步更新算子注册配置。 4. 保留并验证 mean 的 dtype、format、shape 一致性校验,补充 EMPTY_A、EMPTY_R 和非正分母 NaN 场景 Host UT。 5. 同步更新 README 中的空 Tensor 与 NaN 边界语义。 测试: - ReduceStdV2Update Host UT:22/22 通过。 - ReduceStdV2Update Kernel 定向构建通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ### InferShape 补充加固 1. 修复非法 dim 在 InferShape 阶段被静默忽略的问题,越界轴现在返回失败;保留负轴、多轴和轴去重语义。 2. 增加静态场景下 mean.shape == x.shape 校验,并允许动态维度延后到运行期校验。 3. 增加输入 rank 不超过 8 的约束校验。 4. 修复 unknown-rank 动态 Shape 输出透传。 5. 补充多轴归约、越界轴、mean shape 不一致、unknown-rank 和 rank 9 的 InferShape UT。 补充测试: - PR 实际 head 上 ophost + opgraph 完整构建通过。 - ReduceStdV2Update Host UT:27/27 通过(Tiling 18 项、InferShape 9 项)。 - git diff --check 通过。 See merge request: cann/ops-math!5722 | 9 天前 |
| fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Co-authored-by: aqt666<2016141505@qq.com> # message auto-generated for no-merge-commit merge: !5722 merge codex/sign-bits-unpack-quality into master fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Created-by: aqt666 Commit-by: aqt666 Merged-by: cann-robot Description: ## 描述 **SignBitsUnpack** 1. 修复解包位序与 SignBitsPack 不一致的问题:逐字节执行 bit reverse,使输出按 MSB-first 顺序展开。 2. 修复符号极性相反的问题:统一为 bit 1 输出 -1、bit 0 输出 +1。 3. 在 InferShape 中增加解包元素总数的乘法溢出检查及 size 整除检查,避免非法 shape 被静默截断。 4. 同步更新算子 README、Host UT 和 Kernel UT,新增 Pack/Unpack 位序与极性兼容性测试。 5. ACLNN 对 dtype 参数增加显式白名单校验,仅允许既有的 FLOAT/FLOAT16,未新增任何 dtype。 6. README 和 ACLNN 文档明确区分 self=UINT8、size=int64_t 与 dtype 参数支持集,避免跨参数类型聚合误判。 7. 复核 size 约束:InferShape、Tiling、ACLNN、L0 均已实现 size > 0 校验,ACLNN/InferShape 同时校验整除关系,无需重复增加逻辑。 8. 将已有非法 dtype UT 名称修正为 ascend910B2_case_invalid_dtype。 ## 关联的Issue #3202 ## 测试 - SignBitsUnpack Host UT:17/17 通过。 - SignBitsUnpack Kernel UT:8/8 通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,明确 MSB-first 位序及 bit 1/0 对应的输出极性。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 > canndev Ascend 950 ini 清理由于属于 cann/canndev 仓库,不包含在本 ops-math PR 中。 **ReduceStdV2Update** 1. 完善空 Tensor 防御路径:保持 EMPTY_A 零操作,EMPTY_R 输出由固定 0 修正为 NaN,并与 normal 路径 N <= correction 时的 cof=NaN 语义保持一致。 2. 修复 EMPTY_R 路径 UB 预算超限:VECOUT 队列由双缓冲调整为单缓冲,最坏场景 UB 占用由 256KB 降至 192KB,低于 248KB 上限。 3. 去除 Kernel 入口文件 _apt 后缀,将 reduce_std_v2_update_apt.cpp 重命名为 reduce_std_v2_update.cpp,并同步更新算子注册配置。 4. 保留并验证 mean 的 dtype、format、shape 一致性校验,补充 EMPTY_A、EMPTY_R 和非正分母 NaN 场景 Host UT。 5. 同步更新 README 中的空 Tensor 与 NaN 边界语义。 测试: - ReduceStdV2Update Host UT:22/22 通过。 - ReduceStdV2Update Kernel 定向构建通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ### InferShape 补充加固 1. 修复非法 dim 在 InferShape 阶段被静默忽略的问题,越界轴现在返回失败;保留负轴、多轴和轴去重语义。 2. 增加静态场景下 mean.shape == x.shape 校验,并允许动态维度延后到运行期校验。 3. 增加输入 rank 不超过 8 的约束校验。 4. 修复 unknown-rank 动态 Shape 输出透传。 5. 补充多轴归约、越界轴、mean shape 不一致、unknown-rank 和 rank 9 的 InferShape UT。 补充测试: - PR 实际 head 上 ophost + opgraph 完整构建通过。 - ReduceStdV2Update Host UT:27/27 通过(Tiling 18 项、InferShape 9 项)。 - git diff --check 通过。 See merge request: cann/ops-math!5722 | 9 天前 |
| 新支持部分算子支持ascend350平台 Co-authored-by: Shichenyu<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !5733 merge 1030_2 into master 新支持部分算子支持ascend350平台 Created-by: gcw_DS4cmz2b Commit-by: Shichenyu Merged-by: cann-robot Description: ## 描述 为reducemax/reducemin等算子添加DVLite适配 ## 关联的Issue [部分算子缺少350适配](https://gitcode.com/cann/ops-math/issues/3265) ## 测试 算子二级冒烟通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5733 | 9 天前 |
| 产品名变更 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 | 9 天前 |