Paddle icon indicating copy to clipboard operation
Paddle copied to clipboard

[SOT] Add kernel stats in SOT mode

Open SigureMo opened this issue 1 year ago • 1 comments

PR Category

Execute Infrastructure

PR Types

Devs

Description

为 SOT 添加 kernel 信息统计工具,基于 Paddle Profiler,添加两个 TracerEventType,分别为 DygraphKernelCallStaticKernelCall,用于标记 kernel 调用,这样通过 profiler 就可以直接获取动态图调用的 Kernel 数、时间以及静态图调用的 Kernel 数和时间,以用于 SOT 指标建设,相比于之前的 OP 数量,这会是一个更加稳定的绝对参考值

使用方式:

# SOT 用法不用改
$ ENABLE_SOT_STEP_PROFILER=1 python test.py
dygraph kernel count: 0
static kernel count: 178
percentage dygraph kernel count: 100.00%
dygraph kernel duration: 0.00 ms
static kernel duration: 1908620.37 ms
percentage dygraph kernel duration: 100.00%

[!NOTE]

请不要和 Profiler 混用,本工具本质是会额外创建一个 Profiler 实例,相互之间会有影响

TODOs:

  • [x] 确认 struct kernel 是否需要统计,如果需要,动态图是否有等价的逻辑?-> ~~需要确认下~~ 基本都是通信算子,暂时不统计
  • [x] 确认 full、full_int_array 是否需要统计,不然静态图可能会与动态图有细微差别(多 Full)?-> 动静都不统计
  • [x] device 侧 kernel 时间的统计
  • [x] 统计数据的 coldstart 和 warmup 的输出,coldstart 在第一个 step 完成后打印,warmup 在 atexit 打印
  • [x] 确认循环没问题
  • [x] 确认 PIR 没问题
  • [x] 确认 device 时间精确性
  • [x] 添加单测

Future works

  • 增加更多统计,提供更方便简洁的统计 APIs
  • 考虑捕获 SOT 端到端、执行器、kernel 多级时间,并统计下,

Pcard-67164

SigureMo avatar Aug 19 '24 18:08 SigureMo

你的PR提交成功,感谢你对开源项目的贡献! 请关注后续CI自动化测试结果,详情请参考Paddle-CI手册。 Your PR has been submitted. Thanks for your contribution! Please wait for the result of CI firstly. See Paddle CI Manual for details.

paddle-bot[bot] avatar Aug 19 '24 18:08 paddle-bot[bot]