已关闭
[BUG] Ascend950 比较类与 max/min 算子在 host/device tensor 混合输入下数据类型推导与设备校验缺陷 #168
wangqi_ai创建于  6月15日关闭于  8月19日
wangqi_ai
6月15日 创建

一、问题描述

在 Ascend950 平台上,比较类算子(eq/ge/gt/le/lt/ne)及 maximum/minimum 在 host tensor 与 device tensor 混合输入(以及 0 维 CPU scalar tensor 包装)场景下,存在以下缺陷:

  1. 数据类型推导不正确:沿用旧的 CPU scalar 特判路径(other.dim()==0 && !is_npu(other)*Scalar 分支)与 IsCPUScalar 转 scalar 逻辑,导致输出 dtype 推导与标杆(CPU/CUDA)不一致(典型如 ge/le 的类型推导、maximum/minimum 的计算 dtype 差异)。
  2. 设备处理缺失:未对 host/device 混合 tensor 做统一搬运,缺少 self/other 设备一致性保障与 NPU tensor 校验,可能产生设备不匹配或非预期行为。
  3. inplace / out 变体未校验 self/result 必须为 NPU tensor。

二、重现步骤

在 Ascend950 上构造混合输入并与 CPU/CUDA 标杆对比:

  • self 为 NPU tensor,other 为 CPU tensor(或 0 维 CPU scalar tensor);
  • self 为 CPU tensor,other 为 NPU tensor。

分别调用 torch.ge/le/gt/lt/eq/netorch.maximum/torch.minimum(含 out= 与 inplace 变体),对比输出 dtype / device / 数值。

三、预期结果

  • 输出 dtype 与设备应与 PyTorch 原生(CPU/CUDA)语义一致;
  • host/device 混合输入应被正确统一到 NPU 设备后计算;
  • 两者均非 NPU 的非法组合应给出明确报错。

关联 PR:https://gitcode.com/Ascend/op-plugin/pull/4715

likedislike
ascend-robotascend-robot成员
6月15日 添加了label:bug
wangqi_ai
6月15日 评论:

/assign @wangqi_ai

likedislike
ascend-robotascend-robot成员
6月15日 将 wangqi_ai 设为负责人
ascend-robotascend-robot成员
7月7日 关联了看板:MindStudio ISSUE管理
Wwangqi_ai
8月19日 issue状态由 TODO 改变为 DONE
Wwangqi_ai
8月19日 关闭了 issue
ascend-robotascend-robot成员
8月19日 添加了label:resolved