已关闭
[Requirement|需求建议]: 新增算子max_pool3d_with_argmax_v2 #839
小王!创建于  2月5日关闭于  2月6日
小王!
小王!成员
2月5日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

新增算子max_pool3d_with_argmax_v2,弥补算子功能不足,
包含算子原型、文档、tiling kernel实现代码、simd性能模板和simt功能模板、UT等。
支持范围:单算子、aclnn。

Origin(信息来源)

池化算子,最大池化(Max Pooling)是‌卷积神经网络(‌CNN)中常用的一种技术,用于减小特征图的尺寸,从而降低计算量,同时保留最显著的特征

Benefit / Necessity (价值/作用)

最大池化有助于降低模型的计算复杂度,减少过拟合现象,并引入了一定的平移不变性,即对于输入特征的小偏移,池化操作的输出保持不变。此外,它还能抑制噪声,降低信息冗余,通过引入SIMD模板,优化性能,提升产品竞争力

Design(设计方案)

通过从非计算维度中抽取 VL 来提升向量并发度,利用 gather 指令将多个 kernel 在同一位置的数据拉取到一个向量中,在 kernel 范围内并行完成最大值及索引计算。根据可并发规模不同,分别从 W、HW、DHW 乃至 NCDHW 方向进行 gather,以填满 VL、提升计算效率。针对 pad 场景,先在 UB 中统一填充 −inf,再通过非对齐搬运构造与非 pad 一致的内存布局,使计算路径完全统一,随后对得到的索引进行偏移校正;当 kernel 内全为 −inf 时,对索引结果进行兜底修正。整体方案在提高并行度的同时,需要关注 gather 索引计算开销及 bank 冲突带来的性能瓶颈。

likedislike
小王!
小王!成员
2月5日 评论:

/assign

likedislike
CANN-robotCANN-robot成员
2月5日 将 qq_52056150 设为负责人
小王!小王!成员
2月6日 修改了issue 的描述
小王!小王!成员
2月6日 修改了issue 的描述
小王!小王!成员
2月6日 修改了issue 的描述
小王!小王!成员
2月6日 修改了issue 的描述
CANN-robotCANN-robot成员
2月6日 关闭了 issue
CANN-robotCANN-robot成员
3月20日 添加了label:resolved