Pull Request已成功合入, 合并人@ascend-robot
(感谢 Lyric 的贡献)变更摘要
此 PR 为 NPUGraph.debug_dump() 新增了自动生成对齐 trace JSON 文件(.aligned.json)的功能。核心变更包括:新增 torch_npu/npu/_aclgraph_trace.py 模块,实现了 NPU Chrome Tracing JSON 的时间对齐算法,通过对 stream 内 task 的 ts/dur 重新排布以及跨 stream 的 EVENT_RECORD → EVENT_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 时不触发对齐调用的场景覆盖。


代码审查
审查总结
对该 PR 的 3 个变更文件均已完成审查:
| 文件 | 审查结果 |
|---|---|
test/npu/test_aclgraph_update.py |
无问题。导入清理合理(移除未使用的 unittest 和 chain),新增的 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 而不影响主流程;测试覆盖了正常、对齐失败和未捕获图三条路径;对齐算法有收敛上限保护和结果校验。代码质量良好,可以合入。
⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。


/approve




【合入来源】
【修改方案】
NPUGraph.debug_dump()成功生成新的原始 JSON 后,额外生成*.aligned.json。debug_dump()返回或原始文件。【资料变更】
不涉及
【接口变更】
不涉及
【功能验证】
自验证ok
【CheckList】