已合并
【PR】: 新增gather+add融合用例 #1529
【PR】: 新增gather+add融合用例 #1529
已合并
zzq创建于 7月28日
zzq成员
7月28日

Pull Request

描述

新增gather+add融合用例。

变更类型

请选择本次引入的变更类型:

关联的Issue

如何测试

描述测试此变更的步骤和前提条件:
1.在CANNLab平台上执行通过
2.

核对清单

其他信息

在此添加任何其他关于本次 PR 的说明。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zzq 的贡献)
Zzzq成员
7月28日 添加了label:enhancement
Zzzq成员
7月28日 创建了 pull request,commit 9a084606
atomgit-bot
atomgit-bot
7月28日 评论:

变更摘要

本次 PR 新增了一个 gather + add 算子融合的示例用例,用于验证昇腾 NPU 上 torch.gathertorch.add 的自动融合能力。该用例通过 torch.compile 结合 ascendc 后端运行模型,并集成 NPU profiler 进行性能采集。

主要改动

  • 新增融合示例文件 af_gather_add.py:在 autofuse/examples/pytorch/af_gather/ 目录下新增完整的 gather+add 融合示例,包含模型定义、torch.compile 配置和 profiler 采集流程。
  • 定义融合模型 MyModel:通过 nn.Module 封装 torch.add(torch.gather(x, 1, indices), y) 组合,作为自动融合的目标计算图。
  • 启用 NPU 自动融合后端:使用 torch.compile 并指定 options={"npu_backend": "ascendc"},搭配 dynamic=Falsefullgraph=True 以触发静态全图编译与算子融合。
  • 集成 NPU Profiler 性能采集:通过 torch_npu.profiler.profile 结合 ExperimentalConfig 配置,对 100 步推理进行 PipeUtilization 等指标采集,并将 trace 输出至 ./profiling 目录。
likedislike
不准确?
atomgit-bot
atomgit-bot
7月28日 评论:

代码审查

我已经完成了对所有 5 个变更文件的逐一审查。以下是我的完整分析:


逐文件审查结果

1. autofuse/examples/pytorch/af_gather/af_gather_add.py(新增)

对照已有示例 af_add_ge.pyaf_mul_reducesum.py 逐一核查:

  • 版权头:与现有文件格式一致(© 2026 为项目统一写法)。✓
  • 导入torchtorch_nputorch.nn as nn 三者均在代码中被使用(nn.Module 用于模型定义)。✓
  • 张量形状与算子语义
    • x:(128, 50),indices:(128, 25),y:(128, 25)
    • torch.gather(x, 1, indices) 沿 dim=1 按 indices 取值,输出形状 (128, 25) ✓
    • indices 值域 0–49,x.size(1)=50,不越界,且显式指定 dtype=torch.int64 满足 gather 要求 ✓
    • torch.add((128,25), (128,25)) 逐元素相加,形状匹配 ✓
  • Profiling 配置:与现有示例完全一致。✓
  • 执行循环:100 步推理,返回值 result 未使用——与现有两个示例的模式一致(profiling 示例中无需消费返回值)。✓
  • 无异常吞噬、无可变默认参数、无闭包捕获循环变量、无 eval/exec、无硬编码密钥、无路径遍历等安全问题。

结论:无问题。

2. autofuse/examples/pytorch/af_gather/README.md(新增)

  • 与已有 af_pointwise/README.mdaf_reduce/README.md 结构一致。✓
  • 执行命令使用 python3(与其他子 README 一致)。✓
  • 预期结果描述准确:说明了融合成功(autofused_ kernel)和回退(独立 GatherElementsV2)两种情况。✓
  • 无危险操作指令、无安全风险。✓

结论:无问题。

3. autofuse/examples/pytorch/af_gather/README_en.md(新增)

  • 英文版与中文版内容对应,与已有英文子 README 格式一致。✓
  • 无问题。✓

结论:无问题。

4. autofuse/examples/pytorch/README.md(变更)

  • 用例数量更新:"两个"→"三个" ✓
  • 新增用例描述 ✓
  • 目录树结构调整:af_reduce 从末项变为中间项(└──├──),af_gather 作为新末项(└──),树形正确 ✓
  • 执行指令新增 gather + add 部分 ✓
  • "三个用例均开启 NPU Profiling" 语句更新 ✓

结论:无问题。

5. autofuse/examples/pytorch/README_en.md(变更)

  • 与中文 README 变更完全对应。✓
  • 目录树、用例描述、执行指令均正确更新。✓

结论:无问题。


审查总结

优先级 数量
P0 0
P1 0
P2 0
P3 0

整体风险评估:此变更不引入任何已知问题。 新增的 gather + add 融合示例严格遵循项目现有的代码模式(模型结构、profiling 配置、目录组织、README 格式均与已有示例一致),张量形状与算子语义正确,文档描述准确,无安全风险,无明显缺陷。

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

likedislike
不准确?
CANN-robotCANN-robot成员
7月28日 添加了label:cann-cla/yes
此处折叠了55条消息 查看更多
xuyafei成员
7月28日 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
7月28日 添加了label:lgtm
zhanj
zhanj成员
7月28日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
7月28日 添加了label:approved
CANN-robotCANN-robot成员
7月28日 合入了pull request