| fix: 修复 Add 算子 alpha 是否为 1 的判断逻辑以及示例资源泄漏 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !7073 merge ccc_1103 into master fix: 修复 Add 算子 alpha 是否为 1 的判断逻辑以及示例资源泄漏 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 本次修改针对 Add 算子,主要包含以下改动: 1. **修复示例资源泄漏**(math/add/examples/test_aclnn_add.cpp、test_aclnn_adds.cpp): - 将示例中的裸指针资源(aclrtStream、device 内存、aclTensor、aclScalar)改为 RAII 智能指针管理(unique_ptr 自定义删除器),在正常与异常路径下均自动释放资源,避免资源泄漏。 - 补充 aclCreateTensor 返回空指针的校验。 - 释放 workspace 前先 reset 指针,避免后续 aclnnInplaceAdd/aclnnInplaceAdds 再次申请覆盖指针导致泄漏。 2. **修复 GEIR 示例内存泄漏**(math/add/examples/test_geir_add.cpp): - 移除调试打印 std::cout << argv[1]。 - 补充 delete session; 释放 Graph session。 3. **修复 alpha 是否为 1 的判断逻辑**: - math/add/op_api/aclnn_add.cpp:混合数据类型分支改用 IsEqualToOne 判断 alpha 是否为 1。 - math/add/op_api/aclnn_add_v3.cpp:新增 IsEqualToOne 辅助函数,正确处理 NaN、复数类型、double 精度场景,避免原 !(alpha->ToFloat() > 1 || alpha->ToFloat() < 1) 判断在 NaN 或复数类型时误判为 1。 4. **补充测试规格**(math/add/tests/assets/golden.py): - 新增 aclnnAddV3、aclnnInplaceAddV3 测试规格。 - 支持 complex32 输出的 golden 计算(拆实虚部抬 complex64 相加后拼回)。 - 修复整数输入时 alpha 的整型转换逻辑(仅对张量判定)。 ## 关联的Issue - #4591 ## 测试 - 更新 Add 算子的 TTK 测试规格 golden.py,新增 aclnnAddV3/aclnnInplaceAddV3 及 complex32 的 golden 计算逻辑。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7073 | 8 days ago |