| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
math仓算子代码整改 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !881 merge math_op_back_1 into master math仓算子代码整改 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 math仓算子代码整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!881 | 7 个月前 | |
支持neg等单目运算算子下一代kernel实现 Co-authored-by: 张磊<zhanglei121@huawei.com> # message auto-generated for no-merge-commit merge: !494 merge master into master 支持neg等单目运算算子下一代kernel实现 Created-by: zl_hw Commit-by: 张磊 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!494 | 8 个月前 | |
feat: 抽取 broadcast_util 统一非连续广播门限,div/realdiv/greater/greater_equal 接入并扩大非连续支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !4935 merge nc-2803 into master feat: 抽取 broadcast_util 统一非连续广播门限,div/realdiv/greater/greater_equal 接入并扩大非连续支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增共享工具 math/common/op_api/broadcast_util(namespace op),集中实现广播类算子的非连续支持门限判定 IsBroadcastTemplateNonContiguousSupport,div / realdiv / greater / greater_equal 四个算子的 op_api 层 统一接入,替换原先各自分散的 IsRegBase + IsAiCoreSupport 简单组合判定。 ### 改动内容 1. **新增 broadcast_util.cpp/.h** - 对外接口:IsBroadcastTemplateNonContiguousSupport(inputs, outputShape) - 维度折叠:PadSingleInput 补维、ComputeBroadcastFlags 广播标记、 ComputeBroadcastCollapsePlan 合轴决策(KEEP/MERGE/ABSORB,含 IsAxesPairJointContiguous 相邻轴联合连续性校验)、CollapseSingleTensor 折叠执行 - 门限判定 CheckNonContiguousSupport:对齐 opbase broadcast_tiling 的 schMode 301-305 模板选择逻辑——广播轴 / 合轴后超 4D → NonContiguousBase(304/305);末两轴转置且 ≤3D → LastTranspose(303);末轴大且连续 / 小末轴大步幅 / 单核小数据三场景 → NLast(301/302); dimLimit 按各输入自身 dtype 计算(cache_line / dtype_size),与 opbase 决策树逐输入 判定一致;304 与 305 的细分选择交由 opbase tiling 按切分自定,host 侧不模拟 UB 容量切分;输出末轴 > 8192 时 NDDMA 效率下降,回退 Contiguous 转换路径(LastTranspose 与 NonContiguousBase 场景共用该门限,8192 为当前调优值) - 全连续输入短路跳过折叠分析;各判定分支注释标注最终 schMode 2. **realdiv.cpp/.h**:IsRealDivSupportNonContiguous 签名从 (self) 扩展为 (self, other, outputShape);other==nullptr(divs 标量路径)过 IsRegBase/IsAiCoreSupport 门限后直接放行;双 tensor 路径走广播模板门限。 3. **aclnn_div.cpp**: - HandleMixDataTypeDiv:mix-dtype 路径仅在 910B/910_93 使能,与 RegBase 非连续门限 芯片互斥,保持原有 Contiguous 处理不变 - HandleNotMixDataTypeDiv:拆分 CastDivInput / SelectDivInputByNC 辅助函数消除 self/other 重复处理;需 Cast 输入沿用 Cast 产物,不需 Cast 输入按门限结果选择 非连续直通(CreateView)或转连续(Contiguous) - divs 标量路径 other 传 nullptr 4. **greater.cpp / greater_equal.cpp/.h**:IsGreaterSupportNonContiguous / IsGreaterEqualSupportNonContiguous 委托 IsBroadcastTemplateNonContiguousSupport (greater 单输入;greater_equal 双输入且 other 可为 nullptr,新增 other dtype 联合检查)。 5. **aclnn_ge_tensor.cpp**:抽取 CastInput / SelectByNC / PrepareBinaryOpInputs 辅助函数, 消除 self/other 处理重复代码。 6. **构建接入**:新增 math/common/CMakeLists.txt(GLOB 编入 opapi obj); cmake/func.cmake 的 check_compiled_ops 增加 COMMON_DIRS="common" 白名单过滤公共目录; opbase.cmake 的 OPBASE_TAG_ID 更新至 opbase master 最新(f09beaf7,含 303 并行度门限)。 7. **UT**:test_aclnn_real_div.cpp 适配 IsRealDivSupportNonContiguous 新签名。 ### 改动原因 - 各算子非连续判定逻辑分散重复(IsRegBase + IsAiCoreSupport 简单组合),无法区分 广播/转置等细分场景,与 opbase 广播模板实际能力不匹配 - 收敛到统一门限后降低维护成本,同时使非连续放行条件与 opbase 广播模板能力精确对齐 ## 关联的Issue #2866 ## 测试 - 精度:二级冒烟 + 算子泛化通过 - 批量测试性能效果: | 接口 | 用例数 | 平均性能提升 | |------|--------|--------------| | aclnnAdds | 484 | 9.4% | | aclnnGeTensor | 656 | 21.5% | | aclnnGtScalar | 856 | 29% | | aclnnDiv | 601 | 54.5% | > **表注**: 批量测试统计口径为各接口非连续形态用例合入前后的平均性能提升比例。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4935 | 20 天前 | |
支持neg等单目运算算子下一代kernel实现 Co-authored-by: 张磊<zhanglei121@huawei.com> # message auto-generated for no-merge-commit merge: !494 merge master into master 支持neg等单目运算算子下一代kernel实现 Created-by: zl_hw Commit-by: 张磊 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!494 | 8 个月前 | |
feat: 抽取 broadcast_util 统一非连续广播门限,div/realdiv/greater/greater_equal 接入并扩大非连续支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !4935 merge nc-2803 into master feat: 抽取 broadcast_util 统一非连续广播门限,div/realdiv/greater/greater_equal 接入并扩大非连续支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增共享工具 math/common/op_api/broadcast_util(namespace op),集中实现广播类算子的非连续支持门限判定 IsBroadcastTemplateNonContiguousSupport,div / realdiv / greater / greater_equal 四个算子的 op_api 层 统一接入,替换原先各自分散的 IsRegBase + IsAiCoreSupport 简单组合判定。 ### 改动内容 1. **新增 broadcast_util.cpp/.h** - 对外接口:IsBroadcastTemplateNonContiguousSupport(inputs, outputShape) - 维度折叠:PadSingleInput 补维、ComputeBroadcastFlags 广播标记、 ComputeBroadcastCollapsePlan 合轴决策(KEEP/MERGE/ABSORB,含 IsAxesPairJointContiguous 相邻轴联合连续性校验)、CollapseSingleTensor 折叠执行 - 门限判定 CheckNonContiguousSupport:对齐 opbase broadcast_tiling 的 schMode 301-305 模板选择逻辑——广播轴 / 合轴后超 4D → NonContiguousBase(304/305);末两轴转置且 ≤3D → LastTranspose(303);末轴大且连续 / 小末轴大步幅 / 单核小数据三场景 → NLast(301/302); dimLimit 按各输入自身 dtype 计算(cache_line / dtype_size),与 opbase 决策树逐输入 判定一致;304 与 305 的细分选择交由 opbase tiling 按切分自定,host 侧不模拟 UB 容量切分;输出末轴 > 8192 时 NDDMA 效率下降,回退 Contiguous 转换路径(LastTranspose 与 NonContiguousBase 场景共用该门限,8192 为当前调优值) - 全连续输入短路跳过折叠分析;各判定分支注释标注最终 schMode 2. **realdiv.cpp/.h**:IsRealDivSupportNonContiguous 签名从 (self) 扩展为 (self, other, outputShape);other==nullptr(divs 标量路径)过 IsRegBase/IsAiCoreSupport 门限后直接放行;双 tensor 路径走广播模板门限。 3. **aclnn_div.cpp**: - HandleMixDataTypeDiv:mix-dtype 路径仅在 910B/910_93 使能,与 RegBase 非连续门限 芯片互斥,保持原有 Contiguous 处理不变 - HandleNotMixDataTypeDiv:拆分 CastDivInput / SelectDivInputByNC 辅助函数消除 self/other 重复处理;需 Cast 输入沿用 Cast 产物,不需 Cast 输入按门限结果选择 非连续直通(CreateView)或转连续(Contiguous) - divs 标量路径 other 传 nullptr 4. **greater.cpp / greater_equal.cpp/.h**:IsGreaterSupportNonContiguous / IsGreaterEqualSupportNonContiguous 委托 IsBroadcastTemplateNonContiguousSupport (greater 单输入;greater_equal 双输入且 other 可为 nullptr,新增 other dtype 联合检查)。 5. **aclnn_ge_tensor.cpp**:抽取 CastInput / SelectByNC / PrepareBinaryOpInputs 辅助函数, 消除 self/other 处理重复代码。 6. **构建接入**:新增 math/common/CMakeLists.txt(GLOB 编入 opapi obj); cmake/func.cmake 的 check_compiled_ops 增加 COMMON_DIRS="common" 白名单过滤公共目录; opbase.cmake 的 OPBASE_TAG_ID 更新至 opbase master 最新(f09beaf7,含 303 并行度门限)。 7. **UT**:test_aclnn_real_div.cpp 适配 IsRealDivSupportNonContiguous 新签名。 ### 改动原因 - 各算子非连续判定逻辑分散重复(IsRegBase + IsAiCoreSupport 简单组合),无法区分 广播/转置等细分场景,与 opbase 广播模板实际能力不匹配 - 收敛到统一门限后降低维护成本,同时使非连续放行条件与 opbase 广播模板能力精确对齐 ## 关联的Issue #2866 ## 测试 - 精度:二级冒烟 + 算子泛化通过 - 批量测试性能效果: | 接口 | 用例数 | 平均性能提升 | |------|--------|--------------| | aclnnAdds | 484 | 9.4% | | aclnnGeTensor | 656 | 21.5% | | aclnnGtScalar | 856 | 29% | | aclnnDiv | 601 | 54.5% | > **表注**: 批量测试统计口径为各接口非连续形态用例合入前后的平均性能提升比例。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4935 | 20 天前 | |
feat: 抽取 broadcast_util 统一非连续广播门限,div/realdiv/greater/greater_equal 接入并扩大非连续支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !4935 merge nc-2803 into master feat: 抽取 broadcast_util 统一非连续广播门限,div/realdiv/greater/greater_equal 接入并扩大非连续支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 新增共享工具 math/common/op_api/broadcast_util(namespace op),集中实现广播类算子的非连续支持门限判定 IsBroadcastTemplateNonContiguousSupport,div / realdiv / greater / greater_equal 四个算子的 op_api 层 统一接入,替换原先各自分散的 IsRegBase + IsAiCoreSupport 简单组合判定。 ### 改动内容 1. **新增 broadcast_util.cpp/.h** - 对外接口:IsBroadcastTemplateNonContiguousSupport(inputs, outputShape) - 维度折叠:PadSingleInput 补维、ComputeBroadcastFlags 广播标记、 ComputeBroadcastCollapsePlan 合轴决策(KEEP/MERGE/ABSORB,含 IsAxesPairJointContiguous 相邻轴联合连续性校验)、CollapseSingleTensor 折叠执行 - 门限判定 CheckNonContiguousSupport:对齐 opbase broadcast_tiling 的 schMode 301-305 模板选择逻辑——广播轴 / 合轴后超 4D → NonContiguousBase(304/305);末两轴转置且 ≤3D → LastTranspose(303);末轴大且连续 / 小末轴大步幅 / 单核小数据三场景 → NLast(301/302); dimLimit 按各输入自身 dtype 计算(cache_line / dtype_size),与 opbase 决策树逐输入 判定一致;304 与 305 的细分选择交由 opbase tiling 按切分自定,host 侧不模拟 UB 容量切分;输出末轴 > 8192 时 NDDMA 效率下降,回退 Contiguous 转换路径(LastTranspose 与 NonContiguousBase 场景共用该门限,8192 为当前调优值) - 全连续输入短路跳过折叠分析;各判定分支注释标注最终 schMode 2. **realdiv.cpp/.h**:IsRealDivSupportNonContiguous 签名从 (self) 扩展为 (self, other, outputShape);other==nullptr(divs 标量路径)过 IsRegBase/IsAiCoreSupport 门限后直接放行;双 tensor 路径走广播模板门限。 3. **aclnn_div.cpp**: - HandleMixDataTypeDiv:mix-dtype 路径仅在 910B/910_93 使能,与 RegBase 非连续门限 芯片互斥,保持原有 Contiguous 处理不变 - HandleNotMixDataTypeDiv:拆分 CastDivInput / SelectDivInputByNC 辅助函数消除 self/other 重复处理;需 Cast 输入沿用 Cast 产物,不需 Cast 输入按门限结果选择 非连续直通(CreateView)或转连续(Contiguous) - divs 标量路径 other 传 nullptr 4. **greater.cpp / greater_equal.cpp/.h**:IsGreaterSupportNonContiguous / IsGreaterEqualSupportNonContiguous 委托 IsBroadcastTemplateNonContiguousSupport (greater 单输入;greater_equal 双输入且 other 可为 nullptr,新增 other dtype 联合检查)。 5. **aclnn_ge_tensor.cpp**:抽取 CastInput / SelectByNC / PrepareBinaryOpInputs 辅助函数, 消除 self/other 处理重复代码。 6. **构建接入**:新增 math/common/CMakeLists.txt(GLOB 编入 opapi obj); cmake/func.cmake 的 check_compiled_ops 增加 COMMON_DIRS="common" 白名单过滤公共目录; opbase.cmake 的 OPBASE_TAG_ID 更新至 opbase master 最新(f09beaf7,含 303 并行度门限)。 7. **UT**:test_aclnn_real_div.cpp 适配 IsRealDivSupportNonContiguous 新签名。 ### 改动原因 - 各算子非连续判定逻辑分散重复(IsRegBase + IsAiCoreSupport 简单组合),无法区分 广播/转置等细分场景,与 opbase 广播模板实际能力不匹配 - 收敛到统一门限后降低维护成本,同时使非连续放行条件与 opbase 广播模板能力精确对齐 ## 关联的Issue #2866 ## 测试 - 精度:二级冒烟 + 算子泛化通过 - 批量测试性能效果: | 接口 | 用例数 | 平均性能提升 | |------|--------|--------------| | aclnnAdds | 484 | 9.4% | | aclnnGeTensor | 656 | 21.5% | | aclnnGtScalar | 856 | 29% | | aclnnDiv | 601 | 54.5% | > **表注**: 批量测试统计口径为各接口非连续形态用例合入前后的平均性能提升比例。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4935 | 20 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 个月前 | ||
| 8 个月前 | ||
| 20 天前 | ||
| 8 个月前 | ||
| 20 天前 | ||
| 20 天前 |