已合并
[feat][v2.10.0]torch_npu profiler analysis ability of display prof level0 && kernel shapes #44928
xieanran创建于 11 天前
[feat][v2.10.0]torch_npu profiler analysis ability of display prof level0 && kernel shapes #44928
已合并
xieanran创建于 11 天前
xieanran
xieanran成员
11 天前

【合入来源】

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

【修改方案】

请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列
如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)
新增形状表头常量 OP_SUMMARY_SHAPE_HEADERS: 在 _csv_headers.py 中新增形状相关列定义(Input Shapes、Input Data Types、Input Formats、Output Shapes、Output Data Types、Output Formats),为 kernel details输出 shape 信息提供表头
新增 _get_kernel_headers 过滤逻辑: 在 _kernel_view_parser.py 中新增类方法 _get_kernel_headers,当 is_all_kernel_headers 为真时返回全部表头;否则仅返回 OP_SUMMARY_SHOW_HEADERS 拼接源数据中存在的表头
generate_view 接入表头过滤: 将 OpSummaryBean.headers 的赋值改为通过 _get_kernel_headers(all_data[0].all_headers, ProfilerConfig().is_all_kernel_headers()) 计算,使 level0 模式下输出 CSV 时过滤掉 Model ID 等非展示字段,同时保留base 表头以及shape表头及数据

【资料变更】

请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”
kernel_details.csv在l0下存在新增表头

【接口变更】

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

【功能验证】

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

【CheckList】

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

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 xieanran 的贡献)
xieanranxieanran成员
11 天前 创建了 pull request,commit b3c71d05
atomgit-bot
atomgit-bot
11 天前 评论:

变更摘要

该 PR 增强了 torch_npu profiler 的分析展示能力:在 prof level0 展示模式下,KernelViewParser 生成的 kernel 视图现在可以额外显示算子的输入/输出形状、数据类型、数据格式等 shape 信息。核心改动是新增 _get_kernel_headers 方法,在未开启全量 kernel 头部(is_all_kernel_headers 为 False,即 level0 场景)时,于 OP_SUMMARY_SHOW_HEADERS 基础上追加源数据中存在的 shape 头部,并新增 CsvHeaders.OP_SUMMARY_SHAPE_HEADERS 常量承载这些头部字段;同时重写相应单元测试以覆盖有无 shape 及非 level0 的场景。

主要改动

  • 新增 shape 头部常量: 在 CsvHeaders 中新增 OP_SUMMARY_SHAPE_HEADERS,包含 Input ShapesInput Data TypesInput FormatsOutput ShapesOutput Data TypesOutput Formats 六个字段,作为 kernel 视图展示形状信息的头部来源。

  • 新增 _get_kernel_headers 方法: 在 KernelViewParser 中新增类方法 _get_kernel_headers(all_headers, is_all_kernel_headers),当 is_all_kernel_headers 为 True 时返回全部头部;否则返回 OP_SUMMARY_SHOW_HEADERS 加上源数据中实际存在的 shape 头部,实现 level0 模式下形状列的按需展示。

  • run 方法接入新逻辑: KernelViewParser.runOpSummaryBean.headers 的赋值由原先在"全量头部"与 OP_SUMMARY_SHOW_HEADERS 之间二选一,改为调用 _get_kernel_headers(all_data[0].all_headers, ProfilerConfig().is_all_kernel_headers()),使 level0 输出 CSV 中可包含形状列。

  • 重写单元测试: 将 test_kernel_view_parser.pyunittest 迁移到 torch_npu.testing.TestCase/run_tests 框架,新增 _get_kernel_headers 在 level0 有无 shape、非 level0 三种场景的用例,并补充 generate_view 在有无 shape 情况下的输出头部与写入断言。

likedislike
atomgit-bot
atomgit-bot
11 天前 评论:

代码审查

✅ 未发现问题

likedislike
ascend-robotascend-robot成员
11 天前 添加了label:ascend-cla/yes
此处折叠了48条消息 查看更多
wangchao285成员
10 天前 评论:

/

likedislike
wangchao285成员
10 天前 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
10 天前 添加了label:lgtm
ascend-robotascend-robot成员
10 天前 合入了pull request
ascend-robot
ascend-robot成员
10 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#14312 [ commitID:55ba3212 ] 已完成
likedislike