已关闭
[Requirement|需求建议]: 【社区任务】Im2Col 算子 AscendC A2/A3 实现 #2434
tianjun创建于 7月31日关闭于 21 天前
陈思
7月31日 评论:
7月31日 评论:
/assign @gcw_jgWZA4ay


7月31日 将 gcw_jgWZA4ay 设为负责人
陈思
7月31日 评论:
7月31日 评论:
/assign @gcw_jgWZA4ay


CANN-robot
7月31日 评论:
7月31日 评论:
21 天前 关闭了 issue
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
一、背景信息 (必填)
ops-math 仓库现有 conversion/im2col 面向 Ascend 950,无法直接用于 Atlas A2/A3。本需求在 experimental/conversion/im2col 中新增独立的 910B 系列 AscendC 实现,并将 ascend910b 与 ascend910_93 注册到同一实现。
二、价值/作用 (必填)
补齐 Im2Col 在 Atlas A2/A3 上的 aclnn 直调能力,覆盖卷积前滑动窗口展开场景;同时满足社区任务对功能正确性、泛化、二进制精度和性能的验收要求。
三、设计方案 (必填)
3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)
提供 aclnnIm2col 两段式 aclnn 直调接口,支持连续及非连续输入/输出。
3.2 总体设计
在 experimental/conversion/im2col 下提供 op_api、op_host、op_kernel、文档、示例及 UT。Host 侧负责参数校验、shape 推导和分场景 tiling;Kernel 侧按输入规模、窗口参数和硬件资源选择搬运/展开策略,A2 与 A3 共用实现。
3.2.1 算子支持的数据类型
FLOAT16、FLOAT、BFLOAT16、BOOL;输入支持三维 CHW 和四维 NCHW,数据格式为 ND。
3.2.2 host侧设计
校验 kernelSize、dilation、padding、stride 及输出 shape;处理溢出和空 Tensor 边界;生成适配不同 shape、核数和数据类型的 tiling 参数。
3.2.3 kernel侧设计
在 UB 容量与搬运对齐约束下完成 padding、dilation、stride 和滑动窗口展开;针对小场景及多核场景采用差异化调度,保证精度与性能。
3.3 支持硬件
Atlas A2(ascend910b)与 Atlas A3(ascend910_93)。
3.4 算子约束限制
kernelSize、dilation、stride 长度为 2 且元素大于 0;padding 长度为 2 且元素不小于 0;输出空间尺寸必须大于 0。三维输入不支持空 Tensor,四维输入支持 N 为 0 的空 Tensor。
四、验证计划
完成 op_api、op_host、op_kernel UT;使用 AscendOpTest 执行功能、二进制精度和性能测试,并与 TBE 基线对比。