Repository navigation
Fix builds with newer installed ONNX versions - #33259
Open
Rui Chen (chenrui333) wants to merge 1 commit into
Open
Rui Chen (chenrui333) wants to merge 1 commit into
Rui Chen (chenrui333) wants to merge 1 commit into
Conversation
Signed-off-by: Rui Chen <rui@chenrui.dev>
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The focused compatibility change preserves existing unsupported-type behavior and includes appropriate compile-time and runtime coverage.
0 open findings
What changed in this PR
Restricts type checks to ONNX types currently supported by ONNX Runtime, preserving compatibility with newer installed ONNX versions.
Changes:
- Bounds element-size and type-mapping checks through
INT2. - Verifies newer ONNX types remain unsupported.
| File | Description |
|---|---|
onnxruntime/core/framework/tensorprotoutils.h |
Bounds the element-size table to supported types. |
onnxruntime/core/framework/onnxruntime_map_type_info.h |
Limits bijection validation to supported mappings. |
onnxruntime/test/framework/type_info_test.cc |
Tests supported and newer unsupported conversions. |
onnxruntime/test/framework/tensorutils_test.cc |
Tests zero sizes for newer unsupported types. |
🧠 Review effort: Balanced
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Mark Harfouche (hmaarrfk)
added a commit
to hmaarrfk/onnxruntime-feedstock
that referenced
this pull request
Oct 11, 2026
<details><summary>Claude's draft</summary> Replaces the backport of microsoft/onnxruntime#33134 (float6 types, opset 28, new Cast/Mod/BitShift kernels; 75 files) with microsoft/onnxruntime#33259 "Fix builds with newer installed ONNX versions" at 9be45798 (open, not reviewed yet; 4 files, +27/-7). #33259 only relaxes the two compile-time checks that size their tables by TensorProto_DataType_DataType_ARRAYSIZE, so onnxruntime 1.31.0 compiles against libonnx 1.23.2 with the two float6 types treated as unsupported. It adds no feature upstream 1.31.0 does not have. It applies to 1.31.0 without changes. Consequence: onnxruntime keeps its 1.31.0 operator coverage. libonnx 1.23.2 reports opset 28 as released, so opset-28 models are accepted, but nodes whose schema was re-versioned in opset 28 (Cast, Mod, BitShift and 16 others) have no kernel and fail at session creation. Resume this Claude session: ``` cd /home/mark/git/feedstock/onnxruntime-feedstock claude --resume c16b7120-814d-4a38-9b1f-2afd9f75d054 ``` </details> Claude-Session: https://claude.ai/code/session_01XZa8BwzZpVJtREiCoVo1k6
Mark Harfouche (hmaarrfk)
added a commit
to hmaarrfk/onnxruntime-feedstock
that referenced
this pull request
Oct 11, 2026
<details><summary>Claude's draft</summary> With only the build fix (microsoft/onnxruntime#33259), onnxruntime 1.31.0 compiles against libonnx 1.23.2 but 37 unit tests fail in a local linux-64 build. libonnx 1.23.2 reports opset 28 as released, tests that do not name an ai.onnx opset get 28, and 1.31.0 has no Cast kernel for it ("Failed to find kernel for Cast(28)", 35 times). Rather than skip them, add a test-only patch: * op_tester.cc: give test models an explicit ai.onnx opset of 27 when the test does not set one (CausalConvWithStateTest.*, MoETest.QMoETest_*). * GetCurrentOnnxOpset() in graph_transform_test.cc and graph_transform_test_layernorm.cc: cap at 27 (EmbedLayerNormFusionFormat{2,3}CurrentOpset). * Test updates taken from microsoft/onnxruntime#33134: layout_transformation_potentially_added_ops_test.cc (opset-28 Q/DQ exception), qdq_transformer_test.cc (pin to opset 25) and scan_test.cc (ONNX 1.23 shape-inference messages). 27 is what these tests run at upstream, where ONNX 1.22 is vendored. No library code changes. Resume this Claude session: ``` cd /home/mark/git/feedstock/onnxruntime-feedstock claude --resume c16b7120-814d-4a38-9b1f-2afd9f75d054 ``` </details> Claude-Session: https://claude.ai/code/session_01XZa8BwzZpVJtREiCoVo1k6
Mark Harfouche (hmaarrfk)
added a commit
to hmaarrfk/onnxruntime-feedstock
that referenced
this pull request
Oct 11, 2026
<details><summary>Claude's draft</summary> The build-only fix (microsoft/onnxruntime#33259) left onnxruntime without kernels for the operators ONNX re-versioned in opset 28, so every test that builds a model at libonnx 1.23.2's default opset had to be pinned back to opset 27. The test-only patch covered the CPU suites, but the osx-arm64 jobs still failed in six CoreMLExecutionProviderTest cases with "Failed to find kernel for Cast(28)", and fixing those would have meant patching more test code than any upstream PR does. Go back to microsoft/onnxruntime#33134 (head d9485f2a, still open), which adds opset 28 and the Cast/Mod/BitShift 28 kernels along with the test updates, and drop both the #33259 patch and the test-only opset pin. The recipe is now identical to 423a84b, which built locally on linux-64 with only the machine-specific GroupQueryAttention test failing. Resume this Claude session: ``` cd /home/mark/git/feedstock/onnxruntime-feedstock claude --resume c16b7120-814d-4a38-9b1f-2afd9f75d054 ``` </details> Claude-Session: https://claude.ai/code/session_01XZa8BwzZpVJtREiCoVo1k6
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Restrict the TensorProto element-size table and the ONNX-to-ORT bijection check to the types supported by ONNX Runtime, through INT2. Extend the constexpr and runtime conversion tests to verify that newer ONNX types remain unsupported.
Motivation and Context
Building ONNX Runtime 1.31.0 against installed ONNX 1.23.2 fails two static assertions because ONNX adds FLOAT6E2M3 and FLOAT6E3M2. The existing conversion helpers already return zero or UNDEFINED for unsupported types. Preserve that behavior while checking completeness and bijectivity for supported types; this does not add FLOAT6 or opset 28 support.
Both original checks fail focused compilation against ONNX 1.23.2. The patched current-main headers pass the updated constexpr checks on macOS arm64.
ONNX Runtime 1.31.0 builds from source against brewed ONNX 1.23.2, and its installed C++ inference test passes on macOS arm64. The changed files pass clang-format 20.1.8 and
git diff --check.