| { |
| "op": "ai.onnx.Split", |
| "fixtureArrays": { |
| "ort_axis2_equal_three_outputs_input_input": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], |
| "ort_axis1_middle_dimension_unequal_input_input": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32] |
| }, |
| "cases": [ |
| { |
| "name": "max_arity_float16_positions", |
| "provenance": { |
| "notes": "Synthetic five-output float16 Split contract fixture; every bounded output position receives a distinct consecutive slice." |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "float16", |
| "shape": [10], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [1.0, 2.0] } }, |
| "y1": { "dtype": "float16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [3.0, 4.0] } }, |
| "y2": { "dtype": "float16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [5.0, 6.0] } }, |
| "y3": { "dtype": "float16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [7.0, 8.0] } }, |
| "y4": { "dtype": "float16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [9.0, 10.0] } } |
| } |
| }, |
| { |
| "name": "max_arity_int32_positions", |
| "provenance": { |
| "notes": "Synthetic five-output int32 Split contract fixture; every bounded output position receives a distinct consecutive slice." |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "int32", |
| "shape": [10], |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "int32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [1, 2] } }, |
| "y1": { "dtype": "int32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [3, 4] } }, |
| "y2": { "dtype": "int32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [5, 6] } }, |
| "y3": { "dtype": "int32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [7, 8] } }, |
| "y4": { "dtype": "int32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [9, 10] } } |
| } |
| }, |
| { |
| "name": "max_arity_int16_positions", |
| "provenance": { |
| "notes": "Synthetic five-output int16 Split contract fixture; every bounded output position receives a distinct consecutive slice." |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "int16", |
| "shape": [10], |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "int16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [1, 2] } }, |
| "y1": { "dtype": "int16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [3, 4] } }, |
| "y2": { "dtype": "int16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [5, 6] } }, |
| "y3": { "dtype": "int16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [7, 8] } }, |
| "y4": { "dtype": "int16", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [9, 10] } } |
| } |
| }, |
| { |
| "name": "max_arity_int8_positions", |
| "provenance": { |
| "notes": "Synthetic five-output int8 Split contract fixture; every bounded output position receives a distinct consecutive slice." |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "int8", |
| "shape": [10], |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "int8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [1, 2] } }, |
| "y1": { "dtype": "int8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [3, 4] } }, |
| "y2": { "dtype": "int8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [5, 6] } }, |
| "y3": { "dtype": "int8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [7, 8] } }, |
| "y4": { "dtype": "int8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [9, 10] } } |
| } |
| }, |
| { |
| "name": "max_arity_uint32_positions", |
| "provenance": { |
| "notes": "Synthetic five-output uint32 Split contract fixture; every bounded output position receives a distinct consecutive slice." |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "uint32", |
| "shape": [10], |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "uint32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [1, 2] } }, |
| "y1": { "dtype": "uint32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [3, 4] } }, |
| "y2": { "dtype": "uint32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [5, 6] } }, |
| "y3": { "dtype": "uint32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [7, 8] } }, |
| "y4": { "dtype": "uint32", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [9, 10] } } |
| } |
| }, |
| { |
| "name": "max_arity_uint8_positions", |
| "provenance": { |
| "notes": "Synthetic five-output uint8 Split contract fixture; every bounded output position receives a distinct consecutive slice." |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "uint8", |
| "shape": [10], |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "uint8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [1, 2] } }, |
| "y1": { "dtype": "uint8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [3, 4] } }, |
| "y2": { "dtype": "uint8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [5, 6] } }, |
| "y3": { "dtype": "uint8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [7, 8] } }, |
| "y4": { "dtype": "uint8", "shape": [2], "tolerance": 0, "data": { "kind": "values", "values": [9, 10] } } |
| } |
| }, |
| { |
| "name": "max_arity_bool_positions", |
| "provenance": { |
| "notes": "Synthetic five-output bool Split contract fixture; every bounded output position receives a unique non-constant consecutive slice." |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "bool", |
| "shape": [15], |
| "data": { "kind": "values", "values": [1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "bool", "shape": [3], "tolerance": 0, "data": { "kind": "values", "values": [1, 0, 0] } }, |
| "y1": { "dtype": "bool", "shape": [3], "tolerance": 0, "data": { "kind": "values", "values": [0, 1, 0] } }, |
| "y2": { "dtype": "bool", "shape": [3], "tolerance": 0, "data": { "kind": "values", "values": [0, 0, 1] } }, |
| "y3": { "dtype": "bool", "shape": [3], "tolerance": 0, "data": { "kind": "values", "values": [1, 1, 0] } }, |
| "y4": { "dtype": "bool", "shape": [3], "tolerance": 0, "data": { "kind": "values", "values": [1, 0, 1] } } |
| } |
| }, |
| { |
| "name": "single_output_is_identity", |
| "provenance": { |
| "notes": "ONNX Split is variadic with output min_arity=1; this pins the legal single-output identity case." |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "int16", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [-32768, -7, 0, 1, 1024, 32767] } |
| } |
| }, |
| "outputs": { |
| "y0": { |
| "dtype": "int16", |
| "shape": [2, 3], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [-32768, -7, 0, 1, 1024, 32767] } |
| } |
| } |
| }, |
| { |
| "name": "axis1_two_outputs", |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 5], |
| "data": { "kind": "values", "values": [0.0, 1.0, 2.0, 3.0, 4.0, 10.0, 11.0, 12.0, 13.0, 14.0] } |
| } |
| }, |
| "outputs": { "y0": { "dtype": "float32", "shape": [2, 2] }, "y1": { "dtype": "float32", "shape": [2, 3] } } |
| }, |
| { |
| "name": "ort_axis0_equal_split_float", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis0EqualSplit" |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [4, 2], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2, 2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "ort_axis0_equal_split_bool", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis0EqualSplit" |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { "dtype": "bool", "shape": [4, 2], "data": { "kind": "values", "values": [1, 0, 1, 0, 1, 0, 1, 0] } } |
| }, |
| "outputs": { |
| "y0": { "dtype": "bool", "shape": [2, 2], "tolerance": 0, "data": { "kind": "values", "values": [1, 0, 1, 0] } }, |
| "y1": { "dtype": "bool", "shape": [2, 2], "tolerance": 0, "data": { "kind": "values", "values": [1, 0, 1, 0] } } |
| } |
| }, |
| { |
| "name": "ort_axis0_equal_split_int16", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis0EqualSplit", |
| "notes": "Exact ORT Axis0EqualSplit coverage for int16 payloads." |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { "dtype": "int16", "shape": [4, 2], "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8] } } |
| }, |
| "outputs": { |
| "y0": { |
| "dtype": "int16", |
| "shape": [2, 2], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [1, 2, 3, 4] } |
| }, |
| "y1": { |
| "dtype": "int16", |
| "shape": [2, 2], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [5, 6, 7, 8] } |
| } |
| } |
| }, |
| { |
| "name": "ort_axis1_equal_split_float", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis1EqualSplitFloat" |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2, 2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "axis2_f16", |
| "attrs": { "axis": 2 }, |
| "inputs": { "input": { "dtype": "float16", "shape": [1, 2, 6] } }, |
| "outputs": { "y0": { "dtype": "float16", "shape": [1, 2, 4] }, "y1": { "dtype": "float16", "shape": [1, 2, 2] } }, |
| "tolerance": 0.001 |
| }, |
| { |
| "name": "axis1_three_outputs", |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 6, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 1, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 3, 2], "tolerance": 0.000001 }, |
| "y2": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "axis1_four_outputs_uneven", |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [1, 8, 1], |
| "data": { "kind": "values", "values": [0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [1, 1, 1], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [1, 2, 1], "tolerance": 0.000001 }, |
| "y2": { "dtype": "float32", "shape": [1, 1, 1], "tolerance": 0.000001 }, |
| "y3": { "dtype": "float32", "shape": [1, 4, 1], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "rank6_axis2_two_outputs", |
| "attrs": { "axis": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 1, 1, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [1, 2, 1, 1, 1, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [1, 2, 2, 1, 1, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_axis0_unequal_split_float", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis0UnequalSplitFloat" |
| }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [4, 2], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [1, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [3, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_axis1_unequal_split_float", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis1UnequalSplitFloat" |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 3], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_negative_axis_equal_split", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.NegativeAxis" |
| }, |
| "attrs": { "axis": -1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_axis2_equal_three_outputs", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis2EqualSplit" |
| }, |
| "attrs": { "axis": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2, 6], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_axis2_equal_three_outputs_input_input" } |
| } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0.000001 }, |
| "y2": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_axis2_unequal_three_outputs", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis2UnequalSplit" |
| }, |
| "attrs": { "axis": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2, 6], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_axis2_equal_three_outputs_input_input" } |
| } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 1], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0.000001 }, |
| "y2": { "dtype": "float32", "shape": [2, 2, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_axis1_middle_dimension_unequal", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis1SplitMiddleDimensionUnequally" |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 4, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_axis1_middle_dimension_unequal_input_input" } |
| } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 1, 4], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 3, 4], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_axis1_middle_dimension_equal", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis1SplitMiddleDimensionEqually" |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [2, 4, 4], "data": { "kind": "linspace", "start": 1.0, "end": 32.0 } } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_axis1_equal_float16", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Axis1EqualSplitFloat16" |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float16", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float16", "shape": [2, 2], "tolerance": 0.001 }, |
| "y1": { "dtype": "float16", "shape": [2, 2], "tolerance": 0.001 } |
| } |
| }, |
| { |
| "name": "ort_split18_num_outputs_even_axis1", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Split18_NumOutputsEvenSplitAxis1" |
| }, |
| "attrs": { "axis": 1, "num_outputs": 3 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.000001 }, |
| "y2": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_split18_num_outputs_uneven_axis1", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Split18_NumOutputsUnevenSplitAxis1" |
| }, |
| "attrs": { "axis": 1, "num_outputs": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_axis1_five_outputs_variadic", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Split18_NumOutputsEvenSplitAxis1", |
| "notes": "Extends ORT's axis-1 num_outputs coverage to five valid outputs." |
| }, |
| "attrs": { "axis": 1, "num_outputs": 5 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 5], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { |
| "dtype": "float32", |
| "shape": [2, 1], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [1.0, 6.0] } |
| }, |
| "y1": { |
| "dtype": "float32", |
| "shape": [2, 1], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [2.0, 7.0] } |
| }, |
| "y2": { |
| "dtype": "float32", |
| "shape": [2, 1], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [3.0, 8.0] } |
| }, |
| "y3": { |
| "dtype": "float32", |
| "shape": [2, 1], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [4.0, 9.0] } |
| }, |
| "y4": { |
| "dtype": "float32", |
| "shape": [2, 1], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [5.0, 10.0] } |
| } |
| } |
| }, |
| { |
| "name": "ort_axis1_five_outputs_uneven_variadic", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Split18_NumOutputsUnevenSplitAxis1", |
| "notes": "Projects ORT's axis-1 uneven Split coverage to five explicit output sizes." |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 7], |
| "data": { |
| "kind": "values", |
| "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0] |
| } |
| } |
| }, |
| "outputs": { |
| "y0": { |
| "dtype": "float32", |
| "shape": [2, 1], |
| "data": { "kind": "values", "values": [1.0, 8.0] }, |
| "tolerance": 0 |
| }, |
| "y1": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "data": { "kind": "values", "values": [2.0, 3.0, 9.0, 10.0] }, |
| "tolerance": 0 |
| }, |
| "y2": { |
| "dtype": "float32", |
| "shape": [2, 1], |
| "data": { "kind": "values", "values": [4.0, 11.0] }, |
| "tolerance": 0 |
| }, |
| "y3": { |
| "dtype": "float32", |
| "shape": [2, 1], |
| "data": { "kind": "values", "values": [5.0, 12.0] }, |
| "tolerance": 0 |
| }, |
| "y4": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "data": { "kind": "values", "values": [6.0, 7.0, 13.0, 14.0] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "ort_zero_size_input_equal_split", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.ZeroSizeInput" |
| }, |
| "attrs": { "axis": -1 }, |
| "inputs": { "input": { "dtype": "float32", "shape": [0, 2], "data": { "kind": "values", "values": [] } } }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [0, 1], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [0, 1], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "ort_zero_size_output_first_chunk", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.ZeroSizeOutput" |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 0], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 }, |
| "y2": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_uint8_negative_axis_logical_uint32", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Uint8NegativeAxis", |
| "notes": "Logical uint8 payload values are stored one per uint32 slot in this framework." |
| }, |
| "attrs": { "axis": -1 }, |
| "inputs": { |
| "input": { |
| "dtype": "uint32", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "uint32", "shape": [2, 2], "tolerance": 0 }, |
| "y1": { "dtype": "uint32", "shape": [2, 2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "ort_uint8_axis1_middle_unequal_logical_uint32", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Uint8Axis1SplitMiddleDimensionUnequally", |
| "notes": "Logical uint8 payload values are stored one per uint32 slot in this framework." |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "uint32", |
| "shape": [2, 4, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_axis1_middle_dimension_unequal_input_input" } |
| } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "uint32", "shape": [2, 1, 4], "tolerance": 0 }, |
| "y1": { "dtype": "uint32", "shape": [2, 3, 4], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "onnx_backend_split_1d_uneven_split_opset18", |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_1d_uneven_split_opset18" }, |
| "attrs": { "num_outputs": 4 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [7], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y3": { "dtype": "float32", "shape": [1], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "onnx_backend_split_2d_uneven_split_opset18", |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_2d_uneven_split_opset18" }, |
| "attrs": { "axis": 1, "num_outputs": 3 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 8], |
| "data": { |
| "kind": "values", |
| "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0] |
| } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 3], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2, 3], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [2, 2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "onnx_backend_split_equal_parts_1d_opset13", |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_equal_parts_1d_opset13" }, |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "onnx_backend_split_equal_parts_1d_opset18", |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_equal_parts_1d_opset18" }, |
| "attrs": { "axis": 0, "num_outputs": 3 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "onnx_backend_split_equal_parts_2d", |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_equal_parts_2d" }, |
| "attrs": { "axis": 1, "num_outputs": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 3], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2, 3], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "onnx_backend_split_equal_parts_2d_opset13", |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_equal_parts_2d_opset13" }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 3], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2, 3], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "onnx_backend_split_equal_parts_default_axis_opset13", |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_equal_parts_default_axis_opset13" |
| }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "onnx_backend_split_equal_parts_default_axis_opset18", |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_equal_parts_default_axis_opset18" |
| }, |
| "attrs": { "num_outputs": 3 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "onnx_backend_split_variable_parts_1d_opset18", |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| }, |
| "split": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 4] } } |
| }, |
| "outputs": { "y0": { "dtype": "float32", "shape": [2] }, "y1": { "dtype": "float32", "shape": [4] } }, |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_variable_parts_1d_opset18", |
| "notes": "ONNX int64 tensors use framework storage where representable. The corresponding opset-13 backend vector is execution-identical on this package surface." |
| } |
| }, |
| { |
| "name": "onnx_backend_split_variable_parts_2d_opset18", |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0] } |
| }, |
| "split": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 4] } } |
| }, |
| "outputs": { "y0": { "dtype": "float32", "shape": [2, 2] }, "y1": { "dtype": "float32", "shape": [2, 4] } }, |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_variable_parts_2d_opset18", |
| "notes": "ONNX int64 tensors use framework storage where representable. The corresponding opset-13 backend vector is execution-identical on this package surface." |
| } |
| }, |
| { |
| "name": "onnx_backend_split_variable_parts_default_axis_opset18", |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| }, |
| "split": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 4] } } |
| }, |
| "outputs": { "y0": { "dtype": "float32", "shape": [2] }, "y1": { "dtype": "float32", "shape": [4] } }, |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_variable_parts_default_axis_opset18", |
| "notes": "ONNX int64 tensors use framework storage where representable. The corresponding opset-13 backend vector is execution-identical on this package surface." |
| } |
| }, |
| { |
| "name": "onnx_backend_split_zero_size_splits_opset18", |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [0], "data": { "kind": "values", "values": [] } }, |
| "split": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [0, 0, 0] } } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [0] }, |
| "y1": { "dtype": "float32", "shape": [0] }, |
| "y2": { "dtype": "float32", "shape": [0] } |
| }, |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_split_zero_size_splits_opset18", |
| "notes": "ONNX int64 tensors use framework storage where representable. The corresponding opset-13 backend vector is execution-identical on this package surface." |
| } |
| }, |
| { |
| "name": "ort_uint8_axis1_unequal_edge_values", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.Uint8Axis1SplitMiddleDimensionUnequally" |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "uint8", |
| "shape": [2, 6], |
| "data": { "kind": "values", "values": [0, 1, 2, 3, 4, 5, 250, 251, 252, 253, 254, 255] } |
| }, |
| "split": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 4] } } |
| }, |
| "outputs": { |
| "y0": { "dtype": "uint8", "shape": [2, 2], "tolerance": 0 }, |
| "y1": { "dtype": "uint8", "shape": [2, 4], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "ort_int8_negative_axis_equal_edge_values", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/tensor/split_op_test.cc", |
| "test": "SplitOperatorTest.NegativeAxis", |
| "notes": "Negative-axis equal split with logical int8 edge values." |
| }, |
| "attrs": { "axis": -1 }, |
| "inputs": { |
| "input": { |
| "dtype": "int8", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [-128, -1, 0, 1, 2, 3, 4, 127] } |
| }, |
| "split": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 2] } } |
| }, |
| "outputs": { |
| "y0": { "dtype": "int8", "shape": [2, 2], "tolerance": 0 }, |
| "y1": { "dtype": "int8", "shape": [2, 2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "rank7_middle_axis_two_outputs", |
| "provenance": { |
| "notes": "Compact correctness sibling for the rank7 middle-axis split benchmark; exercises high-rank address arithmetic with an equal two-way split on axis 2." |
| }, |
| "attrs": { "axis": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2, 6, 1, 1, 1, 1], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.21 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 3, 1, 1, 1, 1], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 2, 3, 1, 1, 1, 1], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "block_vec4_axis0_two_f32", |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [6, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.21, "cosStep": 0.13 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 4], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [4, 4], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "block_vec4_axis1_two_f32_rank3", |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 6, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 4, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "block_vec4_negative_axis_two_f32", |
| "attrs": { "axis": -1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2, 8], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.19 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "block_vec4_axis1_three_f16", |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float16", |
| "shape": [2, 8, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.21, "cosStep": 0.29 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float16", "shape": [2, 2, 2], "tolerance": 0.001 }, |
| "y1": { "dtype": "float16", "shape": [2, 4, 2], "tolerance": 0.001 }, |
| "y2": { "dtype": "float16", "shape": [2, 2, 2], "tolerance": 0.001 } |
| } |
| }, |
| { |
| "name": "block_vec4_axis0_four_u32", |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "uint32", |
| "shape": [16, 4], |
| "data": { "kind": "cycle", "values": [3, 9, 1, 7, 5, 2, 11, 4, 8, 6, 0, 13] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "uint32", "shape": [4, 4], "tolerance": 0 }, |
| "y1": { "dtype": "uint32", "shape": [4, 4], "tolerance": 0 }, |
| "y2": { "dtype": "uint32", "shape": [4, 4], "tolerance": 0 }, |
| "y3": { "dtype": "uint32", "shape": [4, 4], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "block_vec4_empty_y0", |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [4, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.31 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [0, 4], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [4, 4], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_caseB_empty", |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [6], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| }, |
| "split": { "dtype": "uint32", "shape": [0], "data": { "kind": "values", "values": [] } } |
| }, |
| "outputs": { |
| "y0": { |
| "dtype": "float32", |
| "shape": [2], |
| "data": { "kind": "values", "values": [1.0, 2.0] }, |
| "tolerance": 0.001 |
| }, |
| "y1": { |
| "dtype": "float32", |
| "shape": [4], |
| "data": { "kind": "values", "values": [3.0, 4.0, 5.0, 6.0] }, |
| "tolerance": 0.001 |
| } |
| } |
| }, |
| { |
| "name": "rank7_axis2_two_outputs", |
| "attrs": { "axis": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2, 3, 2, 1, 1, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 1, 2, 1, 1, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 2, 2, 2, 1, 1, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "int32_block_vec4_axis0_two", |
| "attrs": { "axis": 0 }, |
| "inputs": { |
| "input": { |
| "dtype": "int32", |
| "shape": [8, 4], |
| "data": { "kind": "cycle", "values": [3, -9, 1, 7, -5, 2, 11, -4, 8, -6, 0, 13] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "int32", "shape": [4, 4], "tolerance": 0 }, |
| "y1": { "dtype": "int32", "shape": [4, 4], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "scalar_fallback_unaligned_last_axis_f32", |
| "attrs": { "axis": -1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [1, 4, 6], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.27 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [1, 4, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [1, 4, 4], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "scalar_three_outputs_empty_middle_offset", |
| "attrs": { "axis": -1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 5], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { |
| "dtype": "float32", |
| "shape": [2, 3], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 6.0, 7.0, 8.0] } |
| }, |
| "y1": { "dtype": "float32", "shape": [2, 0], "tolerance": 0, "data": { "kind": "values", "values": [] } }, |
| "y2": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [4.0, 5.0, 9.0, 10.0] } |
| } |
| } |
| }, |
| { |
| "name": "scalar_rank7_middle_axis_divmod_correctness", |
| "attrs": { "axis": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "int32", |
| "shape": [1, 1, 3, 3, 1, 1, 1], |
| "data": { "kind": "values", "values": [0, 1, 2, 3, 4, 5, 6, 7, 8] } |
| } |
| }, |
| "outputs": { |
| "y0": { |
| "dtype": "int32", |
| "shape": [1, 1, 2, 3, 1, 1, 1], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [0, 1, 2, 3, 4, 5] } |
| }, |
| "y1": { |
| "dtype": "int32", |
| "shape": [1, 1, 1, 3, 1, 1, 1], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [6, 7, 8] } |
| } |
| } |
| }, |
| { |
| "name": "scalar_negative_axis_empty_leading_uint8", |
| "attrs": { "axis": -1 }, |
| "inputs": { |
| "input": { |
| "dtype": "uint8", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [0, 128, 255, 1, 127, 254] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "uint8", "shape": [2, 0], "tolerance": 0, "data": { "kind": "values", "values": [] } }, |
| "y1": { |
| "dtype": "uint8", |
| "shape": [2, 3], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [0, 128, 255, 1, 127, 254] } |
| } |
| } |
| }, |
| { |
| "name": "scalar_trailing_empty_y1_no_oob", |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { |
| "dtype": "float32", |
| "shape": [2, 3], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] } |
| }, |
| "y1": { "dtype": "float32", "shape": [2, 0], "tolerance": 0, "data": { "kind": "values", "values": [] } } |
| } |
| }, |
| { |
| "name": "scalar_f16_unaligned_last_axis", |
| "attrs": { "axis": -1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float16", |
| "shape": [2, 5], |
| "data": { "kind": "values", "values": [1.0, 2.0, 4.0, 8.0, 16.0, 0.5, 0.25, 0.125, -1.0, -2.0] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float16", "shape": [2, 3], "tolerance": 0.001 }, |
| "y1": { "dtype": "float16", "shape": [2, 2], "tolerance": 0.001 } |
| } |
| }, |
| { |
| "name": "three_outputs_negative_axis_unequal_mod4_tails", |
| "provenance": { |
| "notes": "Compact scalar three-output lock with multiple outer rows and segment lengths 6/5/3 (mod-4 tails 2/1/3). Negative axis normalization and unequal source offsets expose cross-segment or row-boundary corruption in the x4-coarsened path." |
| }, |
| "attrs": { "axis": -1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3, 14], |
| "data": { "kind": "linspace", "start": -42.0, "end": 41.0 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 3, 6], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2, 3, 5], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [2, 3, 3], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "rank8_middle_axis_two_outputs", |
| "attrs": { "axis": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2, 6, 1, 1, 1, 1, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.21 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 3, 1, 1, 1, 1, 2], "tolerance": 0.000001 }, |
| "y1": { "dtype": "float32", "shape": [2, 2, 3, 1, 1, 1, 1, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "block_scalar_x4_three_outputs_y2_dominant_groups", |
| "provenance": { |
| "notes": "Three-output block split whose runs are 2/3/6 scalars — none a multiple of 4 — so the vec4 block variant is ineligible and the scalar-bound-x4 block variant renders. Y2 needs two four-scalar groups per outer row while Y0/Y1 need one each, so the third output's group count is the strict maximum and it, not Y0/Y1, sets the loop bound. Plain ONNX Split semantics: axis=1 with split=[2,3,6] summing to the axis dim 11." |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [3, 11], "data": { "kind": "linspace", "start": -16.0, "end": 16.0 } } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [3, 2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [3, 3], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [3, 6], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "block_vec4_three_outputs_y2_dominant_count", |
| "provenance": { |
| "notes": "Three-output vec4 block split where the last chunk is the largest: runs 2/2/4 rows of inner 2 give 4/4/8 scalars, every boundary vec4-aligned, so Y2's vec4 run is twice Y0's and Y1's. That makes the third output's element count the strict maximum, the regime where the loop bound comes from Y2 rather than from the first two outputs. Plain ONNX Split semantics: axis=1 with split=[2,2,4] summing to the axis dim 8." |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [2, 8, 2], "data": { "kind": "linspace", "start": -15.5, "end": 15.5 } } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [2, 4, 2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "block_vec4_four_outputs_axis1_y3_dominant_count", |
| "provenance": { |
| "notes": "Four-output vec4 block split on a middle axis with strictly growing chunks 2/2/4/6 (rows of inner 2, so 4/4/8/12 scalars, all vec4-aligned). The only four-output vec4 fixture until now split axis 0 into four equal chunks, so nothing exercised a non-zero axis (outer slices > 1 with a per-output row stride) nor a last output whose element count is the strict maximum over all four. Plain ONNX Split semantics: axis=1 with split=[2,2,4,6] summing to the axis dim 14." |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 14, 2], |
| "data": { "kind": "linspace", "start": -27.5, "end": 27.5 } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0 }, |
| "y1": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0 }, |
| "y2": { "dtype": "float32", "shape": [2, 4, 2], "tolerance": 0 }, |
| "y3": { "dtype": "float32", "shape": [2, 6, 2], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "block_vec4_four_outputs_empty_y3", |
| "provenance": { |
| "notes": "Four-output vec4 block split whose last chunk is empty (split=[4,4,4,0]): ONNX allows a zero-length entry in `split` as long as the entries are non-negative and sum to the axis dim, and the matching empty output must still be produced. The existing empty-chunk vec4 fixture empties Y0 in a two-output split, so no fixture ever gave the four-output block path a zero-length final run — the case where the fourth copy must be elided entirely instead of reading past the input. Values are a 13-long cycle over 12-wide rows so no repeat aligns with a row or chunk boundary." |
| }, |
| "attrs": { "axis": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "uint32", |
| "shape": [2, 12], |
| "data": { "kind": "cycle", "values": [3, 9, 1, 7, 5, 2, 11, 4, 8, 6, 0, 13, 12] } |
| } |
| }, |
| "outputs": { |
| "y0": { "dtype": "uint32", "shape": [2, 4], "tolerance": 0 }, |
| "y1": { "dtype": "uint32", "shape": [2, 4], "tolerance": 0 }, |
| "y2": { "dtype": "uint32", "shape": [2, 4], "tolerance": 0 }, |
| "y3": { "dtype": "uint32", "shape": [2, 0], "tolerance": 0 } |
| } |
| } |
| ] |
| } |
|
|