Closed
[Requirement|需求建议]: concat 算子支持 ascend960 多核调整 #4098
hw-zhangpanpanAdd on 14 days agoClosed at 13 days ago
14 days ago Associated pull request
Hhw-zhangpanpan
14 days ago Change title to "[Requirement|需求建议]: concat 算子支持 ascend960 多核调整", originally titled "[Requirement|需求建议]: concat 算子支持 ascend960 多核加速".
14 days ago Change title to "[Requirement|需求建议]: concat 算子支持 ascend960 多核调整", originally titled "[Requirement|需求建议]: concat 算子支持 ascend960 多核加速".
14 days ago Assign hw-zhangpanpan as responsible person
13 days ago Close issue
13 days ago Added label: resolved
一、背景信息 (必填)
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 多核增强分支:
IsMultiCoreBoost(context):通过context->GetPlatformInfo()获取平台信息,platform_ascendc::PlatformAscendC(platformInfo).GetCurNpuArch()判定架构是否为 ascend960,据此返回是否启用多核增强;platformInfo 为空时返回 false。ConcatTilingParam新增bool multiCoreBoost{false}字段,在CalcBaseTilingParam中由IsMultiCoreBoost(context)赋值。TilingBlock中,当multiCoreBoost && param.catDim0 > param.totalCoreNum时执行多核分配:targetBlockFactor = (uoDim0 + totalCoreNum - 1) / totalCoreNumtargetBlocks = targetBlockFactor * totalCoreNumnewUbFactorDim0 = (catDim0 + targetBlocks - 1) / targetBlocksnewUbFactorDim0 >= 1 && newUbFactorDim0 < param.ubFactorDim0时,更新ubFactorDim0、uoDim0、tailUbFactorDim0,使块数向 totalCoreNum 的整数倍对齐。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 算子约束限制
💡 备注(选填)