5cbd3f29e3
Fuzz / Run fuzz harnesses (${{ github.event_name == 'schedule' && 'nightly' || 'smoke' }}) (push) Has been cancelled
Create Releases / call-mac (push) Has been cancelled
Create Releases / call-linux (push) Has been cancelled
Create Releases / call-sdist (push) Has been cancelled
Create Releases / call-win (push) Has been cancelled
Create Releases / call-pyodide (push) Has been cancelled
Windows_No_Exception_CI / build (x64, 3.10) (push) Has been cancelled
Check URLs / build (push) Has been cancelled
Create Releases / Attest CI build artifacts (push) Has been cancelled
Create Releases / Check for Publish release build to pypi (push) Has been cancelled
Create Releases / Check for Publish preview build to test.pypi-weekly (push) Has been cancelled
Create Releases / Publish preview build to test.pypi-weekly (push) Has been cancelled
Create Releases / Check for Publish release build to test.pypi (rc-candidates) (push) Has been cancelled
Create Releases / Publish release build to test.pypi (push) Has been cancelled
Create Releases / Check for Publish preview build to pypi-weekly (push) Has been cancelled
Create Releases / Publish preview build to pypi-weekly (push) Has been cancelled
Create Releases / Publish release build to pypi (push) Has been cancelled
Create Releases / test source distribution (push) Has been cancelled
clang-tidy / clang-tidy (push) Has been cancelled
Lint / Validate SBOM (push) Has been cancelled
Lint / Enforce style (push) Has been cancelled
CI / Test windows-2022, 3.14, External, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test windows-latest, 3.10, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test windows-latest, 3.14, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test windows-latest, 3.14t, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, Internal, debug=1, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, External, debug=0, unity_build=1, onnx_ml=1, autogen=1 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, External, debug=0, unity_build=0, onnx_ml=0, autogen=0 (push) Has been cancelled
CI / Test macos-latest, 3.10, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test macos-latest, 3.14, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test macos-latest, 3.14t, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, External, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.10, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14t, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
Pixi CI / Install and lint (ubuntu-24.04-arm) (push) Has been cancelled
Pixi CI / Install and lint (windows-2022) (push) Has been cancelled
Pixi CI / Xcode generator build (push) Has been cancelled
Pixi CI / Install and test (macos-latest, default) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-24.04-arm, default) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-latest, default) (push) Has been cancelled
Pixi CI / Install and test (windows-2022, default) (push) Has been cancelled
Pixi CI / Install and test (macos-latest, oldies) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-24.04-arm, oldies) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-latest, oldies) (push) Has been cancelled
Pixi CI / Install and test (windows-2022, oldies) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Copilot Setup Steps / copilot-setup-steps (push) Has been cancelled
Generate and publish ONNX docs / build (push) Has been cancelled
Generate and publish ONNX docs / deploy (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
125 lines
3.7 KiB
Python
125 lines
3.7 KiB
Python
# Copyright (c) ONNX Project Contributors
|
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
# mypy: ignore-errors
|
|
from __future__ import annotations
|
|
|
|
import numpy as np
|
|
|
|
import onnx
|
|
import onnx.helper as oh
|
|
import onnx.numpy_helper as onh
|
|
import onnx.reference as orf
|
|
|
|
|
|
def create_model():
|
|
"""The following model is equivalent to the following function.
|
|
|
|
.. code-block:: python
|
|
|
|
from onnx import TensorProto
|
|
from onnx.helper import make_tensor
|
|
|
|
from onnxscript import script
|
|
from onnxscript.onnx_opset import opset15 as op
|
|
from onnxscript.onnx_types import FLOAT
|
|
|
|
@script()
|
|
def loop_range_cond_only(A: FLOAT["N"]) -> FLOAT["N"]:
|
|
T = A
|
|
cond = op.Constant(value=make_tensor("true",onnx.TensorProto.BOOL, [1], [1]))
|
|
while cond:
|
|
T = T + A
|
|
cond = op.ReduceSum(T) > -10
|
|
return T
|
|
|
|
model = loop_range_cond_only.to_model_proto()
|
|
"""
|
|
opset_imports = [
|
|
oh.make_opsetid("", 15),
|
|
]
|
|
inputs = []
|
|
outputs = []
|
|
nodes = []
|
|
initializers = []
|
|
sparse_initializers = []
|
|
functions = []
|
|
inputs.append(oh.make_tensor_value_info("A", onnx.TensorProto.FLOAT, shape=("N",)))
|
|
nodes.append(
|
|
oh.make_node(
|
|
"Constant",
|
|
[],
|
|
["cond"],
|
|
value=onh.from_array(np.array([True], dtype=np.bool_), name="value"),
|
|
)
|
|
)
|
|
nodes.append(
|
|
oh.make_node(
|
|
"Constant",
|
|
[],
|
|
["true"],
|
|
value=onh.from_array(np.array(True, dtype=np.bool_), name="value"),
|
|
)
|
|
)
|
|
|
|
def _make_local_graph_body():
|
|
inputs = []
|
|
outputs = []
|
|
nodes = []
|
|
initializers = []
|
|
sparse_initializers = []
|
|
inputs.append(
|
|
oh.make_tensor_value_info("infinite_loop", onnx.TensorProto.INT64, shape=[])
|
|
)
|
|
inputs.append(
|
|
oh.make_tensor_value_info("cond", onnx.TensorProto.BOOL, shape=[])
|
|
)
|
|
inputs.append(oh.make_tensor_value_info("T", onnx.TensorProto.UNDEFINED, []))
|
|
nodes.append(oh.make_node("Add", ["T", "A"], ["T_0"]))
|
|
nodes.append(oh.make_node("ReduceSum", ["T_0"], ["tmp"]))
|
|
nodes.append(
|
|
oh.make_node(
|
|
"Constant",
|
|
[],
|
|
["int64_m10"],
|
|
value=onh.from_array(np.array(-10, dtype=np.int64), name="value"),
|
|
)
|
|
)
|
|
nodes.append(oh.make_node("CastLike", ["int64_m10", "tmp"], ["int64_m10_cast"]))
|
|
nodes.append(oh.make_node("Greater", ["tmp", "int64_m10_cast"], ["cond_1"]))
|
|
nodes.append(oh.make_node("Identity", ["cond_1"], ["cond_out"]))
|
|
outputs.append(
|
|
oh.make_tensor_value_info("cond_out", onnx.TensorProto.BOOL, shape=[])
|
|
)
|
|
outputs.append(oh.make_tensor_value_info("T_0", onnx.TensorProto.UNDEFINED, []))
|
|
return oh.make_graph(
|
|
nodes,
|
|
"loop_body",
|
|
inputs,
|
|
outputs,
|
|
initializers,
|
|
sparse_initializer=sparse_initializers,
|
|
)
|
|
|
|
body = _make_local_graph_body()
|
|
nodes.append(oh.make_node("Loop", ["", "true", "A"], ["T_2"], body=body))
|
|
outputs.append(
|
|
oh.make_tensor_value_info("T_2", onnx.TensorProto.FLOAT, shape=("N",))
|
|
)
|
|
graph = oh.make_graph(
|
|
nodes,
|
|
"loop_range_cond_only",
|
|
inputs,
|
|
outputs,
|
|
initializers,
|
|
sparse_initializer=sparse_initializers,
|
|
)
|
|
return oh.make_model(graph, functions=functions, opset_imports=opset_imports)
|
|
|
|
|
|
class TestReferenceEvaluatorModel:
|
|
def test_loop_fft(self):
|
|
model = create_model()
|
|
session = orf.ReferenceEvaluator(model)
|
|
session.run(None, {"A": -np.arange(10).astype(np.float32)})
|