已合并
Add A5 VfSim tileop costmodel tests #1372
Add A5 VfSim tileop costmodel tests #1372
已合并
Chonghao-Wang创建于 27 天前
Chonghao-Wang
27 天前

描述

在 A5 代际中以 CCE mock 的方式接入 VfSim costmodel,支持对 pto-isa 中 tileop 指令进行时间预测。后端 VfSim 模型以VfInfo 为统一接口,后续可继续扩展支持任意 VF 算子的时间预测。

实现逻辑

  • micro-op 捕获通过 CCE intrinsic mock stub 实现,在源码级拦截 vector intrinsic 调用并记录 VF micro-op。
  • for-loop 结构捕获通过 LLVM pass 插桩实现,用于恢复 __VEC_SCOPE__ 内部的循环结构。
  • VfInfo 是当前 PTO 和 VfSim costmodel 之间的接口数据结构,包含 VF loop、micro-op、operand、memory location 等信息。
  • PTO 侧通过 PredictVfCycles 调用 VfSim costmodel,返回 tileop 的预测 cycle。
  • 支持单 VF 和多 VF 两种输入形式:
    • 单 VF:直接调用 VfSim 预测并返回标量 cycle。
    • 多 VF:逐个 VfInfo 调用 VfSim 预测,并将各段 VF cycle 累加后返回。
  • 对于 VfSim 暂不支持的指令,走 fallback 路径,以 repeat times * 单指令 cycle 数 的形式返回预测结果。
  • plt_b32 等非 micro-op 指令进行了过滤,避免进入 VfSim 预测链路。
  • 同步 VfSim 远程分支中关于 VfInfo core API unification、dtype/memory info、loop unroll native runner 等相关更新,并
    完成 PTO 侧适配。

A5 costmodel入口与调用方式

A5 代际 costmodel 与 A2/A3 代际 costmodel 入口保持一致,使用 PTO 统一入口:

#include <pto/pto-inst.hpp>

使用方式保持 tileop 调用形式不变,例如:

TADD(dstTile, src0Tile, src1Tile);

编译 A5 costmodel 测试或预测链路时需要开启对应宏:

-D__COSTMODEL
-D__NPU_ARCH__=3101

其中:

  - __COSTMODEL 用于启用 PTO costmodel 路径。
  - __NPU_ARCH__=3101 用于选择 A5 代际实现。

测试

新增并验证了 A5 VfSim costmodel 的 ST 测试用例,测试目录为:

tests/costmodel/st_a5/testcase

测试用例结构仿照既有 ST 测试:

tests/costmodel/st/testcase

验证内容包括:

  • PTO tileop 调用能进入 A5 CCE mock costmodel 链路。
  • CCE mock 能正确捕获 VF micro-op。
  • LLVM pass 能正确捕获 VEC_SCOPE 内 loop 结构。
  • PTO 侧能正确构造 VfInfo。
  • VfInfo 中的 micro-op 顺序、repeat 次数、src/dst operand 关系、memory location 符合预期。
  • VfSim costmodel 能被 PredictVfCycles 正常调用并返回正 cycle。
  • 对 TADD 按不同 shape/repeat 次数进行了覆盖,包括 repeat 为 1、8、16、32、64、96 的场景。
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 Chonghao-Wang 的贡献)
CChonghao-Wang
27 天前 创建了 pull request,commit 062f884a
atomgit-bot
atomgit-bot
27 天前 评论:

🤖 正在生成合并请求摘要,请稍候…

likedislike
atomgit-bot
atomgit-bot
27 天前 评论:

🤖 AI 代码检视正在进行中,请稍候…

likedislike
CANN-robotCANN-robot成员
27 天前 添加了label:cann-cla/no
CANN-robotCANN-robot成员
27 天前 添加了label:stat/needs-squash
此处折叠了116条消息 查看更多
CANN-robot
CANN-robot成员
26 天前 评论:
流水线 PR-pipeline_cann_pto-isa#4689 [ commitID:5123a6a0 ] 已完成
likedislike
csjlchen
csjlchen成员
26 天前 评论:

/lgtm

likedislike
ChanKaLok成员
26 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
26 天前 添加了label:lgtmapproved
CANN-robotCANN-robot成员
26 天前 合入了pull request