| Files | Last commit | Last update |
|---|---|---|
根据markdownlint规范修正md写作问题和link失效 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !6398 merge master into master 根据markdownlint规范修正md写作问题和link失效 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 根据markdownlint规范修正md写作问题和link失效 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#2272](https://gitcode.com/cann/ops-math/issues/2272) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 所有md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6398 | 28 days ago | |
修复PAD相关算子的资料错误 Co-authored-by: wjc<wangjincheng14@huawei.com> # message auto-generated for no-merge-commit merge: !5526 merge personal/wjc/doc_fix into master 修复PAD相关算子的资料错误 Created-by: Anthony0331 Commit-by: wjc Merged-by: cann-robot Description: ## 描述 修复 pad 类算子(CircularPad / ReflectionPad / ReplicationPad / ConstantPadNd)文档与示例代码中的 5 类问题: 1. **示例代码错误处理逻辑缺陷**: CHECK_RET(padding != nullptr, return ret) 中 ret 为上一步 CreateAclTensor 返回的成功值(0),aclCreateIntArray 失败时会以成功状态返回,掩盖错误。 统一修改为打印错误日志并返回 ACLNN_ERR_INTERNAL_ERROR。涉及: aclnnCircularPad3d.md、aclnnReflectionPad1d.md、aclnnReplicationPad3d.md 及 4 个对应 examples(reflection_pad_1d / replication_pad_3d / reflection_pad3d_grad / circular_pad 内嵌示例)。 2. **功能说明示例与 padding 声明不一致**:aclnnCircularPad3d.md 示例输出为 3 个 5×7 矩阵 (对应最后一维左右各填 2),与声明的 padding([1,1,1,1,1,1])(各填 1,应输出 5×5)不符。 经核算示例输出数值自洽,将 padding 声明修正为 [2,2,1,1,1,1]。 3. **printf 格式符可移植性问题**:示例以 %ld 格式化 int64_t,在 int64_t 映射为 long long 的平台(如 Windows/MSVC)属未定义行为,统一改为 PRId64 宏并补充 #include <inttypes.h>。 涉及 aclnnConstantPadNd.md、test_aclnn_constant_pad_nd.cpp、test_aclnn_replication_pad_3d.cpp。 4. **示例头文件错误**:test_aclnn_circular_pad.cpp 及 aclnnCircularPad2d.md 示例使用 printf 输出,但包含的是未使用的 <iostream>,替换为 <cstdio>。 5. **代码块语言标记不一致**:aclnnReflectionPad3dBackward.md 调用示例代码块标记 \\\Cpp 统一为 \\\cpp,与函数原型代码块一致。 另:test_aclnn_circular_pad.cpp、test_aclnn_reflection_pad3d_grad.cpp 按 pre-commit (clang-format)规范完成格式化。 ## 关联的Issue ## 测试 - 已对全部修改文件执行 pre-commit 检查(trailing-whitespace / end-of-file-fixer / clang-format / codespell 等均通过;OAT 检查依赖 bash,Windows 本地环境不可用) - 改动均为文档与示例代码纠错,不涉及算子实现逻辑,无需上板验证 ## 文档更新 - conversion/circular_pad/docs/aclnnCircularPad2d.md - conversion/circular_pad/docs/aclnnCircularPad3d.md - conversion/mirror_pad/docs/aclnnReflectionPad1d.md - conversion/pad_v3/docs/aclnnConstantPadNd.md - conversion/pad_v3/docs/aclnnReplicationPad3d.md - conversion/reflection_pad3d_grad/docs/aclnnReflectionPad3dBackward.md - 及上述算子 examples 下 5 个示例 .cpp 同步修改 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5526 | 2 months ago | |
迁移开源TF插件--conversion Co-authored-by: nextyale<yaochen15@huawei.com> # message auto-generated for no-merge-commit merge: !4310 merge transfer-conversion into master 迁移开源TF插件--conversion Created-by: nextyale Commit-by: nextyale Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:迁移TF插件 See merge request: cann/ops-math!4310 | 2 months ago | |
fix(conversion): 消除pad系列aclnn接口CheckShape coredump Co-authored-by: onanfield<tianshang@huawei.com> # message auto-generated for no-merge-commit merge: !6185 merge fix/pad-extreme-overflow into master fix(conversion): 消除pad系列aclnn接口CheckShape coredump Created-by: onanfield Commit-by: onanfield Merged-by: cann-robot Description: ## 描述 pad系列aclnn接口极端padding值先判后算防溢出,消除CheckShape coredump ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6185 | 1 month 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 | 15 days ago | |
feat: expand/tile/pad/pad_v3/mirror_pad/get_shape支持Ascend960PR Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !6568 merge dev_960 into master feat: expand/tile/pad/pad_v3/mirror_pad/get_shape支持Ascend960PR Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> expand/tile/pad/pad_v3/mirror_pad/get_shape支持Ascend960PR ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3836 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6568 | 20 days ago | |
refactor: pad/mirror_pad/pad_v2/pad_v3 apt 入口消重,PAD_SLICE 分发链收敛至 pad_slice.h Co-authored-by: Xbying<2119046648@qq.com> # message auto-generated for no-merge-commit merge: !5604 merge 12 into master refactor: pad/mirror_pad/pad_v2/pad_v3 apt 入口消重,PAD_SLICE 分发链收敛至 pad_slice.h Created-by: 2301_81474000 Commit-by: Xbying Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 按“公共逻辑单点维护”原则收敛上述重复:pad_v3_grad 公共头新增 PrepareSimtGradArrays、BuildWAxisMidLeftRightIndices(结构体传参)、CopyGradOutputToGM、SetEvent/WaitEvent;PAD_SLICE 宏与分发函数 RunPadSliceProcess 收敛至 pad_slice.h。各调用方改为一次调用或薄委托,模式特有逻辑(dim 分发链、chanHBase 推导、偏移数组)保留原地。全部改动经 opc 编译与 A/B 二进制对比验证,生成代码逐函数等价或逐字节一致,热路径零变化。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3150 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5604 | 1 month ago | |
fix: pad系列、depth_to_space UT问题 Co-authored-by: zhanw_coding<zhanwang@huawei.com> # message auto-generated for no-merge-commit merge: !6710 merge fix-ut into master fix: pad系列、depth_to_space UT问题 Created-by: zhanw_coding Commit-by: zhanw_coding Merged-by: cann-robot Description: ## 描述 修复 pad 系列(Pad / PadV2 / MirrorPad)与 CircularPadGrad、DepthToSpace 共 5 个算子 arch35 tiling UT 的过期期望,使其与上游 tiling 改动对齐,恢复 UT 通过。 改动原因: - commit 63be43b14(MR !5969「pad_v3/pad_v3_grad 去除tiling多余workspace申请」)将共享 tiling 的 workspace 由 16MB 改为 0,但复用同一 PadACTiling / PadV3GradACTiling 的 Pad、PadV2、MirrorPad、CircularPadGrad arch35 用例仍期望 16777216,未同步更新,导致 tiling_case_executor 断言 workspace 不符而失败。 - commit a3439d3c9(MR !6332「transpose 支持 ascend960dt/ascend960pr 平台及 4bit 类型」)在 TransposeOpTilingData 中新增 int64 字段 bigDimBufferNum,DepthToSpaceTilingData 内嵌复用该结构,depth_to_space 用例 expectTilingData 未同步,字段整体错位一位而失败。 改动方法: - 将上述非 slice 分支的 arch35 用例 expectWorkspaces 由 16777216 更新为 0;PadV2 的 slice 分支(tilingKey 10102/10150)在 tiling 中提前返回、不设置 workspace,仍保持 16777216。 - 将 depth_to_space 4 个用例的 expectTilingData 按新结构补齐 bigDimBufferNum 字段(SIMT 小 shape 路径默认值 1)。 ## 关联的Issue 本 PR 修复以下 36 个 UT 失败 issue: ### CircularPadGrad(conversion/circular_pad_grad) - https://gitcode.com/cann/ops-math/issues/4025 - https://gitcode.com/cann/ops-math/issues/4026 - https://gitcode.com/cann/ops-math/issues/4027 - https://gitcode.com/cann/ops-math/issues/4028 - https://gitcode.com/cann/ops-math/issues/4029 - https://gitcode.com/cann/ops-math/issues/4030 - https://gitcode.com/cann/ops-math/issues/4031 - https://gitcode.com/cann/ops-math/issues/4032 - https://gitcode.com/cann/ops-math/issues/4033 - https://gitcode.com/cann/ops-math/issues/4034 - https://gitcode.com/cann/ops-math/issues/4035 ### DepthToSpace(conversion/depth_to_space) - https://gitcode.com/cann/ops-math/issues/4036 - https://gitcode.com/cann/ops-math/issues/4037 - https://gitcode.com/cann/ops-math/issues/4038 - https://gitcode.com/cann/ops-math/issues/4039 ### MirrorPad(conversion/mirror_pad) - https://gitcode.com/cann/ops-math/issues/4041 ### Pad(conversion/pad) - https://gitcode.com/cann/ops-math/issues/4042 - https://gitcode.com/cann/ops-math/issues/4043 - https://gitcode.com/cann/ops-math/issues/4044 - https://gitcode.com/cann/ops-math/issues/4045 - https://gitcode.com/cann/ops-math/issues/4046 - https://gitcode.com/cann/ops-math/issues/4047 ### PadV2(conversion/pad_v2) - https://gitcode.com/cann/ops-math/issues/4048 - https://gitcode.com/cann/ops-math/issues/4049 - https://gitcode.com/cann/ops-math/issues/4050 - https://gitcode.com/cann/ops-math/issues/4051 - https://gitcode.com/cann/ops-math/issues/4052 - https://gitcode.com/cann/ops-math/issues/4053 - https://gitcode.com/cann/ops-math/issues/4054 - https://gitcode.com/cann/ops-math/issues/4055 - https://gitcode.com/cann/ops-math/issues/4056 - https://gitcode.com/cann/ops-math/issues/4057 - https://gitcode.com/cann/ops-math/issues/4058 - https://gitcode.com/cann/ops-math/issues/4059 - https://gitcode.com/cann/ops-math/issues/4060 - https://gitcode.com/cann/ops-math/issues/4061 ## 测试 对每个算子执行 bash build.sh -u --ophost --soc=ascend950 --ops=<算子名>,全部通过: | 算子 | 结果 | |------|------| | circular_pad_grad | 15/15 PASSED | | depth_to_space | 11/11 PASSED | | mirror_pad | 10/10 PASSED | | pad | 16/16 PASSED | | pad_v2 | 43/43 PASSED | ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6710 | 16 days ago | |
feat: expand/tile/pad/pad_v3/mirror_pad/get_shape支持Ascend960PR Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !6568 merge dev_960 into master feat: expand/tile/pad/pad_v3/mirror_pad/get_shape支持Ascend960PR Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> expand/tile/pad/pad_v3/mirror_pad/get_shape支持Ascend960PR ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3836 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6568 | 20 days ago | |
docs(mirror-pad): 补齐 Ascend 950 支持类型说明 Co-authored-by: little_apple_12<020716ljh@gmail.com> # message auto-generated for no-merge-commit merge: !6102 merge fix/ops-math-2026-10-02-002 into master docs(mirror-pad): 补齐 Ascend 950 支持类型说明 Created-by: little_apple_12 Commit-by: little_apple_12 Merged-by: cann-robot Description: ## 描述 根因是 conversion/mirror_pad/README.md 的 x、y 类型表仍停留在 FP8 支持实现合入前,遗漏了已注册且列入 Ascend 950 ACLNN 支持清单的 HIFLOAT8、FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT8_E8M0。本 PR 仅同步总览文档,不改变算子实现或运行行为。 逐 hunk 对账: - 第一个 diff hunk:在 x 输入类型单元格加入上述四种类型。 - 第二个 diff hunk:在 y 输出类型单元格加入同样四种类型,并在表格后注明它们仅受 Ascend 950PR/950DT 支持、其他产品不支持,避免将该列表误读为全产品通用。 ### 关联的Issue 关联 issue #3386 ## 测试 在仓库根目录执行以下静态一致性检查;逐项确认实现注册、Ascend 950 ACLNN 支持列表、README 的 x/y 单元格及产品范围说明: bash python3 - <<'PY' from pathlib import Path import re root = Path('conversion/mirror_pad') readme = (root / 'README.md').read_text(encoding='utf-8') host = (root / 'op_host/mirror_pad_def.cpp').read_text(encoding='utf-8') api = (root / 'op_api/aclnn_reflection_pad1d.cpp').read_text(encoding='utf-8') api = api.split('ASCEND950_DTYPE_DTYPE_SUPPORT_LIST', 1)[1].split('};', 1)[0] dtypes = ('HIFLOAT8', 'FLOAT8_E5M2', 'FLOAT8_E4M3FN', 'FLOAT8_E8M0') rows = {} for side in ('x', 'y'): row = readme.split(f'<td>{side}</td>', 1)[1].split('</tr>', 1)[0] rows[side] = re.findall(r'<td>(.*?)</td>', row, flags=re.S)[2] print(f'{side}_dtype_cell_contains_all={all(dtype in rows[side] for dtype in dtypes)}') for dtype in dtypes: print(f'{dtype}: host_op_registered={f"DT_{dtype}" in host}; aclnn_ascend950_allowed={f"DT_{dtype}" in api}; README_x={dtype in rows["x"]}; README_y={dtype in rows["y"]}') scope_ok = 'Ascend 950PR&950DT系列产品' in readme and '其余产品不支持' in readme print(f'product_scope_note={scope_ok}') assert all(dtype in rows['x'] and dtype in rows['y'] for dtype in dtypes) assert all(f'DT_{dtype}' in host and f'DT_{dtype}' in api for dtype in dtypes) assert scope_ok PY 真实输出: text x_dtype_cell_contains_all=True y_dtype_cell_contains_all=True HIFLOAT8: host_op_registered=True; aclnn_ascend950_allowed=True; README_x=True; README_y=True FLOAT8_E5M2: host_op_registered=True; aclnn_ascend950_allowed=True; README_x=True; README_y=True FLOAT8_E4M3FN: host_op_registered=True; aclnn_ascend950_allowed=True; README_x=True; README_y=True FLOAT8_E8M0: host_op_registered=True; aclnn_ascend950_allowed=True; README_x=True; README_y=True product_scope_note=True git diff --check 通过(退出码 0,无输出)。未运行算子构建或 NPU 测试:改动仅为 Markdown,静态检查覆盖本次修复。 ## 文档更新 仅更新 conversion/mirror_pad/README.md 的 x/y 类型清单并补充 Ascend 950PR/950DT 产品范围说明;无其他文档或代码改动。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ### 当前PR是否有AI参与: [] 否 [x] 是 __1. Agent平台信息: Codex CLI 0.153.4 __2. 模型信息: gpt-5.6-luna __3. Prompt摘要: 独立复现 issue #3386 所述 MirrorPad 类型文档缺项,核对实现注册和 Ascend 950 ACLNN 产品范围,仅补齐 x/y 类型清单并逐 hunk 验证后按 PR-first 流程提交。 ### 希望检视人员了解: 1. 人工提供既有 issue #3386、目标分支及修复要求;本轮源码复现、逐项 diff 对账和静态验证由 Agent 执行,提交者负责复核最终改动并跟进评审。 2. 改动仅涉及文档,没有进行 NPU 运行测试;测试命令与实际输出已列于上文。 See merge request: cann/ops-math!6102 | 30 days ago |
MirrorPad
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:以镜像方式填充输入tensor的边界。
-
示例:
输入tensor([[0,1,2]]) paddings([2,2]) 1.mode("REFLECT") 输出为([[2,1,0,1,2,1,0]]) 2.mode("SYMMETRIC") 输出为([[1,0,0,1,2,2,1]])
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待进行镜像扩充的原始tensor。 | INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BF16, FLOAT16, FLOAT, DOUBLE, BOOL, HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN, FLOAT8_E8M0 | ND |
| paddings | 输入 | 扩充的配置。 | INT32、INT64 | ND |
| mode | 属性 | 填充模式,可以是反射"REFLECT"或对称"SYMMETRIC"。 | string | ND |
| y | 输出 | 进行扩充后的tensor。 | INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BF16, FLOAT16, FLOAT, DOUBLE, BOOL, HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN, FLOAT8_E8M0 | ND |
注:HIFLOAT8、FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT8_E8M0仅在Ascend 950PR&950DT系列产品上支持,其余产品不支持。
-
paddings paddings的第0维表示对输入x第0维的扩充配置,以此类推。每一行表示对应维度上的填充数量(左/右、前/后、上/下等)。对于每一行[a, b],a表示在该维度的开头填充的元素数,b表示在该维度的末尾填充的元素数。
-
mode REFLECT模式下,镜像时不会包括边界本身。 SYMMETRIC模式下,镜像时会包含边界本身,示例中可见。
约束说明
paddings的形状需要为[rank, 2],其中rank为输入x的维度数。 对于每一行paddings[i],填充元素数不得超过其对应x[i]的元素数。即在反射模式下,paddings[i][0]和paddings[i][1] <= x[i].length-1;在对称模式下,paddings[i][0]和paddings[i][1] <= x[i].length。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_reflection_pad_1d | 通过aclnnReflectionPad1d接口方式调用REFLECT情况下的mirror_pad算子,填充输入tensor的最后一维。 |
| aclnn调用 | test_aclnn_reflection_pad_2d | 通过aclnnReflectionPad2d接口方式调用REFLECT情况下的mirror_pad算子,填充输入tensor的最后两维。 |
| aclnn调用 | test_aclnn_reflection_pad_3d | 通过aclnnReflectionPad3d接口方式调用REFLECT情况下的mirror_pad算子,填充输入tensor的最后三维。 |