| { |
| "op": "com.microsoft.CausalConvWithState", |
| "cases": [ |
| { |
| "name": "ort_kernel1_zero_size_state", |
| "provenance": { |
| "source": "onnxruntime/test/python/transformers/test_parity_linear_attention_causal_conv.py", |
| "test": "TestLinearAttentionCausalConvCPUParity.test_causal_conv_with_state_cpu_kernel_1", |
| "notes": "Direct standard rank-3 weight fixture for the ORT kernel=1 zero-size state edge case." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [2, 4, 5], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [4, 1, 1], |
| "data": { "kind": "values", "values": [0.5, -1.0, 1.5, -0.25] } |
| }, |
| "biasT": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [0.25, -0.5, 0.75, -1.0] } }, |
| "pastStateT": { "dtype": "float32", "shape": [2, 4, 0], "data": { "kind": "values", "values": [] } } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [2, 4, 5], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 4, 0], "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "ort_basic_no_state_no_bias", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.BasicNoStateNoBias", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 0.5, 1.5, 2.5, 3.5] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 4], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_silu_with_bias_and_state", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.SiluActivationWithBiasAndState", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 0.5, 1.5, 2.5, 3.5] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| }, |
| "biasT": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [0.1, -0.2] } }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 2, 2], |
| "data": { "kind": "values", "values": [-1.0, 0.5, 0.3, -0.7] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 4], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_basic_with_bias", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.BasicWithBias", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 0.5, 1.5, 2.5, 3.5] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| }, |
| "biasT": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [0.1, -0.2] } } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 4], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_basic_with_state", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.BasicWithState", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 0.5, 1.5, 2.5] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 2, 2], |
| "data": { "kind": "values", "values": [-1.0, 0.5, 0.3, -0.7] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 3], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_with_state_and_bias_none", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.WithStateAndBias", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 0.5, 1.5, 2.5] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| }, |
| "biasT": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [0.1, -0.2] } }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 2, 2], |
| "data": { "kind": "values", "values": [-1.0, 0.5, 0.3, -0.7] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 3], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_silu_no_state", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.SiluActivationNoState", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 0.5, 1.5, 2.5, 3.5] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 4], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_silu_with_state", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.SiluActivationWithState", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 0.5, 1.5, 2.5] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 2, 2], |
| "data": { "kind": "values", "values": [-1.0, 0.5, 0.3, -0.7] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 3], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_kernel_size2_state_silu", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.KernelSize2", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 0.5, 1.5, 2.5, 3.5] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 2], |
| "data": { "kind": "values", "values": [0.3, 0.7, 0.4, 0.6] } |
| }, |
| "pastStateT": { "dtype": "float32", "shape": [1, 2, 1], "data": { "kind": "values", "values": [0.5, -0.3] } } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 4], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 1], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_kernel_size4_state_none", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.KernelSize4", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 5], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 4], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4] } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 1, 3], |
| "data": { "kind": "values", "values": [-1.0, 0.0, 0.5] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 5], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 1, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_multi_batch_state_bias_silu", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.MultiBatch", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 0.5, 1.5, 2.5, -1.0, 0.0, 1.0, 0.2, 0.4, 0.6] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| }, |
| "biasT": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [0.1, -0.1] } }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [2, 2, 2], |
| "data": { "kind": "values", "values": [-0.5, 0.5, 0.3, -0.3, 0.1, -0.1, 0.7, 0.8] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [2, 2, 3], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_single_token_decode_state_bias_silu", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.SingleTokenDecode", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 4, 1], |
| "data": { "kind": "values", "values": [0.5, -0.3, 1.2, 0.8] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [4, 1, 4], |
| "data": { |
| "kind": "values", |
| "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, -0.1, -0.2, 0.1, 0.2, 0.3, 0.3, 0.3, 0.3] |
| } |
| }, |
| "biasT": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [0.0, 0.1, -0.1, 0.0] } }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 4, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, -1.0, 0.0, 1.0, 0.5, 0.5, 0.5, -0.2, 0.4, -0.6] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 4, 1], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 4, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "ort_single_token_decode_multi_batch_silu", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.SingleTokenDecodeMultiBatch", |
| "notes": "Direct ORT depthwise weight shape [D,1,K]." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [2, 2, 1], |
| "data": { "kind": "values", "values": [0.5, -0.3, 1.2, 0.8] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [2, 2, 2], |
| "data": { "kind": "values", "values": [1.0, 2.0, -1.0, 0.0, 0.5, 0.5, -0.2, 0.4] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [2, 2, 1], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 2, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "zero_state", |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 3, 5], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [3, 1, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 3, 5], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 3, 2], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "scalar_bias_no_state_odd_length", |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 3, 5], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [3, 1, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 } |
| }, |
| "biasT": { |
| "dtype": "float32", |
| "shape": [3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 3, 5], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 3, 2], "tolerance": 0.000001 } |
| }, |
| "provenance": { |
| "notes": "Odd sequence length keeps the bias/no-state scalar fallback covered when the vec4 route is ineligible." |
| } |
| }, |
| { |
| "name": "state_bias_silu", |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [2, 2, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 } |
| }, |
| "biasT": { |
| "dtype": "float32", |
| "shape": [2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 2, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "vec4_bias_no_state_silu", |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [2, 2, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.24, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.18, "cosStep": 0.23 } |
| }, |
| "biasT": { |
| "dtype": "float32", |
| "shape": [2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.14, "cosStep": 0.41 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 2, 3], "tolerance": 0.000001 } |
| }, |
| "provenance": { |
| "notes": "Kernel 4 over a length that divides into vec4 lanes, with a bias and no carried state: the vectorized arm where the first lane's taps are the zero prefix rather than past_state." |
| } |
| }, |
| { |
| "name": "vec4_state_no_bias_silu", |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [2, 2, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.28, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.22, "cosStep": 0.23 } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.3, "cosStep": 0.13 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 2, 3], "tolerance": 0.000001 } |
| }, |
| "provenance": { |
| "notes": "Kernel 4 over a length that divides into vec4 lanes, with carried state and no bias: the vectorized arm that reads past_state into the first lane's taps but adds no bias term." |
| } |
| }, |
| { |
| "name": "ort_larger_dimensions_state_bias_silu", |
| "provenance": { |
| "source": "onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc", |
| "test": "CausalConvWithStateTest.LargerDimensions", |
| "notes": "Compact deterministic projection of ORT's larger-dimension state+bias SiLU stress case." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [2, 8, 16], |
| "data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.1, "cosStep": 0.0 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [8, 1, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.5, "sinStep": 0.0, "cosStep": 0.2 } |
| }, |
| "biasT": { |
| "dtype": "float32", |
| "shape": [8], |
| "data": { "kind": "values", "values": [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07] } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [2, 8, 3], |
| "data": { "kind": "fillFloat32", "scale": 0.5, "sinStep": 0.3, "cosStep": 0.0 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [2, 8, 16], "tolerance": 0.00002 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 8, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "zero_length_present_state_carryover_dropped", |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { "dtype": "float32", "shape": [1, 2, 0], "data": { "kind": "values", "values": [] } }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 3], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6] } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 2, 2], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] } |
| } |
| }, |
| "outputs": { |
| "outputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 0], |
| "data": { "kind": "values", "values": [] }, |
| "tolerance": 0 |
| }, |
| "presentStateT": { |
| "dtype": "float32", |
| "shape": [1, 2, 2], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "length_shorter_than_state_with_past_silu", |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 2], |
| "data": { "kind": "values", "values": [1.0, -2.0, 0.5, 3.0] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 5], |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.3, 0.4, 0.5, -0.1, -0.2, 0.15, 0.25, 0.35] } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "data": { "kind": "values", "values": [-1.0, 0.5, 0.3, -0.7, 0.2, -0.4, 0.6, -0.8] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 4], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "length_shorter_than_state_no_state_zero_pad", |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 2], |
| "data": { "kind": "values", "values": [2.0, -1.0, 0.5, 4.0] } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 4], |
| "data": { "kind": "values", "values": [0.25, 0.5, -0.5, 1.0, 0.1, 0.2, 0.3, 0.4] } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.00001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "vec4_zero_state_silu_compact", |
| "provenance": { |
| "notes": "Compact correctness lock for the aligned K=4 vec4 prefill path, including causal zero padding, SiLU, multi-batch rows, and present-state tails." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [2, 3, 8], |
| "data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.17, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [3, 1, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.11, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [2, 3, 8], "tolerance": 0.00002 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 3, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_zero_state_compact", |
| "provenance": { |
| "notes": "Compact correctness lock for the workgroup-tiled large-kernel prefill path and its cooperative present-state update." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 32], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 31], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_bias_no_state_compact", |
| "provenance": { |
| "notes": "Compact correctness lock for the bias-only specialization of the workgroup-tiled large-kernel prefill path." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 32], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "biasT": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.125] } } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 1, 31], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_state_no_bias_compact", |
| "provenance": { |
| "notes": "Compact correctness lock for the carry-state specialization of the workgroup-tiled large-kernel prefill path." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 32], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 1, 31], |
| "data": { "kind": "fillFloat32", "scale": 0.15, "sinStep": 0.027, "cosStep": 0.019 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 1, 31], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_state_bias_silu_compact", |
| "provenance": { |
| "notes": "Compact correctness lock for the carry-state, bias, and SiLU specialization used by the production-shape fixture." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 32], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "biasT": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [-0.075] } }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 1, 31], |
| "data": { "kind": "fillFloat32", "scale": 0.15, "sinStep": 0.027, "cosStep": 0.019 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 1, 31], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_state_bias_k128_wg64_multitile", |
| "provenance": { |
| "notes": "Smallest swept workgroup at the production kernel size; length 520 forces a partial second output tile." |
| }, |
| "attrs": { "activation": "silu" }, |
| "tunables": { "tiledWorkgroupSize": 64 }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 520], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 128], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "biasT": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [-0.075] } }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 1, 127], |
| "data": { "kind": "fillFloat32", "scale": 0.15, "sinStep": 0.027, "cosStep": 0.019 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 520], "tolerance": 0.0001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 1, 127], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_state_bias_k128_wg256", |
| "provenance": { "notes": "Largest swept workgroup at the production kernel and sequence sizes." }, |
| "attrs": { "activation": "silu" }, |
| "tunables": { "tiledWorkgroupSize": 256 }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 512], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 128], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "biasT": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [-0.075] } }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 1, 127], |
| "data": { "kind": "fillFloat32", "scale": 0.15, "sinStep": 0.027, "cosStep": 0.019 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 512], "tolerance": 0.0001 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 1, 127], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "state_window2_pinned", |
| "provenance": { |
| "notes": "Hand-computed from the ONNX Runtime state_window contract (onnxruntime/core/graph/contrib_ops/bert_defs.cc, the CausalConvWithState schema). Upstream's own state_window cases are CUDA-only and compare against a replayed reference rather than pinned numbers, so the expected values here were worked out by hand instead of ported. Slot 0 is the carry state after position 1 and slot 1 after position 2, so slot 1 repeats what the unwindowed op writes." |
| }, |
| "attrs": { "activation": "none", "state_window": 2 }, |
| "inputs": { |
| "inputT": { "dtype": "float32", "shape": [1, 1, 3], "data": { "kind": "values", "values": [1.0, 2.0, 3.0] } }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 3], |
| "data": { "kind": "values", "values": [1.0, 10.0, 100.0] } |
| } |
| }, |
| "outputs": { |
| "outputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 3], |
| "data": { "kind": "values", "values": [100.0, 210.0, 321.0] }, |
| "tolerance": 0 |
| }, |
| "presentStateT": { |
| "dtype": "float32", |
| "shape": [2, 1, 1, 2], |
| "data": { "kind": "values", "values": [1.0, 2.0, 2.0, 3.0] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "state_window4_longer_than_sequence", |
| "provenance": { |
| "notes": "Hand-computed from the ONNX Runtime state_window contract (onnxruntime/core/graph/contrib_ops/bert_defs.cc, the CausalConvWithState schema). Upstream's own state_window cases are CUDA-only and compare against a replayed reference rather than pinned numbers, so the expected values here were worked out by hand instead of ported. W exceeds the sequence length, so the leading W - T slots must be zero rather than uninitialized." |
| }, |
| "attrs": { "activation": "none", "state_window": 4 }, |
| "inputs": { |
| "inputT": { "dtype": "float32", "shape": [1, 1, 3], "data": { "kind": "values", "values": [2.0, -1.0, 4.0] } }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 3], |
| "data": { "kind": "values", "values": [1.0, 10.0, 100.0] } |
| } |
| }, |
| "outputs": { |
| "outputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 3], |
| "data": { "kind": "values", "values": [200.0, -80.0, 392.0] }, |
| "tolerance": 0 |
| }, |
| "presentStateT": { |
| "dtype": "float32", |
| "shape": [4, 1, 1, 2], |
| "data": { "kind": "values", "values": [0.0, 0.0, 0.0, 2.0, 2.0, -1.0, -1.0, 4.0] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "state_window2_past_slot_pinned", |
| "provenance": { |
| "notes": "Hand-computed from the ONNX Runtime state_window contract (onnxruntime/core/graph/contrib_ops/bert_defs.cc, the CausalConvWithState schema). Upstream's own state_window cases are CUDA-only and compare against a replayed reference rather than pinned numbers, so the expected values here were worked out by hand instead of ported. past_state slot 0 is poisoned with large negatives that no correct read touches; only slot W-1 carries the previous call's state." |
| }, |
| "attrs": { "activation": "none", "state_window": 2 }, |
| "inputs": { |
| "inputT": { "dtype": "float32", "shape": [1, 1, 2], "data": { "kind": "values", "values": [1.0, 2.0] } }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 3], |
| "data": { "kind": "values", "values": [1.0, 10.0, 100.0] } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [2, 1, 1, 2], |
| "data": { "kind": "values", "values": [-1000.0, -2000.0, 5.0, 7.0] } |
| } |
| }, |
| "outputs": { |
| "outputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 2], |
| "data": { "kind": "values", "values": [175.0, 217.0] }, |
| "tolerance": 0 |
| }, |
| "presentStateT": { |
| "dtype": "float32", |
| "shape": [2, 1, 1, 2], |
| "data": { "kind": "values", "values": [7.0, 1.0, 1.0, 2.0] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "vec4_state_window3", |
| "provenance": { |
| "notes": "Gives the aligned K=4 vec4 prefill path a windowed present_state; its scalar-typed state output has to be gathered lane by lane out of the vec4 input row." |
| }, |
| "attrs": { "activation": "silu", "state_window": 3 }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 8], |
| "data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.17, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.11, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 8], "tolerance": 0.00002 }, |
| "presentStateT": { "dtype": "float32", "shape": [3, 1, 2, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_zero_state_window2", |
| "provenance": { |
| "notes": "Windowed present_state on the large-kernel tiled path with no past state; the state-writing tile now strides over a (slot, element) grid instead of a single slot." |
| }, |
| "attrs": { "activation": "none", "state_window": 2 }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 32], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 1, 1, 31], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_bias_no_state_window2", |
| "provenance": { |
| "notes": "Exercises windowed present-state publication on the large-kernel tiled route when bias is present but past state is absent." |
| }, |
| "attrs": { "activation": "silu", "state_window": 2 }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 32], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "biasT": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [-0.075] } } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 1, 1, 31], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_state_no_bias_window2", |
| "provenance": { |
| "notes": "Exercises windowed past-state reads and present-state publication on the large-kernel tiled route without bias." |
| }, |
| "attrs": { "activation": "none", "state_window": 2 }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 32], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [2, 1, 1, 31], |
| "data": { "kind": "fillFloat32", "scale": 0.15, "sinStep": 0.027, "cosStep": 0.019 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 1, 1, 31], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_state_bias_window2", |
| "provenance": { |
| "notes": "Windowed present_state on the large-kernel tiled path with a windowed past_state and bias; the earliest slot still reaches back into the carried state." |
| }, |
| "attrs": { "activation": "silu", "state_window": 2 }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 1, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [1, 1, 32], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "biasT": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [-0.075] } }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [2, 1, 1, 31], |
| "data": { "kind": "fillFloat32", "scale": 0.15, "sinStep": 0.027, "cosStep": 0.019 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 1, 1, 31], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "vec4_state_window6_longer_than_sequence", |
| "provenance": { |
| "notes": "W = 6 exceeds the four-position input, so the vec4 path's two leading window slots hold no position from this call and must be zero. Only this variant can reach that branch with a window: the tiled path demands at least 256 positions, which no legal window exceeds." |
| }, |
| "attrs": { "activation": "none", "state_window": 6 }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.6, "sinStep": 0.29, "cosStep": 0.13 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.3, "sinStep": 0.19, "cosStep": 0.37 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 4], "tolerance": 0.00002 }, |
| "presentStateT": { "dtype": "float32", "shape": [6, 1, 2, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "vec4_state_window_past_state_prefix", |
| "provenance": { |
| "notes": "A windowed state whose window reaches back further than this call is long, WITH a past state: the early slots carry positions from before this call, so they have to come from past_state rather than from the input row." |
| }, |
| "attrs": { "activation": "silu", "state_window": 6 }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.6, "sinStep": 0.29, "cosStep": 0.13 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.3, "sinStep": 0.19, "cosStep": 0.37 } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [6, 1, 2, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.29, "cosStep": 0.37, "scale": 0.5 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 4], "tolerance": 0.00002 }, |
| "presentStateT": { "dtype": "float32", "shape": [6, 1, 2, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "f16_scalar_state_bias_silu", |
| "provenance": { |
| "notes": "float16 tensors on the scalar kernel. ONNX Runtime registers this operator for the whole supported float set; this port pinned float32. Every tap and accumulation still runs in f32 and only the store narrows, which is what the kernel already did for float32." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float16", |
| "shape": [1, 2, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.17, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float16", |
| "shape": [2, 1, 3], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.11, "cosStep": 0.23 } |
| }, |
| "biasT": { "dtype": "float16", "shape": [2], "data": { "kind": "values", "values": [0.1, -0.2] } }, |
| "pastStateT": { |
| "dtype": "float16", |
| "shape": [1, 2, 2], |
| "data": { "kind": "fillFloat32", "scale": 0.3, "sinStep": 0.29, "cosStep": 0.13 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float16", "shape": [1, 2, 4], "tolerance": 0.005 }, |
| "presentStateT": { "dtype": "float16", "shape": [1, 2, 2], "tolerance": 0.005 } |
| } |
| }, |
| { |
| "name": "f16_k4_vec4_zero_state_silu", |
| "provenance": { |
| "notes": "float16 on the four-tap vectorized kernel, which read the bound element type directly and so was the only one of the three actually pinned to float32." |
| }, |
| "attrs": { "activation": "silu" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float16", |
| "shape": [2, 3, 8], |
| "data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.17, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float16", |
| "shape": [3, 1, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.11, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float16", "shape": [2, 3, 8], "tolerance": 0.005 }, |
| "presentStateT": { "dtype": "float16", "shape": [2, 3, 3], "tolerance": 0.005 } |
| } |
| }, |
| { |
| "name": "f16_large_kernel_tiled_state_bias", |
| "provenance": { |
| "notes": "float16 on the tiled large-kernel path, which stages the weight and the virtual input in float32 workgroup memory regardless of the tensor type." |
| }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float16", |
| "shape": [1, 1, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float16", |
| "shape": [1, 1, 32], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "biasT": { "dtype": "float16", "shape": [1], "data": { "kind": "values", "values": [-0.075] } }, |
| "pastStateT": { |
| "dtype": "float16", |
| "shape": [1, 1, 31], |
| "data": { "kind": "fillFloat32", "scale": 0.15, "sinStep": 0.027, "cosStep": 0.019 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float16", "shape": [1, 1, 256], "tolerance": 0.01 }, |
| "presentStateT": { "dtype": "float16", "shape": [1, 1, 31], "tolerance": 0.005 } |
| } |
| }, |
| { |
| "name": "weight_rank3_k4_vec4_zero_state", |
| "provenance": { |
| "notes": "A rank-3 weight on the four-tap vectorized kernel, where the kernel extent is read as a vec4 rather than element by element." |
| }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [2, 3, 8], |
| "data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.17, "cosStep": 0.31 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [3, 1, 4], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.11, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [2, 3, 8], "tolerance": 0.00002 }, |
| "presentStateT": { "dtype": "float32", "shape": [2, 3, 3], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_unaligned_k33_weight_tile_pad", |
| "provenance": { |
| "notes": "Kernel length 1 mod 4. The tap loop consumes four weights per iteration, so this shape reaches the tiled path only via the zero-padded weight tile; before that it fell to the untiled kernel." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 33], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 32], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_unaligned_k34_weight_tile_pad", |
| "provenance": { "notes": "Kernel length 2 mod 4 -- the other half of the padded-tail arithmetic." }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 34], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 33], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_unaligned_k35_bias_weight_tile_pad", |
| "provenance": { |
| "notes": "Kernel length 3 mod 4, the largest pad, with a bias so the padded tail is exercised on the bias arm of the family too." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 35], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "biasT": { |
| "dtype": "float32", |
| "shape": [2], |
| "data": { "kind": "fillFloat32", "scale": 0.1, "sinStep": 0.07, "cosStep": 0.03 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 34], "tolerance": 0.000001 } |
| } |
| }, |
| { |
| "name": "large_kernel_tiled_unaligned_k37_state_weight_tile_pad", |
| "provenance": { |
| "notes": "Kernel length 1 mod 4 carrying past state, so the padded weight tile is covered on the stateful arm where STATE_LENGTH stays the true kernel-1." |
| }, |
| "attrs": { "activation": "none" }, |
| "inputs": { |
| "inputT": { |
| "dtype": "float32", |
| "shape": [1, 2, 256], |
| "data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.021 } |
| }, |
| "weightT": { |
| "dtype": "float32", |
| "shape": [2, 1, 37], |
| "data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.031, "cosStep": 0.017 } |
| }, |
| "pastStateT": { |
| "dtype": "float32", |
| "shape": [1, 2, 36], |
| "data": { "kind": "fillFloat32", "scale": 0.15, "sinStep": 0.011, "cosStep": 0.029 } |
| } |
| }, |
| "outputs": { |
| "outputT": { "dtype": "float32", "shape": [1, 2, 256], "tolerance": 0.00005 }, |
| "presentStateT": { "dtype": "float32", "shape": [1, 2, 36], "tolerance": 0.000001 } |
| } |
| } |
| ] |
| } |
|
|