已合并
fix transpose 021 profiling #3705
jzj007创建于 7月2日
fix transpose 021 profiling #3705
已合并
jzj007创建于 7月2日
jzj007
jzj007
7月2日

描述

关联的Issue

#2120

测试

文档更新

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 jzj007 的贡献)
jzj007jzj007
7月2日 创建了 pull request,commit 3397b303
CANN-robotCANN-robot成员
7月2日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
7月2日 评论:

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


PR Approval Progress

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

Module Approval Details

module lgtm status approve status
conversion/transpose 宋恺, wangrui_ (2/2) 宋恺, wangrui_ (2/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
atomgit-bot
atomgit-bot
7月2日 评论:

变更摘要

此次 PR 主要针对 TransposeNddmaTiling 中 021 转置的 VConv tiling 路径进行了修复和优化:将原本内联的 021 VConv 有效性判断逻辑抽取为独立方法 Is021VConvValid(),并补充了更精细的 shape 对齐和乘积下限校验(引入 HW_ALIGNHW_MIN_PRODUCT 常量),同时在 EntryTilingTemplate() 中为 DAV_5102 架构增加了末轴最小元素数的限制条件,以避免将不合适的 shape 送入 021 VConv 路径导致性能回退。

主要改动

  • 抽取 Is021VConvValid() 方法并强化校验逻辑:将原本内联在 TryVCONVTiling() 中的 021 转置条件判断提取为独立方法 Is021VConvValid(),新增了 H * W >= HW_MIN_PRODUCT(448)的下限检查,以及基于 HW_ALIGN(16)的对齐后面积比对校验(H * W <= hAlign * wAlign / 2 时视为无效),避免小尺寸或非对齐 shape 进入 021 VConv 路径。

  • 新增常量 HW_ALIGNHW_MIN_PRODUCT:在头文件 transpose_tiling_arch35.h 中添加 constexpr int64_t HW_ALIGN = 16constexpr int64_t HW_MIN_PRODUCT = 448,作为 021 VConv tiling 的 shape 校验阈值。

  • EntryTilingTemplate() 增加末轴最小元素限制:在 DAV_5102 架构的非末轴转置分支中,新增条件 shapeInfo_.reducedInShape[shapeInfo_.dim - 1] >= MOVEALIGN_LAST_MIN_ELE,防止末轴元素过少时误用不适合的 tiling 阈值。

likedislike
atomgit-bot
atomgit-bot
7月2日 评论:

代码审查

经过对两个变更文件的详细审查,我确认该 diff 没有引入任何正确性、安全性或可靠性问题。以下是逐文件总结:


文件 1: conversion/transpose/op_host/arch35/transpose_tiling_arch35.cpp

变更内容:

  1. 将 021 VCONV 校验逻辑从内联条件提取为 Is021VConvValid() 方法,并新增了两个性能调优约束(H*W >= 448H*W > hAlign*wAlign/2),均为有意的 profiling 调优参数,不存在越界或溢出风险。
  2. EntryTilingTemplate() 中新增 shapeInfo_.reducedInShape[shapeInfo_.dim - 1] >= MOVEALIGN_LAST_MIN_ELE 条件以对齐阈值设定和 tiling 路径选择逻辑,dim 在此处已确保 >= 2,数组访问安全。

文件 2: conversion/transpose/op_host/arch35/transpose_tiling_arch35.h

变更内容:

  1. 新增常量 HW_ALIGN = 16HW_MIN_PRODUCT = 448,用于 profiling 约束。
  2. 新增私有方法声明 bool Is021VConvValid(),与 cpp 定义一致。

整体风险评估:低风险。 此变更是一次 profiling 调优,未发现逻辑错误、内存问题或安全风险。


审查结论:未发现问题,无需报告。

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

likedislike
此处折叠了61条消息 查看更多
CANN-robotCANN-robot成员
7月2日 添加了label:approved
RuiWang_成员
7月2日 评论:

/lgtm
/approve

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