[Bug] [Relax][Runtime] CPU TopK builds for uint64 but fails in the runtime sort
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 80/100
Direzione di ricerca
Leggi la logica di dispatch dell'ordinamento CPU in src/runtime/extra/contrib/sort/sort.cc, in particolare il ramo int64 intorno alle righe 456–575. Esegui la riproduzione ONNX TopK fornita con una build di TVM abilitata per LLVM; il lavoro è completato quando UINT64 restituisce i valori e gli indici previsti, come nel caso di controllo INT64.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Expected behavior
A legal UINT64 ONNX TopK should return the selected values and indices on CPU, as the equivalent INT64 control does.
Actual behavior
Both models import and build. INT64 runs correctly, but UINT64 fails only when the VM executes:
InternalError: Unsupported input dtype: uint64
The CPU sort dispatch has an int64 branch but no uint64 branch. The script checks ONNX reference results and uses nonnegative values representable in both types.
Environment
TVM 0.28.dev0, LLVM 18.1.3, Linux x86_64; Python 3.12.3, NumPy 2.5.4, ONNX 1.22.0, ORT 1.29.0. The installed binary build revision is unknown; current main was inspected statically, not rebuilt.
Steps to reproduce
Run with an LLVM-enabled TVM installation:
import numpy as np
import onnx
import tvm
from onnx import TensorProto as T, helper as h, numpy_helper as nh
from onnx.reference import ReferenceEvaluator
from tvm import relax
from tvm.relax.frontend.onnx import from_onnx
for dtype, elem_type in (("int64", T.INT64), ("uint64", T.UINT64)):
x = np.array([1, 4, 2], dtype=dtype)
expected = [np.array([4, 2], dtype=dtype), np.array([1, 2], dtype="int64")]
model = h.make_model(h.make_graph([
h.make_node("TopK", ["x", "k"], ["values", "indices"])], "topk",
[h.make_tensor_value_info("x", elem_type, [3])],
[h.make_tensor_value_info("values", elem_type, [2]),
h.make_tensor_value_info("indices", T.INT64, [2])],
[nh.from_array(np.array([2], dtype="int64"), "k")]),
opset_imports=[h.make_opsetid("", 11)], ir_version=10)
onnx.checker.check_model(model, full_check=True)
for a, b in zip(ReferenceEvaluator(model).run(None, {"x": x}), expected):
np.testing.assert_array_equal(a, b)
mod = from_onnx(model, keep_params_in_input=False)
vm = relax.VirtualMachine(relax.build(mod, target="llvm"), tvm.cpu())
try:
actual = vm["main"](tvm.runtime.tensor(x))
for a, b in zip(actual, expected):
np.testing.assert_array_equal(a.numpy(), b)
print(dtype, "control passed")
except Exception as error:
if dtype == "int64":
raise
print(dtype, type(error).__name__, str(error).splitlines()[-1])
Triage
- needs-triage
- Lingua principale
- Python
- Stelle
- 13.9k
- Fork
- 4k
- Merge medio
- 8h 6m
- PR unite (30g)
- 184
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/tvm
-
[Bug] [Relax][ONNX] OneHot does not convert floating-point depth to int64Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaneeds-triage type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
needs-triage type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
needs-triage type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug][Relax] ReorderTakeAfterMatmul fails on vector dot productsForse già presa @hiyufan l’ha presa 10 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
apache/tvm#20595 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
needs-triage type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
bug module:nodes tests
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
rocketride-org/rocketride-server#3020 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
bretterer/home-assistant-rivian#335 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
mampfes/hacs_waste_collection_schedule#8114 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
TIGER-AI-Lab/ClawBench#475 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
UKGovernmentBEIS/inspect_ai#6322 ·
I maintainer di solito rispondono entro 1 giorno