Skip to content

[Test] int32 右移测试会随机生成非法的 shift=32 #1663

Description

@platelett

问题

test_shiftright_operation 使用了:

scalar_value = random.randint(1, 32)

Python randint 包含上界,所以它偶尔会返回 32。但 int32 的合法右移量是
0 <= shift < 32;一旦取到 32,TVM 会在构造 TIR 时确定性报错。

单次 pytest 通常会通过。重复执行该节点,直到随机数取到 32 即可复现:

python3 -m pytest -q \
  'testing/python/language/parallel/test_tilelang_ascend_language_parallel.py::TestTileLangKernels::test_shiftright_operation'

也可以把 Python random.seed 固定为 50;此时第一次 random.randint(1, 32)
就会返回 32,可在不运行 NPU 的情况下确定性复现参数错误。

修复建议

最小修复是排除 32:

- scalar_value = random.randint(1, 32)
+ scalar_value = random.randint(1, 31)

验证结果

  • shift 31 的 TIR 构造通过;
  • shift 32 确定性触发原来的合法性错误;
  • 改为 [1,31] 后,原节点重复测试未再失败。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions