已关闭
[Requirement|需求建议]: ExtendConvTranspose 支持 Fractal_Z_Group filter 直连(A16W8) #5796
linruihan创建于  9月11日关闭于  9月17日
linruihan成员
9月11日 创建

Backgroud(背景信息)

ExtendConvTranspose(由 conv3d_backprop_input_v2 承载)分组转置卷积场景中,filter 在图上已由前置 TransData 完成组内 C/N 转置,并以 FRACTAL_Z 格式(布局 [N1][DHW][C1][C0][N0])传入算子。原实现需要 AIV 侧 group transdata 在运行时对权重做组间重排,多组场景引入额外搬运与 AIC/AIV 跨核同步开销。A16W8(out_backprop=FP16、filter=INT8)的权重物理布局与 fuse FZ 契约一致,可由 AIC 从 GM 直搬 L1。

Origin(信息来源)

conv3d_backprop_input_v2 / extend_conv_transpose 算子开发团队(@linruihan)在 ExtendConvTranspose Fractal_Z_Group 场景支持工作中提出。

Benefit / Necessity (价值/作用)

  • 免除 ENLARGE 多组场景的 AIV 组间 transdata:B1 由 AIC 直搬,减少一次全量权重搬运与跨核同步
  • 多组任意 enlarge(1 ≤ E ≤ groups,含 E∤groups 尾段)由 FZG 物理段布局直接支撑,tiling 不再回退 E=1
  • small kernel 路径扩展支持多组:Gopt 物理段循环映射到 nIdx 维度,单物理段整块直搬
  • A16W16/A8W8 明确不支持 FZ 直连,恢复原格式校验语义,避免未验证布局进入内核

Design(设计方案)

  • 新增模板态 TPL_FZ_GM_TO_L1(loadB1Condition)标识 Direct FZ;host 侧在 filter storage 为 FRACTAL_Z(primary 归一化,含子格式)且 dtype 为 A16W8 时启用,GetLoadB2Condition 返回 NO_TRANSPOSE_NO_REVERSE
  • 通用判定重构:NeedRuntimeGroupTransdata(ENLARGE 且非 DirectFZ 才走 AIV transdata)、IsFullKernelGmToL1(GM_TO_L1 与 FZ_GM_TO_L1 均按全核加载处理)
  • tiling key 保留两组 FZ 组合:ORIGIN/ENLARGE × FZ+NO_TRANSPOSE_NO_REVERSE(0x0B000000 / 0x0B010000)
  • inner product:GM→L1 复用 LoadGmDataToB1ForFz 直搬;L1→L0B 走 NO_TRANSPOSE 通用分支;groupStrideB_ 按物理段(Cin/Cout 双向对齐)计算
  • small kernel:B1 整 FZG 驻留 L1(Gopt 段连续一次直搬),LoadBL0 按段基址 + 物理宽寻址;bias/scale 全量 Cin 驻留 L1 按段 nStart 切片(受 uint16 字节数上限约束,超限回退 inner product)
  • 校验:Direct FZ storage 必须 4D [GoptC1DHW, N1, N0, C0]、kernel_d==1、不支持 HkWk 切分;DataCopyPad blockCount/blockLen/srcStride 与 L1 容量在 tiling 期校验(ValidateDirectFzB1Copy)

关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/10277

likedislike
Llinruihan成员
9月11日 添加了label:requirement
linruihan成员
9月11日 评论:

/assign @linruihan

likedislike
CANN-robotCANN-robot成员
9月11日 将 linruihan 设为负责人
CANN-robotCANN-robot成员
9月17日 关闭了 issue
CANN-robotCANN-robot成员
9月17日 添加了label:resolved