| Files | Last commit | Last update |
|---|---|---|
fusion pass兼容性问题修复 Co-authored-by: pengyiming7<pengyiming7@h-partners.com> # message auto-generated for no-merge-commit merge: !3908 merge fusion_pass into master fusion pass兼容性问题修复 Created-by: pengyiming7 Commit-by: pengyiming7 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> fusion pass兼容性问题修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/2201 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3908 | 4 months ago | |
format: batch_to_space_nd 等算子代码格式化 Co-authored-by: zhanw_coding<zhanwang@huawei.com> # message auto-generated for no-merge-commit merge: !3822 merge fix-fmt into master format: batch_to_space_nd 等算子代码格式化 Created-by: zhanw_coding Commit-by: zhanw_coding Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> format: batch_to_space_nd 等算子代码格式化 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/2147 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 See merge request: cann/ops-math!3822 | 4 months 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: transpose 支持 ascend960dt/ascend960pr 平台及 4bit(HIF4/FP4)类型 Co-authored-by: zhanw_coding<zhanwang@huawei.com> # message auto-generated for no-merge-commit merge: !6332 merge ft-960dt-tp into master feat: transpose 支持 ascend960dt/ascend960pr 平台及 4bit(HIF4/FP4)类型 Created-by: zhanw_coding Commit-by: zhanw_coding Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Transpose(permute)算子接入新平台 ascend960dt、ascend960pr,并在此架构(arch92)下新增 4bit (HIF4/FP4)数据类型支持;同时适配新架构下的 NDDMA 搬运接口并开启双 buffer。 改动原因: - 现有 Transpose 未支持 ascend960dt / ascend960pr,且 x 的 dtype 列表不含 4bit 类型。 改动方法: 1. 平台接入 - CMakeLists.txt:COMPUTE_UNIT 增加 ascend960dt、ascend960pr,TILING_DIR 指向 arch35。 - transpose_def.cpp:新增 buildConfig() 统一构造 OpAICoreConfig,AddConfig("ascend960dt"/"ascend960pr")。 - 新增 op_host/config/{ascend960dt,ascend960pr}/{transpose_binary.json,transpose_simplified_key.ini}; scripts/kernel/binary_config/ascendc_config.json 登记 Transpose 的 compute_units 与编译选项。 2. 数据类型扩展(arch92) - x/y 新增 DT_FLOAT4_E2M1、DT_FLOAT4_E1M2 及 DT_HIFLOAT4(42)、DT_HIFLOAT4_SCALE(43);perm 支持 INT32/INT64。op_api(aclnn_permute / transpose)按 NpuArch::DAV_9201/DAV_9202 分支使用 arch92 dtype 列表。 3. host 侧 tiling - 新增 4bit 双切分 tiling(transpose_tiling_b4_dual_cut_arch35.{h,cpp}),新增 SplitMode::B4_DOUBLE_SPLIT=10009,触发条件为 4bit 且尾轴转置。 - transpose_tiling_arch35 新增 CheckB4Tiling/TryB4Tiling/AdjustShapeForB4/CheckB4ShapeInfo:4bit 非尾轴转置按 int8 view 处理;校验 4bit 输入/输出尾轴为偶数;NDDMA 缓冲数在 DAV_9201/9202 下取双缓冲(BIG_DIM 支持回退单缓冲)。 4. kernel 侧 - 新增 arch35/transpose_b4.h(TransposeHIF4 双切分模板):UB 内 CopyIn(Compact) → Cast fp4→bf16 → bf16 域转置 → Cast bf16→fp4 → CopyOut。 - transpose_apt.cpp 新增 TilingKey B4_DUAL_CUT=10009 分支;4bit 场景下各模板按 int8_t 实例化。 - NDDMA 相关模板(big_dim/cut_one_axis/cut_two_axis/tensor_move/n_last/transdata_5hd/5hd_021/ with_gather)在 __DAV_920R1__ 下使用带额外参数的 DataCopy/DataCopyPad 接口,base.h 新增 NDDMA_BUFFER_NUM(920R1 为 2),并按缓冲数切分 UB buffer。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3627 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 新增 UT:conversion/transpose/tests/ut/op_host/arch35/test_transpose_tiling_b4.cpp,覆盖 27 个用例, 含 2D~6D shape、多种 perm、尾轴/非尾轴转置、E2M1/E1M2、超大/极小 shape 等场景,校验 tiling 成功、 tiling key=10009 及 tiling data。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6332 | 26 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 4 months ago | ||
| 4 months ago | ||
| 15 days ago | ||
| 26 days ago |