已合并
[Feature] generate aligned trace in NPUGraph debug dump #43288
[Feature] generate aligned trace in NPUGraph debug dump #43288
已合并
Lyric创建于 7月29日
Lyric
Lyric成员
7月29日

【合入来源】

如有社区issue,请关联issue链接
请勿携带内部流程信息(需求链接、问题单、内部issue等)

【修改方案】

请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列
如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)

  • NPUGraph.debug_dump() 成功生成新的原始 JSON 后,额外生成
    *.aligned.json
  • 对齐处理仅调整可视化时间轴,不修改原始 JSON。
  • 对齐失败仅打印 warning,不影响原始 debug_dump() 返回或原始文件。
  • 未成功 capture 或未生成新 dump 时,跳过对齐处理,避免处理旧文件。

【资料变更】

请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”

不涉及

【接口变更】

请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”

不涉及

【功能验证】

说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤
新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图

自验证ok

【CheckList】

PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 Lyric 的贡献)
LyricLyric成员
7月29日 创建了 pull request,commit 9298bef6
atomgit-bot
atomgit-bot
7月29日 评论:

变更摘要

此 PR 为 NPUGraph.debug_dump() 新增了自动生成对齐 trace JSON 文件(.aligned.json)的功能。核心变更包括:新增 torch_npu/npu/_aclgraph_trace.py 模块,实现了 NPU Chrome Tracing JSON 的时间对齐算法,通过对 stream 内 task 的 ts/dur 重新排布以及跨 stream 的 EVENT_RECORDEVENT_WAIT 对齐,使 Chrome://tracing 可视化的时间轴能清晰呈现 stream 间的依赖关系;同时在 NPUGraph.debug_dump() 中集成该对齐步骤,原始 dump 成功后自动生成 .aligned.json;并补充了相应的单元测试覆盖正常路径和异常路径。

主要改动

  • 新增 _aclgraph_trace.py 模块:提供 align_trace_json() 顶层接口以及 _merge_stream_active()_align_trace()_validate_alignment() 等内部函数,实现虚拟 stream 合并、跨 tid 控制事件对齐、flow events 生成、算子名称清洗等功能,对齐算法采用迭代收敛策略(最多 200 轮)确保 wait 结束时间与 record 结束时间一致。

  • 增强 NPUGraph.debug_dump():在 torch_npu/npu/graphs.py 中,通过记录 dump 前后文件状态判断是否成功写入新内容,若成功则调用 align_trace_json() 自动生成 .aligned.json 文件;整个过程包裹在 try/except 中,确保对齐失败不影响原始 dump 结果。

  • 补充测试用例:在 test/npu/test_aclgraph_update.py 中新增对对齐文件生成的验证,包括对齐成功后 .aligned.json 文件大小检查、对齐失败时原始 dump 文件保留的断言,以及未发生 dump 时不触发对齐调用的场景覆盖。

likedislike
不准确?
atomgit-bot
atomgit-bot
7月29日 评论:

代码审查

审查总结

对该 PR 的 3 个变更文件均已完成审查:

文件 审查结果
test/npu/test_aclgraph_update.py 无问题。导入清理合理(移除未使用的 unittestchain),新增的 3 个测试路径覆盖了正常、异常和未捕获三种场景。
torch_npu/npu/_aclgraph_trace.py 1 个 P3 建议(import math 位置)。整体代码质量高,对齐算法、边界处理、异常传播链设计合理。
torch_npu/npu/graphs.py 无问题。debug_dump 改动采用「文件状态快照对比」判断是否需要对齐,并对齐操作包裹在 try/except Exception 中作为尽力而为的后处理,设计稳健。

按优先级统计:

  • P0: 0
  • P1: 0
  • P2: 0
  • P3: 1(可选改进)

整体风险评估: 低风险。新增的对齐功能作为 debug_dump 的可选后处理,失败时仅记录 warning 而不影响主流程;测试覆盖了正常、对齐失败和未捕获图三条路径;对齐算法有收敛上限保护和结果校验。代码质量良好,可以合入。

⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。

likedislike
不准确?
ascend-robotascend-robot成员
7月29日 添加了label:ascend-cla/yes
此处折叠了106条消息 查看更多
luochao60成员
8月5日 评论:

/lgtm

likedislike
zichun_ye
zichun_ye成员
8月5日 评论:

/approve

likedislike
ascend-robotascend-robot成员
8月5日 添加了label:approvedlgtm
ascend-robotascend-robot成员
8月5日 合入了pull request
ascend-robot
ascend-robot成员
8月5日 评论:
流水线 pytorch_gitcode_PR_multiVersion#13659 [ commitID:6cfe9b23 ] 已完成
likedislike