NVIDIA / NVIDIA/TensorRT

Myelin "Could not infer output types for operation: dequantize" on SM 8.7 (Orin); identical engine builds on SM 11.0 (Thor) with the same TensorRT 10.16.2.10

Open
#4,832 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Module:Quantization
Dominant language
C++
Stars
13.4k
Forks
2.4k
Avg merge
5d 3h
Merged PRs (30d)
2

Description

Summary

Myelin fails to compile a dequantize operation on SM 8.7 (Orin) that compiles successfully on SM 11.0 (Thor), with identical TensorRT 10.16.2.10, identical L4T R39.2, and the byte-identical ONNX file. The two devices differ only in GPU architecture.

Environment

Orin Thor
TensorRT 10.16.2.10-1+cuda13.2 (trtexec v101602) identical
L4T R39 revision 2.0 identical
GPU arch SM 8.7 (Ampere) SM 11.0 (Blackwell)
Result ❌ build fails ✅ builds in 123 s

Producer: NVIDIA ModelOpt 0.44.0 (modelopt.onnx.quantization), INT8 PTQ, entropy calibration, 320 real-image samples. Consumer: trtexec --stronglyTyped.

Reproduction

trtexec --onnx=quantized_int8.onnx --saveEngine=int8.engine --stronglyTyped

Failure

Every tactic is skipped with:

Error Code 9: ... [type.cpp:186: infer_type] Could not infer output types for operation:
291: dequantize: Dequantized input0-(f32[1,16,512,512]) | input0 reshape out_transpose_out
reshape out slice_U28 out-(i8[]), MyelinPW(42188) - Input Dequantization 0 scale
weightsHalf-0.35498H:(f16[]) ... No matching rules found for input operand types
In compileGraph at .../myelin/codeGenerator.cpp:1795

The operand mix is f32 activation + i8 slice + f16 scale. The Ampere codegen path appears to have no rule for that combination; the Blackwell path does.

What this is not

Three different quantization scopes were produced, giving three distinct artifacts. All three fail on Orin with a byte-identical error — same node 291, same MyelinPW(42188), same 0.35498 scale:

Scope Excluded op types ONNX sha256 (16) Orin
plain INT8 none fcf873e63e0a951c
head-aware Sigmoid, ReduceMax, Flatten, TopK, Gather, GatherElements 03d2ab3115dd4de5
head + stem above + Reshape, Transpose, Slice 540fa615ced07025

The error not moving while the graph does rules out quantization scope as the cause, and Thor compiling the identical file rules out the model and the calibration. That leaves architecture-specific codegen.

Impact

Strongly-typed INT8 is unavailable on Orin for this detector family. The documented alternative — weakly-typed --int8 --fp16 — permits silent downcast, which our deployment contract forbids.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the failure with trtexec --onnx=quantized_int8.onnx --saveEngine=int8.engine --stronglyTyped on Orin, then compare the same artifact on Thor. Inspect the type inference location in type.cpp:186 and the code-generation path referenced at myelin/codeGenerator.cpp:1795. Done means the strongly typed INT8 engine builds successfully on Orin without weakening the deployment contract.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
compilers, machine-learning
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.