AffineGrid算子的aclnn调用示例目前使用手动资源管理方式:裸指针 + main末尾统一释放。当流程中任一 CHECK_RET 提前返回时,会跳过末尾的释放逻辑,存在device内存/tensor/stream泄漏风险。涉及文件:
CHECK_RET
math/affine_grid/examples/test_aclnn_affine_grid.cpp
同仓 IsFinite/IsInf 算子的示例已采用 C++ RAII 管理,风格不一致,维护成本高。
复用 test_aclnn_is_finite.cpp 的 RAII 方案改造 math/affine_grid/examples/test_aclnn_affine_grid.cpp。
test_aclnn_is_finite.cpp
Aclnn直调示例。
StreamPtr
DeviceMemPtr
TensorPtr
aclGuard
aclrtResetDevice
aclFinalize
Init
CreateAclTensor
aclCreateTensor
不涉及算子逻辑变更,仅为示例代码改造。
如上 3.2 总体设计。
不涉及。
所有已支持硬件(示例代码无新增依赖)。
无。
一、背景信息 (必填)
AffineGrid算子的aclnn调用示例目前使用手动资源管理方式:裸指针 + main末尾统一释放。当流程中任一
CHECK_RET提前返回时,会跳过末尾的释放逻辑,存在device内存/tensor/stream泄漏风险。涉及文件:math/affine_grid/examples/test_aclnn_affine_grid.cpp同仓 IsFinite/IsInf 算子的示例已采用 C++ RAII 管理,风格不一致,维护成本高。
二、价值/作用 (必填)
三、设计方案 (必填)
复用
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判空;3.2.1 算子支持的数据类型
不涉及算子逻辑变更,仅为示例代码改造。
3.2.2 host侧设计
如上 3.2 总体设计。
3.2.3 kernel侧设计
不涉及。
3.3 支持硬件
所有已支持硬件(示例代码无新增依赖)。
3.4 算子约束限制
无。