Closed
[Requirement|需求建议]: concat 算子支持 ascend960 多核调整 #4098
hw-zhangpanpanAdd on  14 days agoClosed at  13 days ago
hw-zhangpanpan
14 days ago Create

一、背景信息 (必填)

concat 算子(conversion/concat/op_host/arch35/concat_tiling_arch35.cpp)在 ascend960平台上的 tiling 未充分利用多核并行能力。当catDim0大于核数 totalCoreNum 时,当前 blockFactor 直接由 uoDim0 与 totalCoreNum 计算,不能针对 ascend960 的核数做进一步的多核分配,导致多核资源利用不充分、性能受限。

二、价值/作用 (必填)

在 ascend960 平台下,将合轴后的0轴任务分配为更接近 totalCoreNum 的整数倍块,提升多核并行度与 concat 算子的整体性能,同时不影响其他平台的既有行为。

三、设计方案 (必填)

3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)
3.2 总体设计

在 arch35 concat tiling 中增加 ascend960 多核增强分支:

  1. 新增 IsMultiCoreBoost(context):通过 context->GetPlatformInfo() 获取平台信息,platform_ascendc::PlatformAscendC(platformInfo).GetCurNpuArch() 判定架构是否为 ascend960,据此返回是否启用多核增强;platformInfo 为空时返回 false。
  2. ConcatTilingParam 新增 bool multiCoreBoost{false} 字段,在 CalcBaseTilingParam 中由 IsMultiCoreBoost(context) 赋值。
  3. 在 TilingBlock 中,当 multiCoreBoost && param.catDim0 > param.totalCoreNum 时执行多核分配:
    • targetBlockFactor = (uoDim0 + totalCoreNum - 1) / totalCoreNum
    • targetBlocks = targetBlockFactor * totalCoreNum
    • newUbFactorDim0 = (catDim0 + targetBlocks - 1) / targetBlocks
    • 当 newUbFactorDim0 >= 1 && newUbFactorDim0 < param.ubFactorDim0 时,更新 ubFactorDim0、uoDim0、tailUbFactorDim0,使块数向 totalCoreNum 的整数倍对齐。
  4. 非 ascend960 平台不受影响(multiCoreBoost 为 false,保持原逻辑)。
3.2.1 算子支持的数据类型

保持不变(concat 既有支持的数据类型,本次不新增)。

3.2.2 host侧设计

tiling 多核增强逻辑落在 concat_tiling_arch35.cpp / concat_tiling_arch35.h,仅 host 侧 tiling 变更。

3.2.3 kernel侧设计

无 kernel 侧代码变更(仅 host tiling 调整)。

3.3 支持硬件

ascend960;其他平台保持原行为。

3.4 算子约束限制

💡 备注(选填)

likedislike
Hhw-zhangpanpan
14 days ago Associated pull request
Hhw-zhangpanpan
14 days ago Change title to "[Requirement|需求建议]: concat 算子支持 ascend960 多核调整", originally titled "[Requirement|需求建议]: concat 算子支持 ascend960 多核加速".
Xxujiachen8Collaborators
14 days ago Assign hw-zhangpanpan as responsible person
CANN-robotCANN-robotCollaborators
13 days ago Close issue
CANN-robotCANN-robotCollaborators
13 days ago Added label: resolved