已开启
[Feature]: add mega_kernel profiling #396
XianglongZeng创建于  7 天前
XianglongZeng成员
7 天前 创建

🚀 功能描述

为 Torch 版本 MegaKernel 增加运行时 Profiling 能力,用于观测单个融合 Kernel 内部各 AIC/AIV worker
的任务执行过程,解决常规 CANN/Torch Profiling 只能看到整个 MegaKernel 边界、无法定位内部等待和计算瓶颈的问题。

1. 使用场景

  1. 用户通过统一 context 和 schedule 控制采样窗口,不直接接触 RuntimeConfig、rank、device、
    all_event_counters 或内部 profile_buffer
  2. 设备侧分别采集每个 AIC/AIV worker 的依赖等待、任务计算和事件触发区间。
  3. Host 将设备 buffer 解码为独立 Chrome Trace JSON,可直接使用 Perfetto、
    Chrome Trace Viewer 或其他兼容工具打开。
  4. 用户可以选择只显示阶段名称,也可以显示 owner、阶段和阶段内任务序号。
  5. 具体 MegaKernel 可以提供自己的阶段名称和 owner 展示名称;没有定制信息时公共框架仍能完成采集与导出。
  6. 用户可在模型运行结束后,将独立内部 trace 与 Torch 导出的 Chrome Trace 离线融合;采集、独立导出和
    融合保持三个独立职责。

2. 功能需求

编号 需求 验收条件
FR-01 运行时开关 每个 RuntimeConfigC 独立决定是否采样,默认关闭
FR-02 单一发布产物 同一算子产物同时支持关闭和开启 profiling 的调用
FR-03 关闭路径 不读取 cycle、不执行 profiling barrier、不写 profile record、不加载 owner 元数据
FR-04 区间采样 记录 WaitDependency、Compute、TriggerEvent 的开始和结束 cycle
FR-05 多核隔离与按需容量 每个 AIC/AIV worker 写自己的独立 slot;Host 按实际调度分别计算 AIC/AIV 容量,向上对齐到 16 条 record,单核最多 256 条
FR-06 溢出可见 单核 record 满后停止写入并累计 droppedCount
FR-07 通用数据模型 record 只包含 desc_idtask_idstage_task_indexowner_id 等公共字段
FR-08 展示兜底 Kernel builder 未绑定 stage_namesowner_label 时使用公共兜底,不影响采集和导出
FR-09 Kernel 内部定制 具体 MegaKernel 的 RuntimeConfig builder 自动绑定自身展示语义,用户侧 mega_kernel_profile() 接口保持统一
FR-10 独立导出 Host 可以直接将设备 buffer 导出为 schema v1 Chrome Trace JSON,其中 traceEvents 兼容 Chromium Trace Event Format
FR-11 原始数据保留 展示名不替代原始 ID;事件参数保留 task、desc、owner 和原始 cycle
FR-12 诊断失败显式化 buffer、频率、record 或 trace 无效时抛出异常,不生成看似有效的空结果
FR-13 离线融合 每个独立 trace invocation 按顺序对齐一个外层 Device kernel,并写入外层 process 下的新 AIC/AIV track
FR-14 融合安全性 默认拒绝 Host-only 对齐;名称回退、越界和显式 Host 对齐均写入可机读诊断 metadata

现有替代方案

与DFX相关性DF

本身为DFX功能的一部分

提议的新API

multicore_profiler.schedule()/multicore_profiler.mega_kernel_profile()/profiler.step()

是否影响现有API

不影响对外API,会要求MegaKernel入参必须包含profiling_buffer一项

补充信息

Thanks for contributing 🎉!

likedislike
XXianglongZeng成员
7 天前 添加了label:feature
XXianglongZeng成员
7 天前 修改了issue 的描述
XXianglongZeng成员
7 天前 修改了issue 的描述