Skip to content

[Runtime][Tests] Fix contrib wheel tests#19714

Merged
tqchen merged 3 commits into
apache:mainfrom
tlopex:fix-contrib-wheel-tests
Jun 10, 2026
Merged

[Runtime][Tests] Fix contrib wheel tests#19714
tqchen merged 3 commits into
apache:mainfrom
tlopex:fix-contrib-wheel-tests

Conversation

@tlopex

@tlopex tlopex commented Jun 10, 2026

Copy link
Copy Markdown
Member

This pr fixes two contrib test failures that show up when running source-tree tests against the apache-tvm wheel.

  • Launch the pickle memoize helper script with sys.executable so subprocesses use the same Python environment as pytest.
  • Fix tvm.contrib.random.random_fill for packed sub-byte dtypes by using the actual tensor storage size instead of the logical element count.

Root Cause

tests/python/contrib/test_memoize.py executed pickle_memoize_script.py directly. In a wheel test environment, the shebang can resolve to a different Python than the active wheel venv, causing ModuleNotFoundError: No module named 'tvm'.

random_fill used the product of tensor shape as the number of values to write. For packed dtypes such as int4, two logical elements share one byte, so this wrote past the allocated storage and caused native heap corruption / process abort.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@tqchen

tqchen commented Jun 10, 2026

Copy link
Copy Markdown
Member

i think we can remove support for bits==1 and bits==4 since the current logic did not cover that and we did not have such usage, this will simplify the impl. we can inline run_test_script into caller

@tqchen tqchen merged commit 0ff0f85 into apache:main Jun 10, 2026
8 checks passed
tqchen pushed a commit that referenced this pull request Jun 12, 2026
…sage (#19748)

#19714 intentionally removed packed sub-byte (bits 1/4) support from
RandomEngine after the int4 fill path was found to write past the
allocated storage, but left "int4" in test_random_fill's dtype list, so
the test now fails with InternalError on every run. Remove it from the
list to match the supported set.

Also cast dtype.code / dtype.bits to int in the unsupported-dtype error
messages: both fields are uint8_t and were streamed as (invisible)
characters, e.g. "Doesn't support dtype code dtype bits".
MasterJH5574 pushed a commit to MasterJH5574/tvm that referenced this pull request Jun 15, 2026
This pr fixes two contrib test failures that show up when running
source-tree tests against the `apache-tvm` wheel.

- Launch the pickle memoize helper script with `sys.executable` so
subprocesses use the same Python environment as pytest.
- Fix `tvm.contrib.random.random_fill` for packed sub-byte dtypes by
using the actual tensor storage size instead of the logical element
count.

## Root Cause

`tests/python/contrib/test_memoize.py` executed
`pickle_memoize_script.py` directly. In a wheel test environment, the
shebang can resolve to a different Python than the active wheel venv,
causing `ModuleNotFoundError: No module named 'tvm'`.

`random_fill` used the product of tensor shape as the number of values
to write. For packed dtypes such as `int4`, two logical elements share
one byte, so this wrote past the allocated storage and caused native
heap corruption / process abort.

---------

Co-authored-by: tqchen <tianqi.tchen@gmail.com>
(cherry picked from commit 0ff0f85)
MasterJH5574 pushed a commit to MasterJH5574/tvm that referenced this pull request Jun 15, 2026
…sage (apache#19748)

apache#19714 intentionally removed packed sub-byte (bits 1/4) support from
RandomEngine after the int4 fill path was found to write past the
allocated storage, but left "int4" in test_random_fill's dtype list, so
the test now fails with InternalError on every run. Remove it from the
list to match the supported set.

Also cast dtype.code / dtype.bits to int in the unsupported-dtype error
messages: both fields are uint8_t and were streamed as (invisible)
characters, e.g. "Doesn't support dtype code dtype bits".

(cherry picked from commit 59f8283)
MasterJH5574 pushed a commit to MasterJH5574/tvm that referenced this pull request Jun 15, 2026
This pr fixes two contrib test failures that show up when running
source-tree tests against the `apache-tvm` wheel.

- Launch the pickle memoize helper script with `sys.executable` so
subprocesses use the same Python environment as pytest.
- Fix `tvm.contrib.random.random_fill` for packed sub-byte dtypes by
using the actual tensor storage size instead of the logical element
count.

## Root Cause

`tests/python/contrib/test_memoize.py` executed
`pickle_memoize_script.py` directly. In a wheel test environment, the
shebang can resolve to a different Python than the active wheel venv,
causing `ModuleNotFoundError: No module named 'tvm'`.

`random_fill` used the product of tensor shape as the number of values
to write. For packed dtypes such as `int4`, two logical elements share
one byte, so this wrote past the allocated storage and caused native
heap corruption / process abort.

---------

Co-authored-by: tqchen <tianqi.tchen@gmail.com>
(cherry picked from commit 0ff0f85)
MasterJH5574 pushed a commit to MasterJH5574/tvm that referenced this pull request Jun 15, 2026
…sage (apache#19748)

apache#19714 intentionally removed packed sub-byte (bits 1/4) support from
RandomEngine after the int4 fill path was found to write past the
allocated storage, but left "int4" in test_random_fill's dtype list, so
the test now fails with InternalError on every run. Remove it from the
list to match the supported set.

Also cast dtype.code / dtype.bits to int in the unsupported-dtype error
messages: both fields are uint8_t and were streamed as (invisible)
characters, e.g. "Doesn't support dtype code dtype bits".

(cherry picked from commit 59f8283)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants