Skip to content

L2 Swimlane 与核间调度(深度)

1. 采集

bash
python models/qwen3/14b/qwen3_14b_decode.py -p a2a3 -d 0 --enable-l2-swimlane

产物:

text
build_output/<Program>_<ts>/dfx_outputs/
  l2_perf_records.json
  merged_swimlane_<ts>.json

查看:Perfetto UI 或 pypto-toolkit。

2. 症状手册

症状假设动作
核闲 AICPU 忙kernel 太碎合并 at、内折 range、目标 ~数十 µs 级粒度(以实测为准)
单核长尾过大/不均拆分、重切
cube 忙 vec 闲epilogue 拆核同 at 混合
顺序小任务队误用 rangeparallel/spmd

3. 改写模式

模式 A:外折改内折

python
# before: 每 iter 一个 kernel
for b in pl.parallel(0, BATCH):
    with pl.at(...):
        ...

# after: 每 kernel 处理 BATCH_TILE
for b0 in pl.parallel(0, BATCH, BATCH_TILE):
    with pl.at(...):
        for b in pl.range(b0, b0+BATCH_TILE):
            ...

模式 B:合并相邻 at

模式 C:matmul+epilogue 同 at

4. 层级

  • L2:芯片级任务
  • L1/L0:更细流水与 cache

5. 检验标准

  • [ ] 打开一份 swimlane 指出瓶颈
  • [ ] 完成一次合并 at 前后对比

参考 AIInfraGuide 结构,面向 PTO / Ascend CANN 生态重写