| Files | Last commit | Last update |
|---|---|---|
[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 | 2 months ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
[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 | 2 months ago | |
[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 | 2 months ago | |
Math仓算子适配Ascend350平台 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !6372 merge dvlite-math-350-adapt into master Math仓算子适配Ascend350平台 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Math仓部分随机数算子在350平台进行适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4202 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6372 | 12 days ago | |
产品名变更 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5912 merge master into master 产品名变更 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AI处理器对应的产品型号名称更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3258](https://gitcode.com/cann/ops-math/issues/3258) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5912 | 1 month ago |
SubMulConcat
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | × |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | × |
| Atlas训练系列产品 | × |
功能说明
SubMulConcat是内部融合算子,由CANN既有图融合流程将Sub、Mul和Concat/ConcatV2/ConcatV2D组成的原始图融合生成;该算子没有公开ACLNN接口,也不支持用户直接构造SubMulConcat节点。
[general]本目录保留内部OpDef和InferShape,仅用于图融合后的内部节点;本次不交付融合规则,也不新增公开REG_OP或ACLNN接口。[existing]Atlas A2对应的Ascend910B实现继续由canndev维护;本次不将其arch32 Tiling、Kernel或UT迁入本目录。[RegBase-native]本目录新增且仅交付Ascend950的arch35 Host Tiling和基于RegTensor的Kernel实现。
对于数据类型均为float32、数据格式均为ND且形状均为[N,H,W][N,H,W][N,H,W]的输入xxx和yyy,计算公式为:
z=Concat([x, y, x−y, x⊙y], axis=−1),z∈RN×H×4W.z = \operatorname{Concat}\left([x,\ y,\ x-y,\ x\odot y],\ \mathrm{axis}=-1\right), \qquad z\in\mathbb{R}^{N\times H\times 4W}. z=Concat([x, y, x−y, x⊙y], axis=−1),z∈RN×H×4W.
其中⊙\odot⊙表示逐元素乘法。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 公式中的输入张量$x$,形状为$[N,H,W]$。 | FLOAT | ND |
| y | 输入 | 公式中的输入张量$y$,形状为$[N,H,W]$且与$x$相同。 | FLOAT | ND |
| z | 输出 | 公式中的输出张量$z$,形状为$[N,H,4W]$。 | FLOAT | ND |
| axis | 可选属性 | 内部拼接轴,默认值为-1。源图的拼接轴可为-1或2,融合后统一规范化为-1。 | INT64 | - |
约束说明
- 输入
x和y仅支持FLOAT数据类型和ND格式,必须为形状相同的三维张量[N,H,W][N,H,W][N,H,W]。 - 在既有图融合规则下,原始图必须按
x、y、x-y、x*y的顺序拼接4个输入,Concat/ConcatV2/ConcatV2D的拼接轴必须为-1或2。 - Sub和Mul的输出只能由该拼接节点消费,否则既有图融合规则不会生成SubMulConcat节点。
- SubMulConcat仅供既有图融合流程生成,没有公开ACLNN接口,不支持用户直接构造其内部节点。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| GE图模式 | - | 仅支持由CANN既有图融合流程将公开的Sub、Mul和Concat/ConcatV2/ConcatV2D原始图转换为内部节点;本目录不交付融合规则,也不提供SubMulConcat直接构造接口。 |
SubMulConcat不提供aclnn API或PyTorch API,也不提供GE图模式下直接构造内部节点的接口。