已关闭
[Requirement|需求建议]: AffineGrid算子aclnn示例改为C++ RAII资源管理 #2642
sunday创建于  20 天前关闭于  19 天前
sunday成员
20 天前 创建

一、背景信息 (必填)

AffineGrid算子的aclnn调用示例目前使用手动资源管理方式:裸指针 + main末尾统一释放。当流程中任一 CHECK_RET 提前返回时,会跳过末尾的释放逻辑,存在device内存/tensor/stream泄漏风险。涉及文件:

  • math/affine_grid/examples/test_aclnn_affine_grid.cpp

同仓 IsFinite/IsInf 算子的示例已采用 C++ RAII 管理,风格不一致,维护成本高。

二、价值/作用 (必填)

  • 健壮性:任何提前return路径下,stream/device内存/tensor/workspace 均可通过 RAII 自动回收,消除泄漏隐患;
  • 一致性:与 IsFinite/IsInf 算子示例风格统一,降低后续维护成本。

三、设计方案 (必填)

复用 test_aclnn_is_finite.cpp 的 RAII 方案改造 math/affine_grid/examples/test_aclnn_affine_grid.cpp

3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)

Aclnn直调示例。

3.2 总体设计
  • 新增 StreamPtr/DeviceMemPtr/TensorPtr(unique_ptr + 自定义deleter)与 aclGuard(shared_ptr + 析构lambda,按初始化状态条件调用 aclrtResetDevice/aclFinalize);
  • Init/CreateAclTensor 改为接收智能指针引用,CreateAclTensor 补充 aclCreateTensor 判空;
  • 删除 main 末尾的手动释放逻辑。
3.2.1 算子支持的数据类型

不涉及算子逻辑变更,仅为示例代码改造。

3.2.2 host侧设计

如上 3.2 总体设计。

3.2.3 kernel侧设计

不涉及。

3.3 支持硬件

所有已支持硬件(示例代码无新增依赖)。

3.4 算子约束限制

无。

likedislike
CANN-robotCANN-robot成员
19 天前 关闭了 issue
CANN-robotCANN-robot成员
19 天前 添加了label:resolved