已合并
feat: 支持vectorfunc动态stride性能公式 #1208
feat: 支持vectorfunc动态stride性能公式 #1208
已合并
gaoxin创建于 7月6日
gaoxin成员
7月6日

Pull Request

描述

支持vectorfunc动态stride性能公式以及尾块计算

问题原因

  1. VectorFunc ATT 性能建模缺少结构化参数通路,double loop、stride、output dim 等信息无法通过统一的 AscirNodeParams 传递到 ATT parser 和性能公式,容易依赖散落属性并导致后续扩展困难。
  2. VectorFunc double loop 场景下,stride 相等和不相等时的 micro api 次数计算方式不同;原有性能公式只按普通 dim product 计算,无法表达运行时 stride 是否相等带来的动态性能差异。
  3. CheckSingleCut 尾块场景获取 tail perf 时直接走普通节点性能入口,VectorFunc 节点没有继续走 VectorFunc 专用性能公式,导致尾块性能计算路径不一致。
  4. load store类型node没有计算到性能公式中。

修改方案

  1. 新增 ascir_param::VectorFuncNodeParams,将 is_double_loop、all_strides、output_dims 作为 VectorFunc 专用 typed params,并纳入 AnySpecificParams。
  2. EnrichAscirNodeParams 对 VectorFunc 预注册 AscirNodeParams,codegen 阶段通过 GetAscirNodeParams 更新已有参数,避免新增独立 ExtAttr 或散落 vf_* 字段。
  3. VectorFunc codegen 在 double loop 场景收集实际 stride 表达式和尾部 output dims;生成 strides_equal 判断代码的同时,将 stride 表达式同步写入 VectorFuncNodeParams。
  4. ATT parser 从 AscirNodeParams 读取 VectorFuncNodeParams 并写入 NodeInfo,PipePerfExpr 调用 VfPerfUtils::GetVectorFunctionPerf 时传入 typed params 和 ternary_ops。
  5. VfPerfUtils 根据 VectorFuncNodeParams 区分非 double loop、stride 确定相等、stride 确定不等和动态 stride 场景;动态场景生成 vf_dynamic_perf TernaryOp,在运行时按 all_strides 是否相等选择性能公式。
  6. CheckSingleCut tail perf 改为通过 GetNodePerfInternal(..., tail_shape=true) 进入,使 VectorFunc tail 场景仍走 VectorFunc 专用性能公式,普通节点继续透传 tail_shape 到 GetNodePerf。
  7. 补充 AscirNodeParams UT,覆盖 VectorFuncNodeParams 存储和 EnrichGraph 预注册 VectorFunc 参数。

变更类型

请选择本次引入的变更类型:

关联的Issue

如何测试

描述测试此变更的步骤和前提条件:
1.测试vectorfunc相关用例,双切分与单切分场景,有尾块与没有尾块场景

核对清单

其他信息

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 gaoxin 的贡献)
Ggaoxin成员
7月6日 创建了 pull request,commit 03b287b7
Ggaoxin成员
7月6日 预合并成功(commit_id: 9e32a2e3b3a0c2bce1532f7f888fabe86080c580)
Ggaoxin成员
7月6日 强制推送  4 个提交:03b287b7-1 commit from branch develop,4b408aeb-feat: 支持vectorfunc动态stride性能公式,dbc3fa87-fix: 修正vectorfunc尾块性能计算,0772d510-fix: 修正vectorfunc状态类型适配
Ggaoxin成员
7月6日 预合并成功(commit_id: baf61b15f58072317defdad003b54fff417e1ae3)
CANN-robotCANN-robot成员
7月6日 添加了label:stat/needs-squash
此处折叠了76条消息 查看更多
Ggaoxin成员
7月9日 关联了issue:[Requirement|需求建议]: 支持VectorFunc动态stride性能公式建模
zhanj
zhanj成员
7月9日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
7月9日 添加了label:approved
CANN-robotCANN-robot成员
7月9日 关闭了关联的issue
CANN-robotCANN-robot成员
7月9日 合入了pull request