已合并
从ops-cv迁移ROIPooling到ops-nn #9609
m0_46386992创建于 8 天前
从ops-cv迁移ROIPooling到ops-nn #9609
已合并
m0_46386992创建于 8 天前
m0_46386992
m0_46386992成员
8 天前

描述

迁移ops-cv仓的ROIPooling到ops-nn下面,避免9.1.0升级兼容性问题,关联代码:
https://gitcode.com/cann/ops-nn/pull/9609/

关联的Issue

https://gitcode.com/cann/ops-nn/issues/5431

测试

  • 黑盒、白盒、网络用例精度pass
  • 二级冒烟通过
  • 本地编译PASS

文档更新

  • 更新了README.md文件
  • 更新了op_list.md文件

类型标签

AI/Agent生成声明

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 m0_46386992 的贡献)
m0_46386992m0_46386992成员
8 天前 创建了 pull request,commit 49f43249
atomgit-bot
atomgit-bot
8 天前 评论:

变更摘要

本 PR 将 ROIPooling 算子从 ops-cv 迁移到 ops-nn:在 common/inc/op_graph/op_nn_proto_extend.h 中删除旧的 REG_OP(ROIPooling) 定义,并在新增的 pooling/roi_pooling/op_graph/roi_pooling_proto.h 中以相同接口(输入 x/rois/roi_actual_num,属性 pooled_h/pooled_w/spatial_scale_h/spatial_scale_w,输出 y)重新注册,同时补齐该算子在新目录下的 op 定义、shape/dtype 推导、arch35 平台的 tiling 与 SIMT kernel 实现及配套测试。

主要改动

  • 算子定义迁移与重注册: 移除 op_nn_proto_extend.h 中的 ROIPooling 注册(-67 行),在新增的 roi_pooling_proto.h 中通过 REG_OP(ROIPooling) 重新声明相同的输入、属性与输出(DT_FLOAT/DT_FLOAT16roi_actual_num 为可选 DT_INT32),并在 op_host/roi_pooling_def.cpp 中完成 OpDef 注册与 ascend950OpAICoreConfig 配置。
  • 新增 host 侧推导与 tiling: roi_pooling_infershape.cpp[K, C, pooled_h, pooled_w] 推导输出 shape(支持 unknown dim/rank);roi_pooling_tiling_arch35.cpp 实现 dtype/shape/attr 校验、基于 totalElements = K*C*pooled_h*pooled_w 的 grid-stride 核数切分、workspace 与 tiling key 设置,并定义 RoiPoolingTilingData 结构;roi_pooling_graph_infer.cpp 校验 roisx dtype 一致并透传输出 dtype。
  • 新增 arch35 SIMT kernel 实现: op_kernel/arch35/roi_pooling_simt.h 提供 OpRoiPoolingSimtKernel,采用 int64 全程运算与 grid-stride 循环,实现 ROI 坐标 round 映射、bin 边界计算及 bin 内 max 扫描,含 batchIdx 越界和空 bin 输出 0 的保护;roi_pooling_apt.cpp 作为 kernel 入口按 DTYPE_X 模板实例化。
  • 新增编译配置: op_host/config/ascend950/roi_pooling_binary.json 注册 ROIPooling 的 float32/float16 两种 kernel 二进制匹配项(ND 格式、FormatAgnostic、四个属性)。
  • 新增测试与 golden 用例: tests/assets/golden.py 提供 RoiPoolingKernelSpec golden(等 scale 走 torchvision.ops.roi_pool,不等 scale 走自实现 torch 路径,支持 FP16/FP32 交叉校验),并新增 tiling 与 infershape 的 gtest 单测以及 GEIR 冒烟示例 examples/test_geir_roi_pooling.cpp(覆盖 S/D 模式、FP32/FP16 与多组 shape 场景)。
likedislike
不准确?
atomgit-bot
atomgit-bot
8 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
8 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
8 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
*/*/README.md 陈娇, 杜慧萍, 黄迪 (3/2) 陈娇 (1/1)
*/*/op_graph/*_proto.h 汤磊, 王永光, 黄迪 (3/2) 汤磊, 王永光 (2/1)
*/*/op_graph/*_proto_extend.h 汤磊, 王永光 (2/2) 汤磊, 王永光 (2/1)
*/*/op_host/*_def.cpp 汤磊, 王永光, 黄迪 (3/2) 汤磊, 王永光 (2/1)
docs 陈娇, 杜慧萍 (2/2) 陈娇 (1/1)
pooling 刘闯, 黄迪 (2/2) 刘闯, 黄迪 (2/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

m0_46386992, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了65条消息 查看更多
kevin_huang1234成员
7 天前 评论:

/lgtm
/approve

likedislike
gitee-duhuiping成员
7 天前 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
7 天前 添加了label:lgtm
CANN-robotCANN-robot成员
7 天前 关闭了关联的issue
CANN-robotCANN-robot成员
7 天前 合入了pull request