| Files | Last commit | Last update |
|---|---|---|
fix: 补全lerp算子aclnn接口空Tensor短路判断的end和weight输入检查 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !5584 merge fix_issue_11 into master fix: 补全lerp算子aclnn接口空Tensor短路判断的end和weight输入检查 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 lerp 算子 aclnn 接口(aclnnLerp/aclnnInplaceLerp/aclnnLerps/aclnnInplaceLerps)的空 Tensor 短路判断仅检查了 self: cpp if (self->IsEmpty()) { return ACLNN_SUCCESS; } 广播规则允许 size=1 的维与 size=0 的维广播(结果为 0 维)。当 self 非空而 end/weight 为空时(如 self={2,1}、end={2,0}、out={2,0}): 1. CheckShape 通过(broadcast 结果与 out 一致) 2. 空短路不生效,继续下发 kernel 3. 公共 BroadcastTiling 遇 0 维输出直接返回 GRAPH_FAILED(dimLength is zero),导致运行时报内部错误,而非按空输出语义返回成功 仓内广播类算子(aclnn_add、aclnn_s_where、aclnn_addcmul 等)均对所有广播输入做空检查。 修改内容: - math/lerp/op_api/aclnn_lerp_tensor.cpp:空 Tensor 判断补全为 self/end/weight 任一为空即短路返回 - math/lerp/op_api/aclnn_lerp_scalar.cpp:空 Tensor 判断补全为 self/end 任一为空即短路返回 ## 关联的Issue #3169 https://gitcode.com/cann/ops-math/issues/3169 ## 测试 - 补充 UT:case_22_empty_end_weight_input(aclnnLerp)、case_19_empty_end_input(aclnnLerps),覆盖 self 非空但 end/weight 为空的广播场景,期望返回 ACL_SUCCESS - CI 流水线编译通过 ## 文档更新 无 ## 类型标签 - [x] Bug修复 See merge request: cann/ops-math!5584 | 2 months ago | |
fix: 清理 Math 独立实现路径的未使用 workspace Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !6711 merge fix/math-independent-workspace into master fix: 清理 Math 独立实现路径的未使用 workspace Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 修改内容 清理 Lerp、Muls、Pow、Select SIMT、TanhGrad 独立实现路径中未使用的 workspace 申请。没有额外用户 workspace 的路径将申请量设为 0;kernel 入口允许零 workspace 下继续执行计算。保留内部 kernel 的 workspace 参数及原调用形式。 | 算子/路径 | 修改位置 | 修改内容及影响 | | --- | --- | --- | | Lerp | math/lerp/op_host/arch35/lerp_tiling_arch35.cpp | WORKSPACE_SIZE 从 32 改为 0,保留常量及原赋值方式;不改变 tiling key 和计算分支。 | | Muls | math/muls/op_host/arch35/muls_tiling_arch35.cpp | 将申报的 workspace 从固定系统预留量改为 0,计算和 tiling 策略保持原样。 | | Pow | math/pow/op_host/arch35/pow_tiling_arch35.cpp | GetWorkspaceSize 中将申请量设为 0,移除仅为查询系统 workspace 大小使用的平台信息获取和 include。 | | Pow | math/pow/op_kernel/pow_apt.cpp | 移除 workspace 为空时直接返回的判断,以及无用的系统 workspace 设置、用户 workspace 地址转换,使零 workspace 时仍执行原计算分支。内部 Init 接口及 workspace 参数保持原样。 | | Select SIMT | math/select/op_host/arch35/select_simt_tiling.cpp | WORKSPACE_SIZE 从 32 改为 0,保留常量和赋值形式;只修改 SIMT 路径。 | | TanhGrad | math/tanh_grad/op_host/arch35/tanh_grad_tiling_arch35.cpp | WORKSPACE_SIZE 从 32 改为 0,保留常量和赋值形式,不调整原计算流程。 | 同时原样包含 Lerp、Muls、Pow、TanhGrad 对应的 4 个算子 Host UT 文件修改,将 workspace 期望值更新为 0。本 PR 共 10 个文件。 ## 与 BRC PR 的边界 本 PR 为原 [PR #6242](https://gitcode.com/cann/ops-math/pull/6242) 的独立实现部分;公共 BroadcastBaseTiling(BRC)模板相关的 29 个算子 UT 文件留在 #6242。 Select 的现有 UT 命中 BRC 路径,原期望为 16 MiB,其断言修改留在 #6242;本 PR 的 Select 修改仅为 SIMT 独立实现。Lerp、Pow、TanhGrad 中使用底层 BroadcastTiling 的实现按其自行申报 workspace 的实际修改归入本 PR。 两个 PR 使用相同基线,各一次提交,改动文件互不重叠;两份补丁合并后的 Git tree 与拆分前提交 6875c10f04af0cc8f012cba867892a1f660702d5 完全一致。拆分未改变任何代码内容、排版或换行格式。 ## 验证 拆分前整体联调版本在 CANN 9.2.0、已接入 Broadcast workspace 补丁的依赖环境下,完成 Host UT 对象编译、静态归档重建、最终链接及运行,333/333 通过,39 个改动文件 pre-commit 通过。 该结果属于拆分前整体版本,不替代本 PR 拆分后的线上 CI。Pow arch35 原有用例整段处于注释中,其 workspace 断言未实际执行。 ## 关联 公共 BRC 算子 UT 更新:[PR #6242](https://gitcode.com/cann/ops-math/pull/6242)。本 PR 不修改 CMake、公共 UT 框架或远程依赖版本。 See merge request: cann/ops-math!6711 | 19 days ago |