| { |
| "fixtureArrays": { |
| "dp4a_s8_pattern": [-128, 127, 0, -1, 56, -77, 3, 100, -100, 42, -5, 19, -64, 88, -33, 7, 125, -90], |
| "dp4a_u8_pattern": [0, 255, 128, 7, 200, 31, 129, 64, 99, 3, 254, 127, 1, 88, 173, 240, 16, 5], |
| "ort_u8s8_per_column_batched_zero_point_input_b": [0, -8, 2, 3, -11, -13, -8, 1, 2, 4, 4, -10, 3, 2, -11, 2, 0, -8, 2, 3, -11, -13, -8, 1, 2, 4, 4, -10, 3, 2, -11, 2], |
| "dp4a_u8u8_k64_no_zero_points_input_b": [7, 200, 31, 129, 64, 99, 3, 254, 127, 1, 88, 173, 240, 16, 5, 0, 255, 128], |
| "dp4a_s8s8_k260_both_zero_points_tails_input_b": [-77, 3, 100, -100, 42, -5, 19, -64, 88, -33, 7, 125, -90, -128, 127, 0, -1, 56], |
| "dp4a_u8u8_k260_both_zero_points_tails_input_b": [64, 99, 3, 254, 127, 1, 88, 173, 240, 16, 5, 0, 255, 128, 7, 200, 31, 129], |
| "ort_s8s8_a_nd_by_b_nd_scalar_zero_points_input_a": [-3, 7, 5, -6, 4, -5, 8, 7, -3, 7, 5, -6, 4, -5, 8, 7], |
| "ort_s8s8_a_nd_by_b_nd_scalar_zero_points_output_y": [-55, 16, 89, -44, 122, 154, 68, -39, -55, 16, 89, -44, 122, 154, 68, -39], |
| "dp4a_tail_k130_rank2_u8u8_scalar_zp_exact_input_a": [0, 255, 121, 7, 200, 31, 129, 64, 99, 3, 254, 127, 1, 88, 173, 240, 16, 5], |
| "dp4a_gemv_no_zero_s8s8_m1_k64_n512_input_b": [2, -1, 3, -2, 1, 4, -3, 2, -5, 6, 0, -4, 3, 1, -2, 5, -1] |
| }, |
| "cases": [ |
| { |
| "name": "uint8_uint8_scalar_zero_points", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [130, 129, 128, 127, 126, 125] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [3, 2], |
| "data": { "kind": "values", "values": [127, 128, 129, 130, 131, 132] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [128] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [129] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 2] } } |
| }, |
| { |
| "name": "int8_uint8_negative_values", |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [2, 2], "data": { "kind": "values", "values": [-3, -2, 1, 4] } }, |
| "b": { "dtype": "uint8", "shape": [2, 3], "data": { "kind": "values", "values": [10, 20, 30, 40, 50, 60] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-1] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [30] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 3] } } |
| }, |
| { |
| "name": "ort_2d_s8s8", |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [2, 4], "data": { "kind": "values", "values": [-3, 7, 5, -6, 4, -5, 8, 7] } }, |
| "b": { |
| "dtype": "int8", |
| "shape": [4, 4], |
| "data": { "kind": "values", "values": [5, -3, 7, 8, -6, -8, -3, 6, 7, 9, 9, -5, 8, 7, -6, 7] } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [5] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [5] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 4], "tolerance": 0 } }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_t" |
| } |
| }, |
| { |
| "name": "uint8_zero_k_dimension_outputs_zero", |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [2, 0], "data": { "kind": "values", "values": [] } }, |
| "b": { "dtype": "uint8", "shape": [0, 3], "data": { "kind": "values", "values": [] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [17] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [23] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 3], "tolerance": 0 } } |
| }, |
| { |
| "name": "int8_nonzero_zero_points_large_accumulator", |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [127, -128, 64, -64, -1, 2, -3, 4] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [4, 2], |
| "data": { "kind": "values", "values": [-128, 127, 64, -64, 32, -32, -16, 16] } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-3] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [5] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_empty_m_dimension", |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [0, 3], "data": { "kind": "values", "values": [] } }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [1, 4, 2, 5, 3, 6] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [12] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [0, 2], "tolerance": 0 } }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_2D_empty_input" |
| } |
| }, |
| { |
| "name": "ort_1x1_u8u8_scalar_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger" |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [1, 1], "data": { "kind": "values", "values": [11] } }, |
| "b": { "dtype": "uint8", "shape": [1, 1], "data": { "kind": "values", "values": [13] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [12] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [12] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [1, 1], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_u8u8_zero_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_WithZero_ZeroPoint" |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [4, 3], |
| "data": { "kind": "values", "values": [11, 7, 3, 10, 6, 2, 9, 5, 1, 8, 4, 0] } |
| }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [1, 4, 2, 5, 3, 6] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [0] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [4, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_int8_uint8_2d_zero_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_uint8_2D" |
| }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [2, 3], "data": { "kind": "values", "values": [-3, 7, 5, 4, -5, 8] } }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [5, 12, 7, 2, 9, 6] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [0] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_int8_uint8_2d_omitted_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_uint8_2D" |
| }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [2, 3], "data": { "kind": "values", "values": [-3, 7, 5, 4, -5, 8] } }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [5, 12, 7, 2, 9, 6] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "only_b_zero_point_present", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "notes": "Covers ONNX optional-input behavior with a_zero_point omitted and b_zero_point supplied." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [2, 3], "data": { "kind": "values", "values": [2, 5, 9, 11, 17, 23] } }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [3, 7, 13, 19, 29, 31] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [10] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "only_a_zero_point_present", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "notes": "Covers ONNX optional-input behavior with b_zero_point omitted and a_zero_point supplied." |
| }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [2, 3], "data": { "kind": "values", "values": [-9, -1, 6, 13, -7, 4] } }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [5, 12, 7, 2, 9, 6] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [2] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_int8_uint8_2d_nonzero_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_uint8_2D_WithZeroPoints" |
| }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [2, 3], "data": { "kind": "values", "values": [-3, 7, 5, 4, -5, 8] } }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [15, 22, 17, 12, 19, 16] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [2] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [10] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "rank1_only_b_zero_point_present", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "notes": "Covers rank-1 dot product optional-input behavior with a_zero_point omitted and b_zero_point supplied." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [10, 20, 30] } }, |
| "b": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [1, -1, 2] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [], "tolerance": 0 } } |
| }, |
| { |
| "name": "rank1_only_a_zero_point_present", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "notes": "Covers rank-1 dot product optional-input behavior with b_zero_point omitted and a_zero_point supplied." |
| }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [-1, 2, -3] } }, |
| "b": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [10, 20, 30] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [], "tolerance": 0 } } |
| }, |
| { |
| "name": "rank1_zero_points_omitted", |
| "provenance": { |
| "source": "ONNX MatMulInteger-10 optional-input contract", |
| "notes": "Completes the rank-1 dot-product presence matrix with both zero points omitted and defaulting to zero." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [1, 2, 3] } }, |
| "b": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [4, 5, 6] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [32] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "ort_1d_dot_u8u8_rank0_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_1D_Vector_DotProduct" |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [4], "data": { "kind": "values", "values": [1, 2, 3, 4] } }, |
| "b": { "dtype": "uint8", "shape": [4], "data": { "kind": "values", "values": [5, 6, 7, 8] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [0] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_1d_dot_s8s8_rank0_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_1D_Vector_DotProduct_int8" |
| }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [1, -2, 3] } }, |
| "b": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [4, 5, -6] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [0] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_1d_dot_u8s8_rank0_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_1D_Vector_DotProduct_uint8_int8" |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [10, 20, 30] } }, |
| "b": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [1, -1, 2] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [0] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_1d_dot_s8u8_rank0_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_1D_Vector_DotProduct_int8_uint8" |
| }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [-1, 2, -3] } }, |
| "b": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [10, 20, 30] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [0] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_int8_uint8_batched_nd_by_nd", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_uint8_A_ND_B_ND" |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [1, -2, 3, -1, 4, -2, 1, -2, 3, -1, 4, -2] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [2, 3, 2], |
| "data": { "kind": "values", "values": [10, 20, 30, 40, 50, 60, 10, 20, 30, 40, 50, 60] } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [0] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 2], |
| "data": { "kind": "values", "values": [100, 120, 10, 20, 100, 120, 10, 20] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "ort_int8_uint8_batched_nd_by_2d", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_uint8_A_ND_B_2D" |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [1, -2, 3, -1, 4, -2, 2, 0, -1, 0, 3, 1] } |
| }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [10, 20, 30, 40, 50, 60] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [0] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 2], |
| "data": { "kind": "values", "values": [100, 120, 10, 20, -30, -20, 140, 180] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "batched_nd_by_2d_no_zero_points", |
| "provenance": { |
| "notes": "Both zero points omitted on an A-rank-3 by B-rank-2 product; the ONNX default of 0 makes the expected output identical to ort_int8_uint8_batched_nd_by_2d." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [1, -2, 3, -1, 4, -2, 2, 0, -1, 0, 3, 1] } |
| }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [10, 20, 30, 40, 50, 60] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 2], |
| "data": { "kind": "values", "values": [100, 120, 10, 20, -30, -20, 140, 180] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "batched_nd_by_2d_a_zero_point_only", |
| "provenance": { |
| "notes": "A-rank-3 by B-rank-2 with only the A zero point supplied, so the B zero point takes the ONNX default of 0." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [1, -2, 3, -1, 4, -2, 2, 0, -1, 0, 3, 1] } |
| }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [10, 20, 30, 40, 50, 60] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 2], |
| "data": { "kind": "values", "values": [10, 0, -80, -100, -120, -140, 50, 60] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "ort_u8s8_per_column_rank2_zero_point", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_PerColumn_ND", |
| "notes": "Rank-2 slice of ORT's per-column zero-point case." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [125, 135, 133, 122, 132, 123, 136, 135] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [4, 4], |
| "data": { "kind": "values", "values": [0, -8, 2, 3, -11, -13, -8, 1, 2, 4, 4, -10, 3, 2, -11, 2] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [133] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [4], "data": { "kind": "values", "values": [1, -2, 2, -1] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [-38, -18, 123, -61, 128, 142, 80, -45] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "ort_u8s8_per_column_batched_zero_point", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_PerColumn_ND" |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [2, 2, 4], |
| "data": { |
| "kind": "values", |
| "values": [125, 135, 133, 122, 132, 123, 136, 135, 125, 135, 133, 122, 132, 123, 136, 135] |
| } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [2, 4, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_u8s8_per_column_batched_zero_point_input_b" } |
| } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [133] } }, |
| "b_zero_point": { |
| "dtype": "int8", |
| "shape": [2, 1, 4], |
| "data": { "kind": "values", "values": [1, -2, 2, -1, 2, -4, -1, 0] } |
| } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 4], |
| "data": { |
| "kind": "values", |
| "values": [-38, -18, 123, -61, 128, 142, 80, -45, -21, -52, 72, -44, 134, 130, 62, -39] |
| }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "ort_s8u8_per_column_batched_zero_point", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_uint8_PerColumn_ND" |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 2], |
| "data": { "kind": "values", "values": [1, -2, 3, 4, -1, 5, 2, -3] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [10, 20, 30, 1, 2, 3, 4, 5, 6, 7, 8, 9] } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [0] } }, |
| "b_zero_point": { |
| "dtype": "uint8", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6] } |
| } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [9, 18, 27, 27, 54, 81, 15, 15, 15, -9, -9, -9] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "onnx_backend_matmulinteger", |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_matmulinteger" }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [4, 3], |
| "data": { "kind": "values", "values": [11, 7, 3, 10, 6, 2, 9, 5, 1, 8, 4, 0] } |
| }, |
| "b": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [1, 4, 2, 5, 3, 6] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [12] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [4, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_u8u8_k64_no_zero_points", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [5, 64], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [64, 9], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8u8_k64_no_zero_points_input_b" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [5, 9], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_u8s8_k8_a_zero_point_only", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [3, 8], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [8, 5], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [131] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [3, 5], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_s8u8_k8_b_zero_point_only", |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [3, 8], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [8, 5], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [200] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [3, 5], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_u8s8_k12_both_zero_points", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [4, 12], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [12, 6], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [117] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-9] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [4, 6], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_s8s8_k260_both_zero_points_tails", |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [9, 260], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [260, 17], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_s8s8_k260_both_zero_points_tails_input_b" } |
| } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [5] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-7] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [9, 17], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_u8u8_k260_both_zero_points_tails", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [9, 260], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [260, 17], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_u8u8_k260_both_zero_points_tails_input_b" } |
| } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [128] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [255] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [9, 17], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_u8u8_k256_no_zero_points_large", |
| "provenance": { |
| "notes": "A compact wide, short-K case exercises the M32/N128/KWords32 packed-dot tile with omitted zero points while keeping the expected int32 output inexpensive to compute." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 256], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [256, 128], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8u8_k64_no_zero_points_input_b" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "DP4A_SHORT_K_MIN_MN": 64, "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "dp4a_s8s8_medium_k_m64_k96_n128", |
| "provenance": { |
| "notes": "A compact medium-K case exercises the M32/N64 packed-dot reuse tile with signed inputs and exact int32 output." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [64, 96], |
| "data": { "kind": "cycle", "values": [-128, 127, 0, -1, 56, -77, 3, 100, -100, 42, -5, 19, -64, 88, -33, 7] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [96, 128], |
| "data": { "kind": "cycle", "values": [7, -11, 63, -64, 126, -127, 4, 91, -37, 18, -2, 55, -83, 32, 1, -99] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { |
| "DP4A_SHORT_K_MAX": 64, |
| "DP4A_MEDIUM_K_MAX": 128, |
| "DP4A_MEDIUM_K_MIN_MN": 64, |
| "EXACT_MATRIX_MIN_INVOCATIONS": 0 |
| } |
| }, |
| { |
| "name": "dp4a_u8s8_k256_a_zero_point_only_large", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 256], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [256, 128], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [131] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "dp4a_s8u8_k256_b_zero_point_only_large", |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [64, 256], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [256, 128], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [200] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "dp4a_s8s8_k260_both_zero_points_large", |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [65, 260], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [260, 129], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_s8s8_k260_both_zero_points_tails_input_b" } |
| } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [5] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-7] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 129], "tolerance": 0 } }, |
| "tunables": { |
| "DP4A_LARGE_MIN_M": 64, |
| "DP4A_LARGE_MIN_N": 128, |
| "DP4A_LARGE_MIN_K": 256, |
| "EXACT_MATRIX_MIN_INVOCATIONS": 0 |
| } |
| }, |
| { |
| "name": "dp4a_rank3_by_rank3_u8s8_k256_large", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [2, 64, 256], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [2, 256, 128], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [131] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [-3] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 64, 128], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_rank3_by_rank2_u8s8_k256_large", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [2, 64, 256], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [256, 128], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_s8s8_k260_both_zero_points_tails_input_b" } |
| } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [131] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [-3] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 64, 128], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_s8s8_a_nd_by_2d_scalar_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_t_A_ND" |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 4], |
| "data": { "kind": "values", "values": [-3, 7, 5, -6, 4, -5, 8, 7, 7, -4, 3, 6, -4, -5, 5, 7] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [4, 3], |
| "data": { "kind": "values", "values": [5, -3, 7, 8, -6, -8, -3, 6, 7, 9, 9, -5] } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [3] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [4] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [-49, -39, 21, -46, 103, 78, -9, 57, 69, -33, 153, 45] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "ort_s8s8_a_nd_by_b_nd_scalar_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_t_A_ND_B_ND" |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_s8s8_a_nd_by_b_nd_scalar_zero_points_input_a" } |
| } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [2, 4, 4], |
| "data": { |
| "kind": "values", |
| "values": [5, -3, 7, 8, -6, -8, -3, 6, 7, 9, 9, -5, 8, 7, -6, 7, 5, -3, 7, 8, -6, -8, -3, 6, 7, 9, 9, -5, 8, 7, -6, 7] |
| } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [5] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [5] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_s8s8_a_nd_by_b_nd_scalar_zero_points_output_y" } |
| }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "ort_s8s8_a_nd_by_b_nd_no_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_t_No_Zero_Point", |
| "notes": "Valid ORT rank-3 by rank-3 MatMulInteger with omitted zero-points." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 4], |
| "data": { "kind": "values", "values": [-8, 2, 0, -11, -1, -10, 3, 2, -8, 2, 0, -11, -1, -10, 3, 2] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [2, 4, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_u8s8_per_column_batched_zero_point_input_b" } |
| } |
| } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_s8s8_a_nd_by_b_nd_scalar_zero_points_output_y" } |
| }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "ort_s8s8_2d_by_b_nd_scalar_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_t_B_ND", |
| "notes": "Valid ORT rank-2 by rank-3 MatMulInteger broadcast case." |
| }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [2, 4], "data": { "kind": "values", "values": [-3, 7, 5, -6, 4, -5, 8, 7] } }, |
| "b": { |
| "dtype": "int8", |
| "shape": [2, 4, 3], |
| "data": { |
| "kind": "values", |
| "values": [5, -3, 7, 8, -6, -8, -3, 6, 7, 9, 9, -5, 5, -3, 7, 8, -6, -8, -3, 6, 7, 9, 9, -5] |
| } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [1] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [2] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [-45, -61, -11, -20, 103, 68, -45, -61, -11, -20, 103, 68] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "ort_s8s8_a_nd_by_b_nd_a_zero_point_only", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_t_A_Has_Zero_Point", |
| "notes": "Valid ORT rank-3 by rank-3 MatMulInteger with only A zero-point present." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_s8s8_a_nd_by_b_nd_scalar_zero_points_input_a" } |
| } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [2, 4, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_u8s8_per_column_batched_zero_point_input_b" } |
| } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [5] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 4], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_s8s8_a_nd_by_b_nd_scalar_zero_points_output_y" } |
| }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "broadcast_4d_u8u8", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_uint8_A_ND_B_ND", |
| "notes": "A compact four-dimensional uint8 MatMulInteger exercises multidimensional batch broadcasting." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [1, 2, 2, 2], |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [2, 1, 2, 2], |
| "data": { "kind": "values", "values": [1, 0, 0, 1, 2, 1, 1, 2] } |
| } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 2, 2], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8, 4, 5, 10, 11, 16, 17, 22, 23] } |
| } |
| } |
| }, |
| { |
| "name": "broadcast_4d_u8u8_zero_points", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "test": "MatmulIntegerOpTest.MatMulInteger_int8_uint8_A_ND_B_ND", |
| "notes": "Compact 4D broadcast case with scalar zero-points." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [1, 2, 2, 2], |
| "data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [2, 1, 2, 2], |
| "data": { "kind": "values", "values": [1, 0, 0, 1, 2, 1, 1, 2] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [1] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "int32", |
| "shape": [2, 2, 2, 2], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [-1, 0, -3, -2, -5, -4, -7, -6, 0, 1, 2, 3, 4, 5, 6, 7] } |
| } |
| } |
| }, |
| { |
| "name": "dispatch_cliff_mtile_rows_524296", |
| "provenance": { |
| "notes": "M=524,296 produces 65,537 eight-row tiles, exceeding the dp4a rank-2 dispatch cap and selecting a folded y=65,535, z=2 integer MatMul. Distinct rows make incorrect y/z reconstruction observable." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [524296, 4], "data": { "kind": "cycle", "values": [1, 2, 3, 4, 5, 6, 7] } }, |
| "b": { "dtype": "uint8", "shape": [4, 2], "data": { "kind": "cycle", "values": [2, 0, 1, 3, 4, 1, 2, 5] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "constant", "value": 1 } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "constant", "value": 2 } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [524296, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "percol_b_zero_point_k256_u8s8_model_scale", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "notes": "Per-column signed weight zero points across N=128 with a scalar activation zero point at K=256. Exercises packed rank-2 accumulation and verifies that every output column applies its own zero point." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 256], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [256, 128], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [130] } }, |
| "b_zero_point": { |
| "dtype": "int8", |
| "shape": [128], |
| "data": { "kind": "cycle", "values": [1, -2, 2, -1, 3, -3, 0, -4, 4, -5, 5] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "percol_b_zero_point_no_azp_below_dp4a_floor", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "notes": "Per-column weight zero-point with NO a_zero_point below the dp4a floor: K=8 misses the K >= 64 guard and numel(Y)=12 misses the 8192-element guard, so dp4a_rank2_b_zero_point_per_column is ineligible and the naive per-column kernel runs. b_zero_point rank-1 size N=3 == dim(Y,1); the absent a_zero_point defaults to 0." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [4, 8], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [8, 3], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "b_zero_point": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [1, -2, 2] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [4, 3], "tolerance": 0 } } |
| }, |
| { |
| "name": "percol_b_zero_point_no_azp_k256_u8s8", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/math/matmul_integer_test.cc", |
| "notes": "Per-column signed weight zero points across N=128 with the activation zero point omitted at K=256. Exercises packed rank-2 accumulation and the default activation zero point of zero, including the unsigned-activation bias fold." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 256], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [256, 128], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "b_zero_point": { |
| "dtype": "int8", |
| "shape": [128], |
| "data": { "kind": "cycle", "values": [1, -2, 2, -1, 3, -3, 0, -4, 4, -5, 5] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "k258_unaligned_k_scalar_zp_u8u8", |
| "provenance": { |
| "notes": "K=258 is intentionally not divisible by four. The large output would otherwise admit packed accumulation, so this case verifies that the scalar route handles the unaligned reduction tail and applies scalar zero points exactly." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 258], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [258, 128], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8u8_k64_no_zero_points_input_b" } } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [128] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [127] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "large_accumulator_dp4a_k1024_u8u8_maxmag", |
| "provenance": { |
| "notes": "Confirms the dp4a path and the naive path agree at large int32 accumulation. M=64,K=1024,N=128 -> numel(Y)=8192 and K%4==0 and K>=256, so this selects the dp4a (dot4I8Packed) kernel. Inputs include the max-magnitude bytes (255 for u8) so per-row accumulation reaches ~1024*255*255~=66.6M, well within int32, exercising the bias/zero-point fold (ca,cb,kcc) in quant-dp4a-matmul at large magnitude." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 1024], |
| "data": { "kind": "cycle", "values": [255, 0, 255, 1, 254, 2, 200, 128, 64, 99, 3, 250, 7, 240, 16, 5] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [1024, 128], |
| "data": { "kind": "cycle", "values": [255, 254, 1, 0, 200, 129, 64, 99, 3, 250, 7, 240, 16, 5, 128, 2] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [3] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [7] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "dp4a_rank4_scalar_s8s8_2x2x64x128", |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 64, 128], |
| "data": { "kind": "cycle", "values": [3, -2, 1, 4, -3, 2, -1, 5, -4, 0] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [2, 2, 128, 64], |
| "data": { "kind": "cycle", "values": [2, -1, 3, -2, 1, 4, -3, 2] } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "cycle", "values": [1] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "cycle", "values": [2] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 2, 64, 64] } } |
| }, |
| { |
| "name": "dp4a_rank4_no_zero_s8s8_2x2x64x128", |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [2, 2, 64, 128], |
| "data": { "kind": "cycle", "values": [3, -2, 1, 4, -3, 2, -1, 5, -4, 0] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [2, 2, 128, 64], |
| "data": { "kind": "cycle", "values": [2, -1, 3, -2, 1, 4, -3, 2] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 2, 64, 64] } } |
| }, |
| { |
| "name": "dp4a_gemv_m1_u8s8_k257_n512_scalar_zp_tail", |
| "provenance": { |
| "notes": "An M=1 int8 GEMV with K=257 exercises the tileM=1 DP4A full-word loop and its one-lane scalar tail." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [1, 257], |
| "data": { |
| "kind": "cycle", |
| "values": [0, 255, 128, 7, 200, 31, 129, 64, 99, 3, 254, 127, 1, 88, 173, 240, 16, 5, 222, 44, 90, 17] |
| } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [257, 512], |
| "data": { |
| "kind": "cycle", |
| "values": [-128, 127, 0, 63, -64, 31, -32, 7, -100, 50, -7, 88, -1, 120, -45, 15, 3, -99, 66, -17, 42, -88, 11, -120] |
| } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [128] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-3] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [1, 512], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_gemv_m1_u8u8_k128_n768_no_zp", |
| "provenance": { |
| "notes": "M=1 int8 decode GEMV, no zero points: exercises the tileM=1 dp4a GEMV no-zero-point path." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [1, 128], |
| "data": { "kind": "cycle", "values": [0, 255, 128, 7, 200, 31, 129, 64, 99, 3, 254, 127, 1, 88, 173, 240] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [128, 768], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [1, 768], "tolerance": 0 } } |
| }, |
| { |
| "name": "empty_n_dimension_outputs_empty_u8u8", |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [2, 3], "data": { "kind": "values", "values": [11, 7, 3, 10, 6, 2] } }, |
| "b": { "dtype": "uint8", "shape": [3, 0], "data": { "kind": "values", "values": [] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [12] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [0] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [2, 0], "data": { "kind": "values", "values": [] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "dp4a_unaligned_n130_percol_b_zp_u8s8_k256", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 256], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [256, 130], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [130] } }, |
| "b_zero_point": { |
| "dtype": "int8", |
| "shape": [130], |
| "data": { "kind": "cycle", "values": [1, -2, 2, -1, 3, -3, 0, -4, 4, -5, 5] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 130], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "dp4a_partial_m63_n130_tile_edge_s8s8_k256", |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [63, 256], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [256, 130], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_s8s8_k260_both_zero_points_tails_input_b" } |
| } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [5] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-7] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [63, 130], "tolerance": 0 } } |
| }, |
| { |
| "name": "kfloor_k124_naive_rank2_both_zp_correctness", |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [9, 124], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [124, 17], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [117] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-9] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [9, 17], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_k124_rank2_no_zero_points_exact", |
| "provenance": { |
| "notes": "Locks the lowered aligned-DP4A floor for realistic K=124 projections; output size is large enough for cooperative tiling to amortize its barriers." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 124], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_u8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [124, 128], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "dp4a_tail_k130_rank2_u8u8_scalar_zp_exact", |
| "provenance": { |
| "notes": "Exactness lock for the shared DP4A two-lane final word; full words must remain branch-free while raw-bias padding keeps the missing lanes neutral." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 130], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_tail_k130_rank2_u8u8_scalar_zp_exact_input_a" } |
| } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [130, 128], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_u8u8_k260_both_zero_points_tails_input_b" } |
| } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [121] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [117] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "dp4a_tail_k131_rank2_s8s8_scalar_zp_exact", |
| "provenance": { |
| "notes": "Exactness lock for the shared signed DP4A three-lane final word and its single raw-zero padding lane." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [64, 131], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [131, 128], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_s8s8_k260_both_zero_points_tails_input_b" } |
| } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [5] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-7] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 128], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "dp4a_tail_k129_batched3_by_rank2_exact", |
| "provenance": { |
| "notes": "Compact correctness lock for realistic adapter widths with a one-element K tail; sized to select the packed tail kernel." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [2, 8, 129], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_tail_k130_rank2_u8u8_scalar_zp_exact_input_a" } |
| } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [129, 512], |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/dp4a_s8_pattern" } } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [121] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [-4] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [2, 8, 512], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_tail_k63_rank2_u8s8_scalar_zp_exact", |
| "provenance": { "notes": "K=63 exercises exact packed-tail handling in the 32<=K<128 DP4A range." }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [16, 63], "data": { "kind": "cycle", "values": [0, 255, 121, 7, 200, 31] } }, |
| "b": { "dtype": "int8", "shape": [63, 512], "data": { "kind": "cycle", "values": [-128, 127, 0, -1, 56, -77] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [121] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-4] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [16, 512], "tolerance": 0 } } |
| }, |
| { |
| "name": "rank3_b_zero_point_only", |
| "provenance": { |
| "source": "ONNX MatMulInteger-10 optional-input contract", |
| "notes": "Exercises a scalar b_zero_point on batched rank-3 inputs while a_zero_point independently defaults to zero." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [1, 1, 2], "data": { "kind": "values", "values": [2, 3] } }, |
| "b": { "dtype": "uint8", "shape": [1, 2, 1], "data": { "kind": "values", "values": [4, 5] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [1, 1, 1], "data": { "kind": "values", "values": [18] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "rank3_batched_per_column_zero_point_without_a_zero_point", |
| "provenance": { |
| "source": "ONNX MatMulInteger-10 optional-input contract", |
| "notes": "Exercises an N-D per-column b_zero_point while a_zero_point independently defaults to zero." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [2, 1, 2], "data": { "kind": "values", "values": [2, 3, 2, 3] } }, |
| "b": { "dtype": "uint8", "shape": [2, 2, 1], "data": { "kind": "values", "values": [4, 5, 6, 7] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [2, 1, 1], "data": { "kind": "values", "values": [1, 2] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [2, 1, 1], "data": { "kind": "values", "values": [18, 23] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "rank2_by_rank3_zero_points_omitted", |
| "provenance": { |
| "source": "ONNX MatMulInteger-10 optional-input contract", |
| "notes": "Exercises rank-2 by rank-3 broadcasting with both zero points omitted." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [1, 2], "data": { "kind": "values", "values": [2, 3] } }, |
| "b": { "dtype": "uint8", "shape": [2, 2, 1], "data": { "kind": "values", "values": [4, 5, 6, 7] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [2, 1, 1], "data": { "kind": "values", "values": [23, 33] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "rank2_by_rank3_a_zero_point_only", |
| "provenance": { |
| "source": "ONNX MatMulInteger-10 optional-input contract", |
| "notes": "Exercises rank-2 by rank-3 broadcasting with only a_zero_point present." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [1, 2], "data": { "kind": "values", "values": [2, 3] } }, |
| "b": { "dtype": "uint8", "shape": [2, 2, 1], "data": { "kind": "values", "values": [4, 5, 6, 7] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [2, 1, 1], "data": { "kind": "values", "values": [14, 20] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "rank2_by_rank3_b_zero_point_only", |
| "provenance": { |
| "source": "ONNX MatMulInteger-10 optional-input contract", |
| "notes": "Exercises rank-2 by rank-3 broadcasting with only b_zero_point present." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [1, 2], "data": { "kind": "values", "values": [2, 3] } }, |
| "b": { "dtype": "uint8", "shape": [2, 2, 1], "data": { "kind": "values", "values": [4, 5, 6, 7] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [2, 1, 1], "data": { "kind": "values", "values": [18, 28] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "rank2_by_rank3_both_zero_points", |
| "provenance": { |
| "source": "ONNX MatMulInteger-10 optional-input contract", |
| "notes": "Completes the rank-2 by rank-3 optional-presence matrix with both scalar zero points present." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [1, 2], "data": { "kind": "values", "values": [2, 3] } }, |
| "b": { "dtype": "uint8", "shape": [2, 2, 1], "data": { "kind": "values", "values": [4, 5, 6, 7] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [1] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [2, 1, 1], "data": { "kind": "values", "values": [11, 17] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "rank4_a_zero_point_only", |
| "provenance": { |
| "source": "ONNX MatMulInteger-10 optional-input contract", |
| "notes": "Exercises a rank-4 product with only a_zero_point present." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [1, 1, 1, 2], "data": { "kind": "values", "values": [2, 3] } }, |
| "b": { "dtype": "uint8", "shape": [1, 1, 2, 1], "data": { "kind": "values", "values": [4, 5] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [1, 1, 1, 1], "data": { "kind": "values", "values": [14] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "rank4_b_zero_point_only", |
| "provenance": { |
| "source": "ONNX MatMulInteger-10 optional-input contract", |
| "notes": "Exercises a rank-4 product with only b_zero_point present." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [1, 1, 1, 2], "data": { "kind": "values", "values": [2, 3] } }, |
| "b": { "dtype": "uint8", "shape": [1, 1, 2, 1], "data": { "kind": "values", "values": [4, 5] } }, |
| "b_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [1] } } |
| }, |
| "outputs": { |
| "y": { "dtype": "int32", "shape": [1, 1, 1, 1], "data": { "kind": "values", "values": [18] }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "dp4a_gemv_no_zero_s8s8_m1_k64_n512", |
| "provenance": { |
| "notes": "M=1, N=512, and K=64 select the packed signed GEMV path. Omitting both zero points makes the B-sum correction and its running row sum unnecessary." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [1, 64], |
| "data": { "kind": "cycle", "values": [3, -2, 1, 4, -3, 2, -1, 5, -4, 0, 7, -6, 2] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [64, 512], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_gemv_no_zero_s8s8_m1_k64_n512_input_b" } |
| } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [1, 512], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_gemv_b_per_column_zero_u8u8_m1_k64_n512", |
| "provenance": { |
| "notes": "An unsigned B tensor uses per-column zero points that vary on a period coprime with N=512. Each zero point must be widened and indexed by its output column." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [1, 64], |
| "data": { "kind": "cycle", "values": [130, 129, 128, 127, 126, 200, 3, 255, 0, 64, 99] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [64, 512], |
| "data": { "kind": "cycle", "values": [127, 128, 129, 130, 131, 7, 250, 255, 0, 64, 200, 3, 90] } |
| }, |
| "b_zero_point": { |
| "dtype": "uint8", |
| "shape": [512], |
| "data": { "kind": "cycle", "values": [128, 127, 129, 0, 255, 64, 200] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [1, 512], "tolerance": 0 } } |
| }, |
| { |
| "name": "dp4a_tail_no_zero_s8s8_m1_k66_n512", |
| "provenance": { |
| "notes": "K=66 leaves a two-lane reduction tail. Signed inputs with both zero points omitted exercise that tail without either running-sum correction." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [1, 66], |
| "data": { "kind": "cycle", "values": [3, -2, 1, 4, -3, 2, -1, 5, -4, 0, 7, -6, 2] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [66, 512], |
| "data": { |
| "kind": "cycle", |
| "values": { "$ref": "#/fixtureArrays/dp4a_gemv_no_zero_s8s8_m1_k64_n512_input_b" } |
| } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [1, 512], "tolerance": 0 } } |
| }, |
| { |
| "name": "exact_integer_partial_k255_uint8_maxmag", |
| "provenance": { |
| "notes": "Maximum adjusted-byte products across exact-f32 partial-sum boundaries. K=33027 also crosses signed-int32 overflow; the integer result must wrap exactly." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [64, 255], "data": { "kind": "cycle", "values": [255] } }, |
| "b": { "dtype": "uint8", "shape": [255, 32], "data": { "kind": "cycle", "values": [255] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 32], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_integer_partial_k256_uint8_maxmag", |
| "provenance": { |
| "notes": "Maximum adjusted-byte products across exact-f32 partial-sum boundaries. K=33027 also crosses signed-int32 overflow; the integer result must wrap exactly." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [64, 256], "data": { "kind": "cycle", "values": [255] } }, |
| "b": { "dtype": "uint8", "shape": [256, 32], "data": { "kind": "cycle", "values": [255] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 32], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_integer_partial_k259_uint8_maxmag", |
| "provenance": { |
| "notes": "Maximum adjusted-byte products across exact-f32 partial-sum boundaries. K=33027 also crosses signed-int32 overflow; the integer result must wrap exactly." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [64, 259], "data": { "kind": "cycle", "values": [255] } }, |
| "b": { "dtype": "uint8", "shape": [259, 32], "data": { "kind": "cycle", "values": [255] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 32], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_integer_partial_k1025_int8_maxmag", |
| "provenance": { |
| "notes": "Maximum adjusted-byte products across exact-f32 partial-sum boundaries. K=33027 also crosses signed-int32 overflow; the integer result must wrap exactly." |
| }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [64, 1025], "data": { "kind": "cycle", "values": [127] } }, |
| "b": { "dtype": "int8", "shape": [1025, 32], "data": { "kind": "cycle", "values": [127] } }, |
| "a_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [-128] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [-128] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 32], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_integer_partial_k33027_uint8_maxmag", |
| "provenance": { |
| "notes": "Maximum adjusted-byte products across exact-f32 partial-sum boundaries. K=33027 also crosses signed-int32 overflow; the integer result must wrap exactly." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [64, 33027], "data": { "kind": "cycle", "values": [255] } }, |
| "b": { "dtype": "uint8", "shape": [33027, 32], "data": { "kind": "cycle", "values": [255] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 32], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_integer_partial_k513_m65_n65_column_zero_points", |
| "provenance": { |
| "notes": "Mixed signedness, per-column zero points and partial M/N/K tiles must retain exact integer arithmetic." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [65, 513], "data": { "kind": "cycle", "values": [0, 255, 128, 1, 254] } }, |
| "b": { "dtype": "int8", "shape": [513, 65], "data": { "kind": "cycle", "values": [-128, 127, 0, -1, 1] } }, |
| "a_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [17] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [65], "data": { "kind": "cycle", "values": [-128, 127, 3] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 65], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_integer_partial_k1041_int8_no_zp_signed_outputs", |
| "provenance": { |
| "notes": "Without zero points, signed-byte bounds permit 1024-term exact f32 partials. The odd final sums +/-16790289 are not representable in f32; converting each partial before the int32 addition preserves both signs exactly." |
| }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 }, |
| "inputs": { |
| "a": { "dtype": "int8", "shape": [64, 1041], "data": { "kind": "constant", "value": 127 } }, |
| "b": { "dtype": "int8", "shape": [1041, 64], "data": { "kind": "cycle", "values": [127, -127] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 64], "tolerance": 0 } } |
| }, |
| { |
| "name": "exact_integer_storage_growth_m32_k128_n65", |
| "provenance": { |
| "notes": "Maximum adjusted-byte products across exact-f32 partial-sum boundaries. K=33027 also crosses signed-int32 overflow; the integer result must wrap exactly." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [32, 128], "data": { "kind": "cycle", "values": [255] } }, |
| "b": { "dtype": "uint8", "shape": [128, 65], "data": { "kind": "cycle", "values": [255] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [32, 65], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_integer_storage_growth_m48_k259_n65", |
| "provenance": { |
| "notes": "Maximum adjusted-byte products across exact-f32 partial-sum boundaries. K=33027 also crosses signed-int32 overflow; the integer result must wrap exactly." |
| }, |
| "inputs": { |
| "a": { "dtype": "uint8", "shape": [48, 259], "data": { "kind": "cycle", "values": [255] } }, |
| "b": { "dtype": "uint8", "shape": [259, 65], "data": { "kind": "cycle", "values": [255] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [48, 65], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m65_k33_n33_a0_bnone", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [65, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m65_k33_n33_a0_bscalar", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [65, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "cycle", "values": [3] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m65_k33_n33_a0_bcolumn", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [65, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m65_k33_n33_a1_bnone", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [65, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m65_k33_n33_a1_bscalar", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [65, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "cycle", "values": [3] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m65_k33_n33_a1_bcolumn", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [65, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m129_k65_n63_a0_bnone", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [129, 65], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [65, 63], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [129, 63], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m129_k65_n63_a0_bscalar", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [129, 65], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [65, 63], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "cycle", "values": [3] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [129, 63], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m129_k65_n63_a0_bcolumn", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [129, 65], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [65, 63], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "b_zero_point": { "dtype": "int8", "shape": [63], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [129, 63], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m129_k65_n63_a1_bnone", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [129, 65], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [65, 63], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [129, 63], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m129_k65_n63_a1_bscalar", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [129, 65], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [65, 63], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "cycle", "values": [3] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [129, 63], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_padding_m129_k65_n63_a1_bcolumn", |
| "provenance": { |
| "notes": "Exact operand conversion with simultaneous M/K/N padding; per-column zero points and scales vary independently. The original integer partial and requantization contract is unchanged." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [129, 65], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [65, 63], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [63], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [129, 63], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m15_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [15, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [15, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m16_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [16, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [16, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m17_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [17, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [17, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m31_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [31, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [31, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m32_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [32, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [32, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m33_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [33, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m47_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [47, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [47, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m48_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [48, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [48, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m49_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [49, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [49, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_precast_row_band_m63_k33_n33", |
| "provenance": { |
| "notes": "Matrix row-band boundaries with all three padded axes and varying column zero points. M15 retains the integer fallback; subsequent bands use one to four effective 32-wide subgroups." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [63, 33], |
| "data": { "kind": "cycle", "values": [109, 151, 128, 137, 102, 165, 124] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [33, 33], |
| "data": { "kind": "cycle", "values": [-9, 7, -3, 12, 5, -11, 2, 1, -6, 4, 8] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { "dtype": "int8", "shape": [33], "data": { "kind": "cycle", "values": [-3, 2, 7, -5, 1] } } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [63, 33], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_portable_m63_k255_n35", |
| "provenance": { |
| "notes": "Exact partial-sum and row-reuse boundaries, signed and unsigned extremes, column zero points, and simultaneous padded axes." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [63, 255], |
| "data": { "kind": "cycle", "values": [0, 255, 17, 239, 128, 1, 254] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [255, 35], |
| "data": { "kind": "cycle", "values": [-128, 127, -127, 63, -64, 0, 126] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [255] } }, |
| "b_zero_point": { |
| "dtype": "int8", |
| "shape": [35], |
| "data": { "kind": "cycle", "values": [-128, 127, 0, -111, 111] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [63, 35], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_portable_m64_k256_n35", |
| "provenance": { |
| "notes": "Exact partial-sum and row-reuse boundaries, signed and unsigned extremes, column zero points, and simultaneous padded axes." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "uint8", |
| "shape": [64, 256], |
| "data": { "kind": "cycle", "values": [0, 255, 17, 239, 128, 1, 254] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [256, 35], |
| "data": { "kind": "cycle", "values": [0, 255, 1, 191, 64, 128, 254] } |
| }, |
| "a_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "cycle", "values": [255] } }, |
| "b_zero_point": { |
| "dtype": "uint8", |
| "shape": [35], |
| "data": { "kind": "cycle", "values": [0, 255, 128, 17, 239] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [64, 35], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_portable_m65_k257_n67", |
| "provenance": { |
| "notes": "Exact partial-sum and row-reuse boundaries, signed and unsigned extremes, column zero points, and simultaneous padded axes." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [65, 257], |
| "data": { "kind": "cycle", "values": [-128, 127, -111, 111, 0, -127, 126] } |
| }, |
| "b": { |
| "dtype": "int8", |
| "shape": [257, 67], |
| "data": { "kind": "cycle", "values": [-128, 127, -127, 63, -64, 0, 126] } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { |
| "dtype": "int8", |
| "shape": [67], |
| "data": { "kind": "cycle", "values": [-128, 127, 0, -111, 111] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 67], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| }, |
| { |
| "name": "exact_portable_m65_k1025_n35", |
| "provenance": { |
| "notes": "Exact partial-sum and row-reuse boundaries, signed and unsigned extremes, column zero points, and simultaneous padded axes." |
| }, |
| "inputs": { |
| "a": { |
| "dtype": "int8", |
| "shape": [65, 1025], |
| "data": { "kind": "cycle", "values": [-128, 127, -111, 111, 0, -127, 126] } |
| }, |
| "b": { |
| "dtype": "uint8", |
| "shape": [1025, 35], |
| "data": { "kind": "cycle", "values": [0, 255, 1, 191, 64, 128, 254] } |
| }, |
| "a_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "cycle", "values": [127] } }, |
| "b_zero_point": { |
| "dtype": "uint8", |
| "shape": [35], |
| "data": { "kind": "cycle", "values": [0, 255, 128, 17, 239] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "int32", "shape": [65, 35], "tolerance": 0 } }, |
| "tunables": { "EXACT_MATRIX_MIN_INVOCATIONS": 0 } |
| } |
| ] |
| } |
|
|