| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(foreach): Abs/Acos/Asin/Atan/Cos/Cosh 6个一元接口改手写支持非连续输入输出 Co-authored-by: luoyufan7<luoyufan7@h-partners.com> # message auto-generated for no-merge-commit merge: !11951 merge feat/foreach-unary-noncontig-1 into master feat(foreach): Abs/Acos/Asin/Atan/Cos/Cosh 6个一元接口改手写支持非连续输入输出 Created-by: luoyufan7 Commit-by: luoyufan7 Merged-by: cann-robot Description: ## 描述 ### 改动原因 O1 图模式/eager 模式存在非连续输入输出场景,以下 6 个一元接口当前为自动生成实现(无手写 aclnn 层),输出为非连续 tensor 时 kernel 按连续线性布局写入,结果落在错误位置(详见关联 issue)。 ### 改动方法 | 接口 | 改造 | |---|---| | aclnnForeachAbs / Acos / Asin / Atan / Cos / Cosh | 自动生成改手写:新建 l0op 桥接(OP_TYPE_REGISTER + ADD_TO_LAUNCHER_LIST_AICORE,复用现有 kernel)+ 手写 aclnn 层;CMakeLists 由 aclnn 改 aclnn_exclude 并补 foreach_utils include 目录 | - 非连续支持复用 foreach_utils/op_host/foreach_contiguous_helper.h:输入端 ForeachMakeContiguousTensorList,输出端转连续 buffer 计算后 ForeachViewCopyToOutputTensorList 按 stride 回写(已连续输出直接写入) - CheckParams 含 CheckTensorListNotNull(foreach_null_check_helper.h) - dtype 校验按各算子 def.cpp(FLOAT16/FLOAT/BF16) - 各算子 tests/ut/op_host/CMakeLists.txt 补 foreach(SUB_DIR) 子目录遍历(存量缺失,其 op_api UT 从未被构建收集) - kernel/tiling/binary 不变 ## 关联的Issue Refs #6677(一元系列共 4 批共用本 issue,最后一批合入时关闭) ## 测试 - A2(910B3)build.sh --soc=ascend910b --ops=<6算子+foreach_utils> 真机 op 构建:Build binary success - A2 build.sh -u --opapi --soc=ascend910b --ut_mode=fast:6 tests PASSED / 0 FAILED(6 个新增非连续输入+非连续输出用例,六参 TensorDesc 构造 strides/offset/storageShape) - pre-commit 全部 hook 通过(clang-format / cmake-format / codespell / OAT 合规) ## 文档更新 - 6 个接口文档 docs/aclnnForeach<Op>.md:out 的"非连续Tensor"标记由 × 改为 √ ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11951 | 17 天前 |