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

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 基线对比。

likedislike
Ttianjun
7月31日 关联了pull request:【CANN开源开放社区任务】【社区任务】Im2Col 新增 A2/A3 AscendC 实现
Ttianjun
7月31日 关联了pull request:【社区任务】更新 Im2Col 算子设计文档
陈思
陈思成员
7月31日 评论:

/assign @gcw_jgWZA4ay

likedislike
CANN-robotCANN-robot成员
7月31日 将 gcw_jgWZA4ay 设为负责人
陈思
陈思成员
7月31日 评论:

/assign @gcw_jgWZA4ay

likedislike
CANN-robot
CANN-robot成员
7月31日 评论:

Notice

This issue is already assigned to gcw_jgWZA4ay. Please do not assign repeatedly.

likedislike
CANN-robotCANN-robot成员
21 天前 关闭了 issue