已合并
perf(layer_norm): check fusion pass platform before pattern construction #11299
perf(layer_norm): check fusion pass platform before pattern construction #11299
已合并
rk创建于 9月28日
rk成员
9月28日

描述

将 LayerNormFusionPass、LayerNormInferenceFusionPass、LayerNormONNXFusionPass、LayerNormONNXMULFusionPass 和 LayerNormRemoveBroadcastFusionPass 五条融合规则的平台校验从 MeetRequirements() 前移到 Patterns() 开头。不支持的平台或平台信息获取失败时返回空 pattern,避免构造 pattern(分别为 32、64、96、40、1 个)及后续结构匹配;移除匹配结果过滤阶段的重复平台查询。

改动原因

平台校验原先位于 MeetRequirements()(匹配结果过滤阶段):

  • 不支持的平台下仍会完整构造 pattern(五条规则合计 233 个)并参与结构匹配,产生无谓开销;
  • MeetRequirements() 在每次匹配回调中重复查询平台信息。

平台信息在图编译期间不变,校验一次即可,前移到 Patterns() 入口可将不支持平台的整体开销降到最低。

改动方法

五条规则统一调整:

  1. Patterns() 开头增加 IsSupportedPlatform() 校验:不支持的平台或平台信息获取失败时直接返回空 pattern 列表。
  2. 移除 MeetRequirements() 中的 IsSupportedPlatform() 重复校验。

涉及文件(5 个,+16 -16):

  • norm/layer_norm/op_graph/fusion_pass/layer_norm_fusion_pass.cpp(+3 -3)
  • norm/layer_norm/op_graph/fusion_pass/layernorm_inference_fusion_pass.cpp(+3 -3)
  • norm/layer_norm/op_graph/fusion_pass/layer_norm_onnx_fusion_pass.cpp(+3 -3)
  • norm/layer_norm/op_graph/fusion_pass/layer_norm_onnx_mul_fusion_pass.cpp(+3 -3)
  • norm/layer_norm/op_graph/fusion_pass/layer_norm_remove_broadcast_fusion_pass.cpp(+4 -4)

关联的Issue

-https://gitcode.com/cann/ops-nn/issues/6262

测试

pass

文档更新

不涉及

类型标签

AI/Agent生成声明

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 rk 的贡献)
Rrk成员
9月28日 创建了 pull request,commit f9ae638a
atomgit-bot
atomgit-bot
9月28日 评论:

变更摘要

本 PR 属性能优化,将 LayerNormONNXFusionPass 与 LayerNormONNXMULFusionPass 的平台校验从匹配结果过滤阶段前移到 pattern 构造阶段:在不支持的平台或平台信息获取失败时,Patterns() 直接返回空 pattern 列表,从而避免构造分别为 96 和 40 个的 pattern 及后续的结构匹配,并消除匹配结果过滤阶段的重复平台查询。

主要改动

  • LayerNormONNXFusionPass::Patterns() 前移平台校验: 在 Patterns() 开头调用 IsSupportedPlatform(),不支持时直接 return {},避免继续构造 96 个 pattern。
  • LayerNormONNXFusionPass::MeetRequirements() 移除重复平台查询: 删除原位于 guard_begin 日志后的 IsSupportedPlatform() 判断,平台校验不再在匹配过滤阶段重复执行。
  • LayerNormONNXMULFusionPass::Patterns() 前移平台校验: 在其 Patterns() 开头加入 IsSupportedPlatform() 判断,不支持时返回空 pattern 列表,跳过 40 个 pattern 的构造。
  • LayerNormONNXMULFusionPass::MeetRequirements() 移除重复平台查询: 同样删除 guard_begin 日志后的 IsSupportedPlatform() 判断,避免过滤阶段再次查询平台信息。
likedislike
不准确?
atomgit-bot
atomgit-bot
9月28日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
9月28日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
9月28日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

✅ Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
*/*/docs/acl*.md ✅ 陈昊文, 钱泽洪, 杨露 (3/2) ✅ 杨露 (1/1)
norm ✅ 钱泽洪, 陈昊文 (2/2) ✅ 钱泽洪, 陈昊文 (2/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

wangpengbo26, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了80条消息 查看更多
CANN-robotCANN-robot成员
9月29日 添加了label:approved
qianzehong成员
9月29日 评论:

/approve
/lgtm

likedislike
CANN-robotCANN-robot成员
9月29日 添加了label:lgtm
CANN-robotCANN-robot成员
9月29日 关闭了关联的issue
CANN-robotCANN-robot成员
9月29日 合入了pull request