| Files | Last commit | Last update |
|---|---|---|
math仓英文合入 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !6772 merge master into master math仓英文合入 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 math仓master分支英文合入 ## 关联的Issue 关联issue:[4170](https://gitcode.com/cann/ops-math/issues/4170) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6772 | 13 days ago | |
refactor: 迁移 arch35 算子 Reg API、修正拼写并规范化日志文案 Co-authored-by: esok11<yangsifa@huawei.com> # message auto-generated for no-merge-commit merge: !5135 merge f082601 into master refactor: 迁移 arch35 算子 Reg API、修正拼写并规范化日志文案 Created-by: esok11 Commit-by: esok11 Merged-by: cann-robot Description: ## 描述 对 arch35 架构下多个算子进行 AscendC Reg API 迁移、命名拼写修正及日志文案规范化,共 46 个文件,涉及 conversion/ 与 math/ 下 15 个算子。 主要改动: - AscendC Reg API 迁移(arch35 kernel 代码,21 个 .h 文件): - 地址空间修饰符: __local_mem__ → __ubuf__ - Reg 数据搬运 API 细化:加载用 AscendC::Reg::LoadAlign(原 Reg::DataCopy 加载语义),存储用 AscendC::Reg::StoreAlign(原 Reg::DataCopy 存储语义) - 掩码操作 API 重命名:AscendC::Reg::MaskNot → AscendC::Reg::Not、AscendC::Reg::MaskAnd → AscendC::Reg::And - 移除冗余 using AscendC::Reg::DataCopy; 声明 - 命名拼写修正(op_host/arch35,3 个文件): - 方法名 TilingForReleatedTranspose → TilingForRelatedTranspose(Releated→Related) - 成员变量 isReleatedTranspsoe_ → isRelatedTranspose_(Releated→Related, Transpsoe→Transpose) - 同步修改 confusion_transpose_d、depth_to_space 中对该方法的调用 - 日志清理(examples、op_host、op_api,22 个文件): - 失败路径日志级别 INFO → ERROR(Initialize ge failed、Run graph failed、Finalize ir graph session failed 等) - 文案语法修正:only support → only supports、is: %s and %s → are: %s and %s、expect %f → expected %f、multiples's → multiples' - tile 示例代码宏定义缩进格式化 ### 改动原因 配合 AscendC Reg API 演进,将 arch35 算子迁移至新的地址空间修饰符与 LoadAlign/StoreAlign/Not/And API;修正 transpose 相关命名中的拼写错误;统一日志级别与文案规范,提升日志可读性与问题定位效率。 ### 改动方法 - kernel 侧:逐文件替换 __local_mem__→__ubuf__、Reg::DataCopy(加载)→Reg::LoadAlign、Reg::DataCopy(存储)→Reg::StoreAlign、Reg::MaskNot→Reg::Not、Reg::MaskAnd→Reg::And,不改变控制流。 - host 侧:重命名 TilingForReleatedTranspose→TilingForRelatedTranspose、isReleatedTranspsoe_→isRelatedTranspose_,同步所有调用点。 - 日志:修改 printf/OP_LOGE/OP_LOGW/OP_LOGI 文案与级别字符串,不改变校验逻辑。 ## 关联的Issue - #2916 ## 测试 本 PR 为 API 迁移、命名修正与日志清理,通过已有测试用例(含 arch35 tiling UT 与 examples 二级冒烟)回归验证。 ## 文档更新 本 PR 未包含文档更新。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:AscendC Reg API 迁移 + 命名拼写修正 + 日志规范化 See merge request: cann/ops-math!5135 | 2 months ago | |
refactor: 规范化多算子日志文案与错误提示信息 Co-authored-by: esok11<yangsifa@huawei.com> # message auto-generated for no-merge-commit merge: !4924 merge f0821 into master refactor: 规范化多算子日志文案与错误提示信息 Created-by: esok11 Commit-by: esok11 Merged-by: cann-robot Description: ## 描述 对多个算子的日志文案与错误提示信息进行规范化清理,涉及 depth_to_space、matrix_set_diag_v2、pad_v3、pad_v3_grad_replicate、pad_v3_grad_replication、transpose 共 6 个算子、11 个文件。 主要改动: - 修复语法错误: must greater than → must be greater than、must less than → must be less than - 修复拼写错误:dimention → dimension、strat → start - 序数词规范化:-2th → -2nd、-1th → -1st - 补充缺失动词/介词:cannot empty → cannot be empty、Failed to vector size → Failed to get vector size - 统一用语:on aicore situation → in AICore situation - 增强日志信息量:部分校验失败日志补充实际的 dim num / padding size 数值,便于定位问题 - 统一错误提示描述:wrong gradOutput shape. → gradOutput shape does not match the expected shape derived from input and padding. - 格式化:transpose_onnx_plugin.cpp 中 REGISTER_CUSTOM_OP 缩进对齐 ### 改动原因 原有日志文案存在语法错误、拼写错误和表述不清晰的问题,影响问题定位效率和用户体验。本次统一规范化,提升日志的可读性和准确性。 ### 改动方法 逐文件修改 OP_LOGE/OP_LOGW/OP_LOGI 等日志调用中的文案字符串,不改变任何控制流和校验逻辑。transpose_onnx_plugin.cpp 额外对 REGISTER_CUSTOM_OP 调用做了缩进格式化。 ## 关联的Issue - #2786 ## 测试 本 PR 仅修改日志文案字符串,不涉及逻辑变更,通过已有测试用例回归验证。 ## 文档更新 本 PR 未包含文档更新。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码规范化/日志文案清理 See merge request: cann/ops-math!4924 | 2 months ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 13 days 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 | 14 days ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 13 days ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 13 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 | 25 days ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 13 days ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 13 days ago |
Transpose
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
| Kirin X90处理器系列产品 | √ |
| Kirin 9030处理器系列产品 | √ |
功能说明
- 算子功能:对tensor的任意维度进行调换。如输入self是shape为[2, 3, 5]的tensor,dims为(2, 0, 1),则输出是shape为[5, 2, 3]的tensor。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入张量 | 需要进行维度置换的输入张量。 | 见下方 | ND |
| perm | 输入张量 | 表示x的维度的排列。取值需在[0,self的维度数量-1]范围内。 | INT64、INT32 | - |
| y | 输出 | 维度最大不超过8维,shape由dims和原self的shape共同决定,dtype需要与self一致。 | 同x | ND |
- GPU支持的数据类型:数据类型支持DT_BF16, DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_INT64, DT_INT32, DT_UINT8, DT_UINT16, DT_UINT32, DT_UINT64, DT_INT8, DT_INT16, DT_COMPLEX32, DT_COMPLEX64, DT_COMPLEX128, DT_QINT8, DT_QUINT8, DT_QINT16, DT_QUINT16, DT_QINT32, DT_BOOL, DT_HIFLOAT8, DT_FLOAT8_E5M2, DT_FLOAT8_E4M3FN。
- CPU支持的数据类型:数据类型支持同GPU。
约束说明
无
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_channel_shuffle | 通过aclnn_channel_shuffle接口方式调用transpose算子。 |
| aclnn接口 | test_aclnn_permute | 通过aclnn_permute接口方式调用transpose算子。 |