pad_v2 算子当前不支持 COMPLEX64/COMPLEX128 复数数据类型,且 constant_values 被文档描述为必选 Tensor,Tiling 侧存在冗余的前置校验(paddings 空数据拦截、constant_values dtype 一致性及标量形状校验),限制了算子在复数张量填充场景下的使用。circular_pad_grad 反向算子的 shape 校验过于严格(padding 必须小于对应维度、gradOutput 前导维度必须与 self 一致),与实际允许场景不符。
GE 图模式(通过算子 IR 接口方式调用),aclnn 直调。
pad_v2 的 x、constant_values、y 在原有 FLOAT、FLOAT16、INT32、INT64、INT16、INT8、UINT8、UINT16、UINT32、UINT64、BOOL、DOUBLE、BFLOAT16、HIFLOAT8、FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT8_E8M0、FLOAT4_E2M1、FLOAT4_E1M2 基础上新增 COMPLEX64、COMPLEX128;paddings 支持 INT32、INT64。
pad_v2 复用 PadV3 的 Tiling 类实现,kernel 侧无结构变更;circular_pad_grad kernel 侧无变更。
💡 备注(选填)
关联 PR:https://gitcode.com/cann/ops-math/pull/6513
/assign @tan_xin
一、背景信息 (必填)
pad_v2 算子当前不支持 COMPLEX64/COMPLEX128 复数数据类型,且 constant_values 被文档描述为必选 Tensor,Tiling 侧存在冗余的前置校验(paddings 空数据拦截、constant_values dtype 一致性及标量形状校验),限制了算子在复数张量填充场景下的使用。circular_pad_grad 反向算子的 shape 校验过于严格(padding 必须小于对应维度、gradOutput 前导维度必须与 self 一致),与实际允许场景不符。
二、价值/作用 (必填)
三、设计方案 (必填)
3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)
GE 图模式(通过算子 IR 接口方式调用),aclnn 直调。
3.2 总体设计
3.2.1 算子支持的数据类型
pad_v2 的 x、constant_values、y 在原有 FLOAT、FLOAT16、INT32、INT64、INT16、INT8、UINT8、UINT16、UINT32、UINT64、BOOL、DOUBLE、BFLOAT16、HIFLOAT8、FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT8_E8M0、FLOAT4_E2M1、FLOAT4_E1M2 基础上新增 COMPLEX64、COMPLEX128;paddings 支持 INT32、INT64。
3.2.2 host侧设计
3.2.3 kernel侧设计
pad_v2 复用 PadV3 的 Tiling 类实现,kernel 侧无结构变更;circular_pad_grad kernel 侧无变更。
3.3 支持硬件
3.4 算子约束限制
💡 备注(选填)
关联 PR:https://gitcode.com/cann/ops-math/pull/6513