已关闭
[Bug-Report|缺陷反馈]: BRC 算子调用示例 Init 函数初始化失败时资源释放不完整 #2653
xjh2527创建于  21 天前关闭于  10 天前
xjh2527
xjh2527
21 天前 创建

一、问题描述 (必填)

ops-math 仓库中 BRC(二元广播计算)类算子的文档调用示例及对应示例源码的 Init 函数,在部分初始化步骤失败时直接返回,未释放此前已经初始化的资源:

  • aclInit 成功、aclrtSetDevice 失败时,未调用 aclFinalize
  • aclrtSetDevice 成功、aclrtCreateStream 失败时,未调用 aclrtResetDeviceaclFinalize

涉及算子(BRC 类,共 231 个文件):

  • math/:Add / Sub / Mul / Muls / Minimum / Maximum / Signbit / Less / LessEqual / Greater / GreaterEqual / NotEqual / Equal / Lerp / LogicalAnd / LogicalOr / BitwiseOr / BitwiseAnd / BitwiseXor / TanhGrad / Addcmul / Ger / Gcd / SelectV2(SWhere) / Div / FloorDiv / Pow / Addcdiv / Mod / FloorMod
  • conversion/:ClipByValueV2
  • experimental/:上述算子的镜像版本

涉及文件示例:

  • math/add/examples/test_aclnn_add.cpp
  • math/add/docs/aclnnAdd&aclnnInplaceAdd.md
  • conversion/clip_by_value_v2/examples/test_aclnn_clamp.cpp
  • (完整清单见关联 PR)

二、环境信息 (可选)

CANN Open Software,ops-math 仓库 math/conversion/experimental/ 目录下 BRC 类算子。

三、重现步骤 (可选)

  1. 查看上述文件中的 Init 函数。
  2. 模拟或触发 aclrtSetDeviceaclrtCreateStream 返回失败。
  3. 观察失败分支直接返回,未回收此前已经成功初始化的 ACL/Device 资源。

四、预期结果 (可选)

  • aclrtSetDevice 失败时,在返回前调用 aclFinalize
  • aclrtCreateStream 失败时,在返回前依次调用 aclrtResetDeviceaclFinalize
  • 文档示例与对应示例源码保持一致。

💡 备注(选填)

关联 PR:https://gitcode.com/cann/ops-math/merge_requests/4633
同类问题在 ops-nn 仓库已有 Issue #4745 及 PR #8603 修复 aclnnSoftmax,本 issue 处理 ops-math 侧 BRC 类算子的同类问题。

likedislike
xjh2527xjh2527
21 天前 添加了label:bug-report
陈思
陈思成员
20 天前 评论:

/assign @xjh2527

likedislike
CANN-robotCANN-robot成员
20 天前 将 xjh2527 设为负责人
songkai111成员
10 天前 评论:

你好,由于该issue较长时间未贡献,我们将关闭该issue,如有需要请重新打开。

likedislike
Ssongkai111成员
10 天前 issue状态由 进行中 改变为 已拒绝
Ssongkai111成员
10 天前 关闭了 issue
CANN-robotCANN-robot成员
5 天前 添加了label:resolved