| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
迁移TransData 950的tiling/kernel,调整op_api目录 Co-authored-by: 马琦钧<maqijun@h-partners.com> # message auto-generated for no-merge-commit merge: !1169 merge mv_trans_data into master 迁移TransData 950的tiling/kernel,调整op_api目录 Created-by: maqijun Commit-by: 马琦钧 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 调整TransData为开源目录接口,开源kernel等相关内容 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/763 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:开源整改 See merge request: cann/ops-math!1169 | 6 个月前 | |
[CANNBot]新增SubMulConcat算子950实现 Co-authored-by: zhongheng<m202474569@hust.edu.cn> # message auto-generated for no-merge-commit merge: !4940 merge cherry-pick-mr-4934-1787305827898-auto into master [CANNBot]新增SubMulConcat算子950实现 Created-by: zhaozhongyao Commit-by: zhongheng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本PR为SubMulConcat内部融合算子新增Ascend950/arch35实现。 SubMulConcat计算公式为: \[ z=\operatorname{Concat}([x,\ y,\ x-y,\ x\odot y],\ axis=-1) \] 本PR不新增公开ACLNN、公开REG_OP/proto、PyTorch直调接口或直接构造SubMulConcat节点的GEIR接口。算子通过Sub、Mul和Concat/ConcatV2/ConcatV2D原始图触发FusionPass,融合后生成内部SubMulConcat节点并加载Ascend950 Kernel。 主要改动如下: 1. 新增Ascend950算子工程 - 新增 math/sub_mul_concat目录; - 仅交付ascend950/arch35实现; - 保留现有Ascend910B平台配置,不在本目录迁入arch32实现。 2. 新增内部图融合能力 - 新增SubMulConcatFusionPass; - 支持匹配Concat、ConcatV2和ConcatV2D; - 支持源图axis为-1或2,融合后统一规范化为-1; - 校验输入dtype、format、rank、Shape、输入来源、拼接顺序和消费者关系; - 不满足条件时不融合,保留原始基础算子图。 3. 新增Host实现 - 新增内部OpDef; - 新增InferShape和独立InferDataType注册; - 输出Shape由[N,H,W]推导为[N,H,4W]; - 新增Ascend950 Host Tiling; - 按row/chunk拆分任务并根据AIV核数和UB大小设置blockDim; - 对Shape、整数溢出、UB容量和Tiling Buffer进行防御检查; - workspace为0。 4. 新增Ascend950 RegBase Kernel - 使用四块Local Buffer保存x、y、sub和mul; - 使用RegTensor执行FLOAT32向量Sub和Mul; - 使用mask处理非对齐尾块; - 支持超宽行按chunk切分; - 使用硬事件完成MTE2、Vector和MTE3流水同步; - 输出布局为[x | y | x-y | x*y]。 5. 新增构建和二进制配置 - 新增Ascend950预编译Kernel配置; - 仓级ascendc_config.json在保留ascend910b的基础上追加ascend950; - Kernel编译开启VF融合相关选项。 6. 新增测试和文档 - 新增Host Tiling、InferShape、Kernel和FusionPass UT; - 新增完整FusionPass E2E矩阵及分析脚本; - 新增算子README; - 更新仓级算子列表。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/2791 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 已在Ascend950环境完成以下验证: ### 1. 构建与打包 - Ascend950独立构建:PASS; - Ascend950 package构建:PASS; - 生成并匹配固定release Kernel: SubMulConcat_7500b75a7b72832aed73eae305a78a12_high_performance。 ### 2. 单元测试 - Host/InferShape/Tiling UT:25/25 PASS; - Kernel UT:5/5 PASS; - FusionPass Graph UT:16/16 PASS; - 合计:46/46 PASS,无skip。 覆盖内容包括: - 对齐和非对齐Shape; - 空Tensor; - 宽行和多chunk; - UB边界; - 多核任务分发; - Shape不一致; - rank错误; - 整数溢出; - Tiling Buffer容量不足; - FusionPass正向匹配和负向拒绝。 ### 3. TTK精度验证 - 正向用例:240/240 PASS; - FAIL:0; - SKIP:0; - 负向用例:10/10按预期拒绝; - 确定性验证:PASS; - 全部正向用例命中Ascend950 release binary。 覆盖场景包括: - 空Tensor; - 小Shape和大Shape; - 对齐和非对齐; - Vector尾块; - 单核和多核; - 单chunk和多chunk; - 宽W边界; - 特殊值及数值边界。 ### 4. FusionPass E2E 完整源图FusionPass矩阵:25/25符合预期。 - 12个正向场景成功融合并加载SubMulConcat Kernel; - 10个不满足条件的场景正确保持不融合; - 3个非法公开图按预期拒绝; - 无skip、无N/A; - 已验证FusionPass替换、JSON匹配、Kernel注册和实际Kernel Launch链路。 ### 5. 性能回归 - Kernel性能用例:7/7 PASS; - Fusion性能用例:6/6 PASS; - 所有性能用例同时通过精度检查和内存检查。 ### 6. CPU/NPU/GPU三方验证 使用统一L0 Golden完成240条用例的三方验证: - NPU/CPU/GPU CrossCheck L0:240/240 PASS; - XPU执行状态:240/240 PASS; - Ascend950 Binary Match:240/240 PASS; - 精度失败:0; - XPU失败:0; - 224条非空Tensor保留原生A100性能数据; - 16条空Tensor的GPU性能结果按框架原始输出保留为NA,未人工回填。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 已在Ascend950环境完成以下验证: ### 1. 构建与打包 - Ascend950独立构建:PASS; - Ascend950 package构建:PASS; - 生成并匹配固定release Kernel: SubMulConcat_7500b75a7b72832aed73eae305a78a12_high_performance。 ### 2. 单元测试 - Host/InferShape/Tiling UT:25/25 PASS; - Kernel UT:5/5 PASS; - FusionPass Graph UT:16/16 PASS; - 合计:46/46 PASS,无skip。 覆盖内容包括: - 对齐和非对齐Shape; - 空Tensor; - 宽行和多chunk; - UB边界; - 多核任务分发; - Shape不一致; - rank错误; - 整数溢出; - Tiling Buffer容量不足; - FusionPass正向匹配和负向拒绝。 ### 3. TTK精度验证 - 正向用例:240/240 PASS; - FAIL:0; - SKIP:0; - 负向用例:10/10按预期拒绝; - 确定性验证:PASS; - 全部正向用例命中Ascend950 release binary。 覆盖场景包括: - 空Tensor; - 小Shape和大Shape; - 对齐和非对齐; - Vector尾块; - 单核和多核; - 单chunk和多chunk; - 宽W边界; - 特殊值及数值边界。 ### 4. FusionPass E2E 完整源图FusionPass矩阵:25/25符合预期。 - 12个正向场景成功融合并加载SubMulConcat Kernel; - 10个不满足条件的场景正确保持不融合; - 3个非法公开图按预期拒绝; - 无skip、无N/A; - 已验证FusionPass替换、JSON匹配、Kernel注册和实际Kernel Launch链路。 ### 5. 性能回归 - Kernel性能用例:7/7 PASS; - Fusion性能用例:6/6 PASS; - 所有性能用例同时通过精度检查和内存检查。 ### 6. CPU/NPU/GPU三方验证 使用统一L0 Golden完成240条用例的三方验证: - NPU/CPU/GPU CrossCheck L0:240/240 PASS; - XPU执行状态:240/240 PASS; - Ascend950 Binary Match:240/240 PASS; - 精度失败:0; - XPU失败:0; - 224条非空Tensor保留原生A100性能数据; - 16条空Tensor的GPU性能结果按框架原始输出保留为NA,未人工回填。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4940 | 23 天前 | |
init | 11 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 个月前 | ||
| 23 天前 | ||
| 11 个月前 |