已关闭
[Requirement|需求建议]: IsInf算子aclnn示例改为C++ RAII资源管理 #2556
sunday创建于  8月10日关闭于  8月10日
sunday成员
8月10日 创建

一、背景信息 (必填)

IsInf算子的aclnn调用示例 math/is_inf/examples/test_aclnn_is_inf.cpp 目前使用手动资源管理方式:裸指针 + main末尾统一释放。当流程中任一 CHECK_RET 提前返回时,会跳过末尾的释放逻辑,存在device内存/tensor/stream泄漏风险。同仓 IsFinite 算子的示例 math/is_finite/examples/test_aclnn_is_finite.cpp 已采用 C++ RAII 管理,两示例风格不一致,维护成本高。

二、价值/作用 (必填)

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

三、设计方案 (必填)

复用 test_aclnn_is_finite.cpp 的 RAII 方案改造 test_aclnn_is_inf.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
Ssunday成员
8月10日 关联了pull request:IsInf示例改用C++ RAII资源管理,与IsFinite示例风格对齐
CANN-robotCANN-robot成员
8月10日 关闭了 issue
CANN-robotCANN-robot成员
29 天前 添加了label:resolved