Skip to content

[Bug] PTODSL-vmi,vci+vadd在f16、group=1、nomask的情况下出现逐 lane 偏移的异常输出,导致精度对比失败 #1411

Closed

Description

@chenben09

Component

PTO Dialect / ODS (include/PTO/IR)

Description

在 vci_vadd 的浮点集成场景下,结果与预期不一致。该问题属于集成链路中的运行失败,compile 阶段通过。

在复现验证中,f16_g1_nomask 的实际输出从第 1 个 lane 开始变成了 993 + 2*i 这种递增序列,而 golden 期望是 993 + i;也就是首个 lane 正常,后续 lane 的值相对期望呈现逐 lane 递增偏移。进一步只改动单一因素的 probe 显示:

  • f32_g1_nomask:PASS
  • f32_g1_masked:PASS
  • f16_g2_nomask:PASS

说明该问题并非简单由 dtype、group 或 mask 单独变化触发,而是与 f16 + g1 + nomask 这个组合强相关。

Reproduction (minimal)

@pto.jit(name=name, kernel_kind="vector", target="a5", backend="vpto", mode="explicit")
def kernel(out_ptr: pto.ptr(dtype, "gm")):
    vl = 1
    group = 1
    nbytes = vl * dtypes.size(dtype)

    ub = pto.castptr(pto.i64(0), pto.ptr(dtype, "ub"))
    lhs = pto.vmi.vci(dtype(0), size=vl, group=group)
    rhs = pto.vmi.vbrc(dtype(1), size=vl)
    mask = pto.vmi.create_mask(vl, size=vl)
    out_vec = pto.vmi.vadd(lhs, rhs, mask)

    pto.vmi.vstore(out_vec, ub, pto.const(0, dtype=pto.index))
    pto.set_flag("V", "MTE3", event_id=0)
    pto.wait_flag("V", "MTE3", event_id=0)
    pto.mte_ub_gm(ub, out_ptr, nbytes, nburst=(1, 0, 0))

Expected behavior

编译通过,运行通过,vci_vadd 的浮点输出符合预期。

Actual behavior / error logs

运行阶段失败,浮点结果与预期不一致。

报错日志:
[FAIL] f16_g1_nomask backend=run | 精度校验失败 [out: out]: cann_bench mere=3.043139e-02 mare=5.965909e-02 thd=0.000977 mare_limit=0.00977 正常值域NPU/CPU错误=54/0(总64) 小值域NPU/CPU错误=0/0(总0) 相消NPU/CPU错误=0/0(总0)
失配[1] A=np.float16(995.0) G=np.float64(994.0)[2] A=np.float16(997.0) G=np.float64(995.0)[3] A=np.float16(999.0) G=np.float64(996.0)[4] A=np.float16(1001.0) G=np.float64(997.0)[5] A=np.float16(1003.0) G=np.float64(998.0) …共63个失配

报错场景:
`vci_vadd/f16_g1_nomask`

补充复现结论:
- `vci_vadd/f32_g1_nomask`:PASS
- `vci_vadd/f32_g1_masked`:PASS
- `vci_vadd/f16_g2_nomask`:PASS
- 仅 `vci_vadd/f16_g1_nomask` 复现步长异常与精度失配

Git commit

10883a8

Host platform

Linux (aarch64)

Target Ascend arch (if relevant)

a5

PTOAS build level (if relevant)

None

Metadata

Metadata

Assignees

Labels

QAIssues from the QA teambugSomething isn't workingvmi

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions