Xenova's picture
Xenova HF Staff
sync 91d990483a17
2157e54 verified
Raw
History Blame
90.8 kB
{
"cases": [
{
"name": "cross_attention_no_bias",
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 3, 6],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 4, 6],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 4, 6],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 3, 6], "tolerance": 0.00002 } }
},
{
"name": "self_attention_bias_causal",
"attrs": { "num_heads": 2, "scale": 0.6, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 4, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 4, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 4, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"biasT": {
"dtype": "float32",
"shape": [24],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 4, 8], "tolerance": 0.00002 } }
},
{
"name": "single_query_cross_attention_head_dim1",
"attrs": { "num_heads": 2, "scale": 1 },
"inputs": {
"queryT": { "dtype": "float32", "shape": [1, 1, 2], "data": { "kind": "values", "values": [1.0, -1.0] } },
"keyT": {
"dtype": "float32",
"shape": [1, 3, 2],
"data": { "kind": "values", "values": [1.0, 0.0, 0.0, 1.0, -1.0, 2.0] }
},
"valueT": {
"dtype": "float32",
"shape": [1, 3, 2],
"data": { "kind": "values", "values": [10.0, -10.0, 20.0, -20.0, 30.0, -30.0] }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 1, 2], "tolerance": 0.00002 } }
},
{
"name": "batch2_no_bias_head_dim2",
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 2, 4],
"data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 3, 4],
"data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 3, 4],
"data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.07, "cosStep": 0.41 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.00002 } }
},
{
"name": "ort_cross_attention_batch2_head_size40_no_bias",
"provenance": {
"source": "onnxruntime/test/contrib_ops/multihead_attention_op_test.cc",
"test": "MultiHeadAttentionTest.CrossAttention_Batch2_HeadSize40",
"notes": "Deterministic projection of ORT's batch=2, q_seq=3, kv_seq=5, num_heads=2, head_size=40 no-bias cross-attention topology."
},
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 3, 80],
"data": { "kind": "fillFloat32", "scale": 0.12, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 5, 80],
"data": { "kind": "fillFloat32", "scale": 0.12, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 5, 80],
"data": { "kind": "fillFloat32", "scale": 0.12, "sinStep": 0.007, "cosStep": 0.041 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 3, 80], "tolerance": 0.00003 } }
},
{
"name": "ort_cross_attention_batch2_head_size40_bias",
"provenance": {
"source": "onnxruntime/test/contrib_ops/multihead_attention_op_test.cc",
"test": "MultiHeadAttentionTest.CrossAttention_Batch2_HeadSize40",
"notes": "Deterministic projection of ORT's biased batch=2, q_seq=3, kv_seq=5, num_heads=2, head_size=40 cross-attention topology."
},
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 3, 80],
"data": { "kind": "fillFloat32", "scale": 0.11, "sinStep": 0.013, "cosStep": 0.027 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 5, 80],
"data": { "kind": "fillFloat32", "scale": 0.1, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 5, 80],
"data": { "kind": "fillFloat32", "scale": 0.13, "sinStep": 0.029, "cosStep": 0.017 }
},
"biasT": {
"dtype": "float32",
"shape": [240],
"data": { "kind": "fillFloat32", "scale": 0.04, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 3, 80], "tolerance": 0.00003 } }
},
{
"name": "ort_cross_attention_batch1_head_size16_bias",
"provenance": {
"source": "onnxruntime/test/contrib_ops/multihead_attention_op_test.cc",
"test": "MultiHeadAttentionTest.CrossAttention_Batch1_HeadSize16",
"notes": "Covers ORT's batch=1, q_seq=2, kv_seq=3, num_heads=2, head_size=16 biased cross-attention shape."
},
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 2, 32],
"data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.13, "cosStep": 0.29 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 3, 32],
"data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.19, "cosStep": 0.07 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 3, 32],
"data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.23, "cosStep": 0.17 }
},
"biasT": {
"dtype": "float32",
"shape": [96],
"data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.31, "cosStep": 0.11 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 2, 32], "tolerance": 0.00003 } }
},
{
"name": "ort_cross_attention_batch1_head_size16_no_bias",
"provenance": {
"source": "onnxruntime/test/contrib_ops/multihead_attention_op_test.cc",
"test": "MultiHeadAttentionTest.CrossAttention_Batch1_HeadSize16",
"notes": "ORT cross-attention with batch 1, two query rows, three key/value rows, two heads of width 16, and no bias."
},
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 2, 32],
"data": { "kind": "fillFloat32", "scale": 0.24, "sinStep": 0.17, "cosStep": 0.05 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 3, 32],
"data": { "kind": "fillFloat32", "scale": 0.18, "sinStep": 0.07, "cosStep": 0.19 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 3, 32],
"data": { "kind": "fillFloat32", "scale": 0.22, "sinStep": 0.29, "cosStep": 0.13 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 2, 32], "tolerance": 0.00003 } }
},
{
"name": "ort_cross_attention_batch1_head_size8_no_bias",
"provenance": {
"source": "onnxruntime/test/contrib_ops/multihead_attention_op_test.cc",
"test": "MultiHeadAttentionTest.CrossAttention_Batch1_HeadSize8",
"notes": "Small ORT cross-attention topology with head_size=8 and no bias."
},
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 2, 16],
"data": { "kind": "fillFloat32", "scale": 0.3, "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 3, 16],
"data": { "kind": "fillFloat32", "scale": 0.3, "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 3, 16],
"data": { "kind": "fillFloat32", "scale": 0.3, "sinStep": 0.07, "cosStep": 0.41 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 2, 16], "tolerance": 0.00003 } }
},
{
"name": "ort_self_attention_batch2_head_size32_causal_no_bias_projection",
"provenance": {
"source": "onnxruntime/test/contrib_ops/multihead_attention_op_test.cc",
"test": "MultiHeadAttentionTest.SelfAttention_Batch2_HeadSize32_NoBias_NoMask_PackedQKV",
"notes": "Projects ORT's packed self-attention topology into separate Q/K/V inputs and enables the local unidirectional path."
},
"attrs": { "num_heads": 2, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 4, 64],
"data": { "kind": "fillFloat32", "scale": 0.18, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 4, 64],
"data": { "kind": "fillFloat32", "scale": 0.18, "sinStep": 0.019, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 4, 64],
"data": { "kind": "fillFloat32", "scale": 0.18, "sinStep": 0.007, "cosStep": 0.041 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 4, 64], "tolerance": 0.00003 } }
},
{
"name": "flash_self_attention_head_dim64_no_bias",
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 64, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 64, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 64, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.02454369261, "cosStep": 0.0007669903939 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 64, 256], "tolerance": 0.0002 } }
},
{
"name": "flash_self_attention_head_dim64_no_bias_causal",
"attrs": { "num_heads": 4, "scale": 0.125, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 64, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 64, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.021 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 64, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.005, "cosStep": 0.037 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 64, 256], "tolerance": 0.0002 } }
},
{
"name": "flash_self_attention_head_dim64_bias_causal",
"attrs": { "num_heads": 4, "scale": 0.125, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 64, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 64, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 64, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.029, "cosStep": 0.017 }
},
"biasT": {
"dtype": "float32",
"shape": [768],
"data": { "kind": "fillFloat32", "scale": 0.03, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 64, 256], "tolerance": 0.0003 } }
},
{
"name": "flash_decode_head_dim64_no_bias",
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 512, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 512, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.02454369261, "cosStep": 0.00009587379924 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.0002 } }
},
{
"name": "flash_decode_head_dim64_bias",
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 512, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 512, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.029, "cosStep": 0.017 }
},
"biasT": {
"dtype": "float32",
"shape": [768],
"data": { "kind": "fillFloat32", "scale": 0.03, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.0003 } }
},
{
"name": "splitk_decode_head_dim64_no_bias_kv2048",
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.02454369261, "cosStep": 0.00002396844981 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.0003 } }
},
{
"name": "splitk_decode_head_dim128_no_bias_kv2048",
"provenance": {
"notes": "A compact decode with eight heads, head size 128, and a long KV sequence exercises split-K attention."
},
"attrs": { "num_heads": 2, "scale": 0.08838834764831845 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.02454369261, "cosStep": 0.00002396844981 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.0003 } }
},
{
"name": "splitk_decode_head_dim64_no_bias_kv768_b2",
"attrs": { "num_heads": 8, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 1, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 768, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 768, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.0122718463, "cosStep": 0.00001597896654 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 1, 512], "tolerance": 0.0003 } }
},
{
"name": "splitk_decode_head_dim64_bias_kv768_b2",
"attrs": { "num_heads": 8, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 1, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.027 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 768, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.035 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 768, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.031, "cosStep": 0.019 }
},
"biasT": {
"dtype": "float32",
"shape": [1536],
"data": { "kind": "fillFloat32", "scale": 0.03, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 1, 512], "tolerance": 0.0003 } }
},
{
"name": "splitk_decode_head_dim64_bias_kv512",
"attrs": { "num_heads": 8, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 512, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 512, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.029, "cosStep": 0.017 }
},
"biasT": {
"dtype": "float32",
"shape": [1536],
"data": { "kind": "fillFloat32", "scale": 0.03, "sinStep": 0.021, "cosStep": 0.013 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 1, 512], "tolerance": 0.0003 } }
},
{
"name": "flash_self_attention_head_dim128_no_bias_f16",
"provenance": {
"notes": "A float16 prefill with head size 128 exercises the q32 broadcast route with subgroups and the shared-memory q32 route without them."
},
"attrs": { "num_heads": 4, "scale": 0.08838834764831845 },
"inputs": {
"queryT": {
"dtype": "float16",
"shape": [1, 64, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float16",
"shape": [1, 64, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float16",
"shape": [1, 64, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.0122718463, "cosStep": 0.000383495197 }
}
},
"outputs": { "outputT": { "dtype": "float16", "shape": [1, 64, 512], "tolerance": 0.002 } }
},
{
"name": "flash_decode_head_dim64_no_bias_f16",
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float16",
"shape": [1, 1, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float16",
"shape": [1, 512, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float16",
"shape": [1, 512, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.02454369261, "cosStep": 0.00009587379924 }
}
},
"outputs": { "outputT": { "dtype": "float16", "shape": [1, 1, 256], "tolerance": 0.002 } }
},
{
"name": "cross_attention_projection_bias_f16",
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float16",
"shape": [1, 2, 8],
"data": { "kind": "fillFloat32", "scale": 0.1, "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float16",
"shape": [1, 3, 8],
"data": { "kind": "fillFloat32", "scale": 0.1, "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float16",
"shape": [1, 3, 8],
"data": { "kind": "fillFloat32", "scale": 0.1, "sinStep": 0.07, "cosStep": 0.41 }
},
"biasT": {
"dtype": "float16",
"shape": [24],
"data": { "kind": "fillFloat32", "scale": 0.03, "sinStep": 0.19, "cosStep": 0.13 }
}
},
"outputs": { "outputT": { "dtype": "float16", "shape": [1, 2, 8], "tolerance": 0.003 } }
},
{
"name": "causal_cross_attention_q2_kv4_exact",
"provenance": {
"source": "onnxruntime/contrib_ops/cpu/bert/attention_helper.h",
"notes": "Upper-left causal masking with two queries and four keys. The second query averages only the first two values, producing exactly 1.5."
},
"attrs": { "num_heads": 1, "unidirectional": 1 },
"inputs": {
"queryT": { "dtype": "float32", "shape": [1, 2, 1], "data": { "kind": "values", "values": [0.0, 0.0] } },
"keyT": { "dtype": "float32", "shape": [1, 4, 1], "data": { "kind": "values", "values": [0.0, 0.0, 0.0, 0.0] } },
"valueT": {
"dtype": "float32",
"shape": [1, 4, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 4.0, 8.0] }
}
},
"outputs": {
"outputT": {
"dtype": "float32",
"shape": [1, 2, 1],
"data": { "kind": "values", "values": [1.0, 1.5] },
"tolerance": 0,
"relTolerance": 0
}
}
},
{
"name": "flash_unidir_nonsquare_q128_kv512_d64",
"attrs": { "num_heads": 4, "scale": 0.125, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 128, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.027 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 512, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 512, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.007, "cosStep": 0.031 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 128, 256], "tolerance": 0.0003 } }
},
{
"name": "flash_head_dim80_lpq4_no_bias",
"attrs": { "num_heads": 4, "scale": 0.111803398875 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 64, 320],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 64, 320],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 64, 320],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.007, "cosStep": 0.041 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 64, 320], "tolerance": 0.0002 } }
},
{
"name": "empty_input_zero_dim",
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": { "dtype": "float32", "shape": [0, 3, 6], "data": { "kind": "values", "values": [] } },
"keyT": { "dtype": "float32", "shape": [0, 4, 6], "data": { "kind": "values", "values": [] } },
"valueT": { "dtype": "float32", "shape": [0, 4, 6], "data": { "kind": "values", "values": [] } }
},
"outputs": { "outputT": { "dtype": "float32", "shape": [0, 3, 6], "tolerance": 0 } }
},
{
"name": "dispatch_cliff_qseq_65537",
"provenance": {
"notes": "A 65,537-row query exceeds the flash-path cap and exercises the scalar fallback's folded dispatch. The x dimension is capped at 65,535, so a grid-stride iteration handles the final two distinct rows; two keys keep expected-value evaluation compact."
},
"attrs": { "num_heads": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 65537, 64],
"data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.017 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 2, 64],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 2, 64],
"data": { "kind": "fillFloat32", "sinStep": 0.007, "cosStep": 0.041 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 65537, 64], "tolerance": 0.00002 } }
},
{
"name": "scalar_causal_odd_headdim6_qseq4",
"attrs": { "num_heads": 2, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 4, 12],
"data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.13, "cosStep": 0.29 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 4, 12],
"data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 4, 12],
"data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.07, "cosStep": 0.41 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 4, 12], "tolerance": 0.00003 } }
},
{
"name": "scalar_bias_cross_odd_headdim6",
"attrs": { "num_heads": 2, "scale": 0.5 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 2, 12],
"data": { "kind": "fillFloat32", "scale": 0.3, "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 3, 12],
"data": { "kind": "fillFloat32", "scale": 0.3, "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 3, 12],
"data": { "kind": "fillFloat32", "scale": 0.3, "sinStep": 0.07, "cosStep": 0.41 }
},
"biasT": {
"dtype": "float32",
"shape": [36],
"data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.19, "cosStep": 0.13 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 2, 12], "tolerance": 0.00003 } }
},
{
"name": "scalar_causal_qseq6_gt_kvseq3_odd_headdim",
"attrs": { "num_heads": 2, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 6, 12],
"data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.13, "cosStep": 0.27 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 3, 12],
"data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 3, 12],
"data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.07, "cosStep": 0.41 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 6, 12], "tolerance": 0.00003 } }
},
{
"name": "cluster_prefill_qseq64_h16_d64_compact",
"provenance": {
"notes": "A compact sequence-64, 16-head prefill exercises the clustered route and its no-subgroups fallback."
},
"attrs": { "num_heads": 16, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 64, 1024],
"data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 128, 1024],
"data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.019, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 128, 1024],
"data": { "kind": "fillFloat32", "scale": 0.2, "sinStep": 0.007, "cosStep": 0.041 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 64, 1024], "tolerance": 0.00008, "relTolerance": 0.00008 }
}
},
{
"name": "flux2_joint_d128_q32_h8_compact",
"provenance": {
"notes": "Head size 128 and `qSeq * heads >= 256` keep the flash-cluster route and its no-subgroups fallback eligible at a compact scale."
},
"attrs": { "num_heads": 8, "scale": 0.08838834764831845 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 32, 1024],
"data": { "kind": "fillFloat32", "scale": 0.16, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 1024],
"data": { "kind": "fillFloat32", "scale": 0.16, "sinStep": 0.019, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 1024],
"data": { "kind": "fillFloat32", "scale": 0.16, "sinStep": 0.007, "cosStep": 0.041 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 32, 1024], "tolerance": 0.0001, "relTolerance": 0.0001 }
}
},
{
"name": "flux2_joint_d128_q32_h8_bias_compact",
"provenance": {
"notes": "A compact fused-bias case exercises the boundary of 32 four-wide head segments across 32 lanes."
},
"attrs": { "num_heads": 8, "scale": 0.08838834764831845 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 32, 1024],
"data": { "kind": "fillFloat32", "scale": 0.16, "sinStep": 0.011, "cosStep": 0.027 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 1024],
"data": { "kind": "fillFloat32", "scale": 0.16, "sinStep": 0.017, "cosStep": 0.035 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 1024],
"data": { "kind": "fillFloat32", "scale": 0.16, "sinStep": 0.031, "cosStep": 0.019 }
},
"biasT": {
"dtype": "float32",
"shape": [3072],
"data": { "kind": "fillFloat32", "scale": 0.03, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 32, 1024], "tolerance": 0.00012, "relTolerance": 0.00012 }
}
},
{
"name": "empty_query_seq0_nonempty_kv",
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": { "dtype": "float32", "shape": [1, 0, 6], "data": { "kind": "values", "values": [] } },
"keyT": {
"dtype": "float32",
"shape": [1, 3, 6],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 3, 6],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
}
},
"outputs": {
"outputT": {
"dtype": "float32",
"shape": [1, 0, 6],
"data": { "kind": "values", "values": [] },
"tolerance": 0
}
}
},
{
"name": "q31_kv511_h8_d64_double_threshold_compact",
"provenance": {
"notes": "`qSeq * heads = 248` and `kvSeq = 511` lie immediately below the two flash admission boundaries, selecting the scalar fallback."
},
"attrs": { "num_heads": 8, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 31, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 511, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 511, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.0122718463, "cosStep": 0.0000480307096 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 31, 512], "tolerance": 0.0005, "relTolerance": 0.0005 }
}
},
{
"name": "flash_shortq2_longkv2048_h4_d32_compact",
"provenance": {
"notes": "Correctness lock for short-query/long-context flash admission and the minimum vectorized headDim=32 path."
},
"attrs": { "num_heads": 4, "scale": 0.17677669529663687 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 2, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 2048, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 2048, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.04908738521, "cosStep": 0.00004793689962 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 2, 128], "tolerance": 0.0005, "relTolerance": 0.0005 }
}
},
{
"name": "splitk_decode_h4_d32_kv512_compact",
"provenance": { "notes": "Correctness lock for headDim=32 decode split-K on subgroup and subgroup-free tiers." },
"attrs": { "num_heads": 4, "scale": 0.17677669529663687 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.04908738521, "cosStep": 0.0001917475985 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 1, 128], "tolerance": 0.0005, "relTolerance": 0.0005 }
}
},
{
"name": "small_head_parallel_q3_kv65_h2_d6_compact",
"provenance": {
"notes": "Head size 6 exercises the key-parallel fallback with multiple keys per lane and a compact expected output."
},
"attrs": { "num_heads": 2, "scale": 0.408248290463863 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 3, 12],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 65, 12],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 65, 12],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.029, "cosStep": 0.017 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 3, 12], "tolerance": 0.00005, "relTolerance": 0.00005 }
}
},
{
"name": "small_head_parallel_f16_q3_kv65_h2_d6",
"provenance": {
"notes": "Float16 head size 6 exercises the key-parallel fallback. Values remain near one while queries and keys stay small, keeping scale errors observable."
},
"attrs": { "num_heads": 2, "scale": 0.408248290463863 },
"inputs": {
"queryT": {
"dtype": "float16",
"shape": [1, 3, 12],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float16",
"shape": [1, 65, 12],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float16",
"shape": [1, 65, 12],
"data": { "kind": "fillFloat32", "scale": 1.0, "sinStep": 0.029, "cosStep": 0.017 }
}
},
"outputs": { "outputT": { "dtype": "float16", "shape": [1, 3, 12], "tolerance": 0.002, "relTolerance": 0.002 } }
},
{
"name": "short_query_splitk_single_partition_q16_kv2048_h8_d32",
"provenance": {
"notes": "Sixteen queries over eight heads supply 128 workgroups, so the adaptive short-query flash path uses one K partition and normalizes in-kernel."
},
"attrs": { "num_heads": 8, "scale": 0.17677669529663687 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 16, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.02454369261, "cosStep": 0.00002396844981 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 16, 256], "tolerance": 0.0005, "relTolerance": 0.0005 }
}
},
{
"name": "materialized_prefill_q512_h1_d128_no_bias",
"provenance": {
"notes": "Correctness lock for the register-blocked QK / in-place softmax / register-blocked PV prefill path used by long f32 attention."
},
"attrs": { "num_heads": 1, "scale": 0.08838834764831845 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.04908738521, "cosStep": 0.0001917475985 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 512, 128], "tolerance": 0.0004, "relTolerance": 0.0004 }
}
},
{
"name": "materialized_sgmat_fused_f16_q1024_h4_d64_no_bias",
"provenance": {
"notes": "Pins the f16-operand fused materialized subgroup-matrix route just over its 16MB score-bytes admission floor (4 heads x 1024 x 1024 x 4B): f16 QK operands with f32 accumulation, raw f32 scores plus row stats, and the f16-probability PV apply with the dedicated f32 store scratch."
},
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float16",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float16",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float16",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.029, "cosStep": 0.017, "offset": 1.0 }
}
},
"outputs": { "outputT": { "dtype": "float16", "shape": [1, 1024, 256], "tolerance": 0.02, "relTolerance": 0.02 } }
},
{
"name": "materialized_sgmat_fused_f16_q1024_h4_d80_no_bias",
"provenance": {
"notes": "Float16 head size 80 is not divisible by 32, selecting guarded tile staging on the fused materialized route at the 16 MiB score threshold."
},
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float16",
"shape": [1, 1024, 320],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float16",
"shape": [1, 1024, 320],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float16",
"shape": [1, 1024, 320],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.029, "cosStep": 0.017, "offset": 1.0 }
}
},
"outputs": { "outputT": { "dtype": "float16", "shape": [1, 1024, 320], "tolerance": 0.02, "relTolerance": 0.02 } }
},
{
"name": "materialized_sgmat_q512_kv512_h1_d128_bias",
"provenance": {
"notes": "Head size 128 selects the subgroup-matrix prefill's unguarded Q tile load. Q bias is fused into that load and V bias follows normalization; K bias adds one constant to every row logit and must cancel under softmax."
},
"attrs": { "num_heads": 1, "scale": 0.08838834764831845 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.029, "cosStep": 0.017 }
},
"biasT": {
"dtype": "float32",
"shape": [384],
"data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 512, 128], "tolerance": 0.0006, "relTolerance": 0.0006 }
}
},
{
"name": "portable_head_dim320_no_bias",
"provenance": {
"notes": "Head size 320 exercises the portable route used by wide vision and multimodal attention blocks."
},
"attrs": { "num_heads": 1, "scale": 0.05590169943749474 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 2, 320],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 3, 320],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 3, 320],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.029, "cosStep": 0.017 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 2, 320], "tolerance": 0.00005, "relTolerance": 0.00005 }
}
},
{
"name": "splitk_decode_q1_kv1500_h6_d64_underfilled_wide_subgroup",
"provenance": {
"notes": "A six-head f32 decode geometry where head size 64 supplies only 16 vec4 dot products to a 32-lane subgroup. The case exercises the portable split-K route instead of an underfilled cooperative QK subgroup."
},
"attrs": { "num_heads": 6, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1, 384],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 1500, 384],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 1500, 384],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.01636246174, "cosStep": 0.00002181661565 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 1, 384], "tolerance": 0.0005, "relTolerance": 0.0005 }
}
},
{
"name": "materialized_sgmat_cached_q1500_kv1500_h2_d64_tails",
"provenance": {
"notes": "A production-scale parity lock for the f32 subgroup-matrix path and register-cached vec4 softmax. S=1500 exercises BM/BN64 tails and a partial final lane group; two heads cover packed BSH offsets at lower test cost."
},
"attrs": { "num_heads": 2, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1500, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.027 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 1500, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.035 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 1500, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.04908738521, "cosStep": 0.00006544984695 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 1500, 128], "tolerance": 0.0004, "relTolerance": 0.0004 }
}
},
{
"name": "materialized_prefill_q512_h1_d64_bias",
"provenance": {
"notes": "An even key/value length exercises register-cached vec4 softmax on the portable materialized route with fused Q bias and post-normalization V bias."
},
"attrs": { "num_heads": 1, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 512, 64],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.027 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 512, 64],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.035 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 512, 64],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.031, "cosStep": 0.019 }
},
"biasT": {
"dtype": "float32",
"shape": [192],
"data": { "kind": "fillFloat32", "scale": 0.03, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 512, 64], "tolerance": 0.0004, "relTolerance": 0.0004 }
}
},
{
"name": "materialized_prefill_q512_kv515_h1_d64_bias_scalar_softmax",
"provenance": {
"notes": "Odd-KV bias coverage keeps the portable materialized GEMMs eligible while proving the scalar softmax remains the correctness fallback when scores cannot be viewed as vec4."
},
"attrs": { "num_heads": 1, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 512, 64],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 515, 64],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 515, 64],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.029, "cosStep": 0.017 }
},
"biasT": {
"dtype": "float32",
"shape": [192],
"data": { "kind": "fillFloat32", "scale": 0.03, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 512, 64], "tolerance": 0.0004, "relTolerance": 0.0004 }
}
},
{
"name": "materialized_sgmat_cached_q520_kv516_h2_d80_all_tails",
"provenance": {
"notes": "Head size 80 exercises the BK32 tail, query length 520 and key/value length 516 exercise both matrix tile tails, and the even key count keeps register-cached vec4 softmax eligible."
},
"attrs": { "num_heads": 2, "scale": 0.11180339887498948 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 520, 160],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 516, 160],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 516, 160],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.03926990817, "cosStep": 0.0001522089464 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 520, 160], "tolerance": 0.001, "relTolerance": 0.001 }
}
},
{
"name": "materialized_sgmat_q520_kv516_h2_d80_all_tails_bias",
"provenance": {
"notes": "Head size 80 selects the bounds-checked Q tile load with fused bias. Query length 520 and key/value length 516 keep both matrix tails live, exposing any bias applied to padded rows."
},
"attrs": { "num_heads": 2, "scale": 0.11180339887498948 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 520, 160],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 516, 160],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 516, 160],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.029, "cosStep": 0.017 }
},
"biasT": {
"dtype": "float32",
"shape": [480],
"data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 520, 160], "tolerance": 0.0012, "relTolerance": 0.0012 }
}
},
{
"name": "materialized_sgmat_scalar_softmax_q513_kv515_h1_d80",
"provenance": {
"notes": "An odd KV length disables vec4 caching while preserving the generalized subgroup-matrix score/apply path; every GEMM dimension has a tail."
},
"attrs": { "num_heads": 1, "scale": 0.11180339887498948 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 513, 80],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.011, "cosStep": 0.027 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 515, 80],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.017, "cosStep": 0.035 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 515, 80],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.07853981634, "cosStep": 0.0003050089955 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 513, 80], "tolerance": 0.001, "relTolerance": 0.001 } }
},
{
"name": "materialized_sgmat_cached_batch2_q512_kv512_h1_d32",
"provenance": {
"notes": "Two batches and head size 32 exercise the narrow-head subgroup-matrix route and the workgroup-z mapping to batch and head."
},
"attrs": { "num_heads": 1, "scale": 0.17677669529663687 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 512, 32],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.007, "cosStep": 0.023 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 512, 32],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.015, "cosStep": 0.033 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 512, 32],
"data": { "kind": "fillFloat32", "scale": 0.06, "sinStep": 0.1963495408, "cosStep": 0.000383495197 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 512, 32], "tolerance": 0.001, "relTolerance": 0.001 } }
},
{
"name": "bias_prefill_d256_register_boundary_compact",
"provenance": {
"notes": "Upper-head boundary for the fused-bias f32 Q32 broadcast specialization. At two subgroup-widths of vec4 head state the clustered kernel avoids the broadcast kernel's doubled long-lived Q/output register footprint."
},
"attrs": { "num_heads": 8, "scale": 0.0625 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 32, 2048],
"data": { "kind": "fillFloat32", "scale": 0.16, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 2048],
"data": { "kind": "fillFloat32", "scale": 0.16, "sinStep": 0.019, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 2048],
"data": { "kind": "fillFloat32", "scale": 0.16, "sinStep": 0.007, "cosStep": 0.041 }
},
"biasT": {
"dtype": "float32",
"shape": [6144],
"data": { "kind": "fillFloat32", "scale": 0.03, "sinStep": 0.023, "cosStep": 0.011 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 32, 2048], "tolerance": 0.00015, "relTolerance": 0.00015 }
}
},
{
"name": "attn_bias_flash_full_b2_h8_s32",
"attrs": { "num_heads": 8 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [2, 8, 32, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.5 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 32, 256], "tolerance": 0.00003 } }
},
{
"name": "attn_bias_flash_broadcast_b1h1_s32",
"attrs": { "num_heads": 8 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [1, 1, 32, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.37, "scale": 0.5 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 32, 256], "tolerance": 0.00003 } }
},
{
"name": "attn_bias_flash_broadcast_head_b2h1_s32",
"attrs": { "num_heads": 8 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [2, 1, 32, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.11, "scale": 0.5 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 32, 256], "tolerance": 0.00003 } }
},
{
"name": "attn_bias_flash_broadcast_batch_b1h8_s32",
"attrs": { "num_heads": 8 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [1, 8, 32, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.29, "cosStep": 0.07, "scale": 0.5 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 32, 256], "tolerance": 0.00003 } }
},
{
"name": "attn_bias_fused_bias_flash_b2_h8_s32",
"attrs": { "num_heads": 8 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"biasT": {
"dtype": "float32",
"shape": [768],
"data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.43, "scale": 0.2 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [2, 8, 32, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.5 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 32, 256], "tolerance": 0.00003 } }
},
{
"name": "attn_bias_tiled_prefill_q32_h4_d64",
"attrs": { "num_heads": 4 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [1, 1, 32, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.37, "scale": 0.5 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 32, 256], "tolerance": 0.00003 } }
},
{
"name": "attn_bias_scalar_cross_odd_headdim6",
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 4, 12],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 5, 12],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 5, 12],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [2, 2, 4, 5],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.5 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 4, 12], "tolerance": 0.00002 } }
},
{
"name": "attn_bias_scalar_fused_bias_causal_odd_headdim6",
"attrs": { "num_heads": 2, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 4, 12],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 4, 12],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 4, 12],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"biasT": {
"dtype": "float32",
"shape": [36],
"data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.43, "scale": 0.2 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [1, 1, 4, 4],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.37, "scale": 0.5 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 4, 12], "tolerance": 0.00002 } }
},
{
"name": "attn_bias_scalar_all_neg_inf_row_zero_q2_kv32_h8_d64",
"provenance": {
"notes": "BSH float32 Q/K/V uses eight heads of width 64, two query tokens, and 32 keys. Rank-4 attention bias is broadcast over batch and heads; query row 1 is -Infinity at every key while row 0 is finite. The portable scalar online-attention route must return zero for every head in row 1 without forming NaN from a zero denominator; row 0 follows the ordinary softmax-weighted value calculation."
},
"attrs": { "num_heads": 8 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 2, 512],
"data": { "kind": "fillFloat32", "scale": 0.25, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 512],
"data": { "kind": "fillFloat32", "scale": 0.25, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 512],
"data": { "kind": "fillFloat32", "scale": 0.25, "sinStep": 0.007, "cosStep": 0.041 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [1, 1, 2, 32],
"data": {
"kind": "values",
"values": [0.0, 0.193, 0.296, 0.259, 0.1, -0.105, -0.261, -0.295, -0.189, 0.005, 0.197, 0.296, 0.256, 0.096, -0.11, -0.264, -0.294, -0.185, 0.01, 0.201, 0.297, 0.254, 0.091, -0.115, -0.266, -0.293, -0.181, 0.015, 0.205, 0.298, 0.251, 0.086, "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity"]
}
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 2, 512], "tolerance": 0.00002, "relTolerance": 0.00002 }
}
},
{
"name": "attn_bias_scalar_single_finite_key_q1_kv32_h8_d64",
"provenance": {
"notes": "Rank-4 bias has one finite entry at key 3 and -Infinity elsewhere. The scalar softmax therefore places all mass on key 3, so every head returns value row 3. This distinguishes a valid one-key denominator from `attn_bias_scalar_all_neg_inf_row_zero_q2_kv32_h8_d64`."
},
"attrs": { "num_heads": 8 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1, 512],
"data": { "kind": "fillFloat32", "scale": 0.25, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 512],
"data": { "kind": "fillFloat32", "scale": 0.25, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 512],
"data": { "kind": "fillFloat32", "scale": 0.25, "sinStep": 0.007, "cosStep": 0.041 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [1, 1, 1, 32],
"data": {
"kind": "values",
"values": ["-Infinity", "-Infinity", "-Infinity", 0.0, "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity", "-Infinity"]
}
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 1, 512], "tolerance": 0.00001, "relTolerance": 0.00001 }
}
},
{
"name": "attn_bias_flash_f16_b1_h8_s32",
"attrs": { "num_heads": 8 },
"inputs": {
"queryT": {
"dtype": "float16",
"shape": [1, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float16",
"shape": [1, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float16",
"shape": [1, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.02454369261, "cosStep": 0.001533980788 }
},
"attentionBiasT": {
"dtype": "float16",
"shape": [1, 1, 32, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.37, "scale": 0.5 }
}
},
"outputs": { "outputT": { "dtype": "float16", "shape": [1, 32, 256], "tolerance": 0.03 } }
},
{
"name": "flash_q30_below_cluster_h9_d64_no_bias",
"provenance": {
"notes": "Query length 30 is below the cooperative-cluster threshold while 270 query-head rows clear the flash admission floor. The case exercises one-query-row-per-workgroup flash with and without subgroups."
},
"attrs": { "num_heads": 9, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 30, 576],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 576],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 576],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.007, "cosStep": 0.041 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 30, 576], "tolerance": 0.00005, "relTolerance": 0.00005 }
}
},
{
"name": "flash_q30_below_cluster_h9_d64_bias",
"provenance": {
"notes": "Fused QKV bias with query length 30 exercises the biased one-query-row flash route below the clustered and split-K thresholds."
},
"attrs": { "num_heads": 9, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 30, 576],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 576],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 576],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.007, "cosStep": 0.041 }
},
"biasT": {
"dtype": "float32",
"shape": [1728],
"data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.013, "cosStep": 0.029 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 30, 576], "tolerance": 0.00005, "relTolerance": 0.00005 }
}
},
{
"name": "flash_q30_below_cluster_h9_d64_attn_bias",
"provenance": {
"notes": "Additive attention bias with query length 30 exercises the per-query-row flash route below the tiled-prefill threshold on tiers without subgroups."
},
"attrs": { "num_heads": 9, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 30, 576],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 576],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 576],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.007, "cosStep": 0.041 }
},
"attentionBiasT": {
"dtype": "float32",
"shape": [1, 9, 30, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.11, "scale": 0.5 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 30, 576], "tolerance": 0.00005, "relTolerance": 0.00005 }
}
},
{
"name": "small_seq_minilm_b1_q11_h12_d32",
"provenance": {
"notes": "all-MiniLM-L6-v2 self-attention at a short sentence: the whole-head small-seq variant."
},
"attrs": { "num_heads": 12 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 11, 384],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.043, "scale": 0.4 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 11, 384],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.023, "scale": 0.4 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 11, 384],
"data": { "kind": "fillFloat32", "sinStep": 0.007, "cosStep": 0.041, "scale": 0.4 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 11, 384], "tolerance": 0.00002 } }
},
{
"name": "small_seq_boundary_b1_q32_kv32_h4_d64",
"provenance": {
"notes": "SMALL_SEQ_MAX on both axes; kvSeq+headDim = 96 sits exactly on SMALL_SEQ_MAX_PRIVATE_FLOATS."
},
"attrs": { "num_heads": 4 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.043, "scale": 0.4 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.023, "scale": 0.4 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.007, "cosStep": 0.041, "scale": 0.4 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 32, 256], "tolerance": 0.00002 } }
},
{
"name": "small_seq_cross_b1_q5_kv17_h3_d16",
"provenance": {
"notes": "Cross attention: kvSeq != qSeq, and neither is a power of two (the workgroup rounds up, the tail threads must not write)."
},
"attrs": { "num_heads": 3 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 5, 48],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.043, "scale": 0.4 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 17, 48],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.023, "scale": 0.4 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 17, 48],
"data": { "kind": "fillFloat32", "sinStep": 0.007, "cosStep": 0.041, "scale": 0.4 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 5, 48], "tolerance": 0.00002 } }
},
{
"name": "small_seq_batch2_q7_kv7_h2_d8",
"provenance": {
"notes": "Batch > 1 drives the dispatch y axis; a wrong batch stride would mix the two sequences."
},
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 7, 16],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.043, "scale": 0.4 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 7, 16],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.023, "scale": 0.4 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 7, 16],
"data": { "kind": "fillFloat32", "sinStep": 0.007, "cosStep": 0.041, "scale": 0.4 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 7, 16], "tolerance": 0.00002 } }
},
{
"name": "small_seq_declines_once_flash_is_eligible_b1_q32_h12_d32",
"provenance": {
"notes": "Selection boundary opposite the small-sequence case: 12 heads at sequence length 32 satisfy flashShapeOk, so the whole-head route must decline. This locks the shared `not flashShapeOk` predicate used by the whole-head and portable routes."
},
"attrs": { "num_heads": 12 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 32, 384],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.043, "scale": 0.4 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 32, 384],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.023, "scale": 0.4 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 32, 384],
"data": { "kind": "fillFloat32", "sinStep": 0.007, "cosStep": 0.041, "scale": 0.4 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 32, 384], "tolerance": 0.00002 } }
},
{
"name": "materialized_sgmat_q512_kv512_h2_d64_offset_value_scale_lock",
"provenance": {
"notes": "Values oscillate around 1.0, keeping the attention average at order-one magnitude. This makes both the denominator published by row statistics and the division in the subgroup-matrix apply pass observable."
},
"attrs": { "num_heads": 2, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.9, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.9, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 512, 128],
"data": { "kind": "fillFloat32", "scale": 0.08, "offset": 1.0, "sinStep": 0.031, "cosStep": 0.019 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 512, 128], "tolerance": 0.0004, "relTolerance": 0.0004 }
}
},
{
"name": "materialized_sgmat_fused_q1024_kv1024_h4_d64_offset_value_scale_lock",
"provenance": {
"notes": "The 16.8 MiB score tensor selects the fused row-statistics route. Values oscillate around 1.0 so a per-tile, combined-denominator, or apply-scale error remains observable."
},
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "scale": 0.9, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "scale": 0.9, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "offset": 1.0, "sinStep": 0.031, "cosStep": 0.019 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 1024, 256], "tolerance": 0.0004, "relTolerance": 0.0004 }
}
},
{
"name": "materialized_sgmat_fused_q1024_kv1024_h4_d64_bias_offset_value_scale_lock",
"provenance": {
"notes": "Exercises the bias arm of the fused row-statistics route: Q bias is applied before the score-tile statistics, while V bias is added after the normalized average. A 16.8 MiB score tensor exceeds the fuse threshold, and V oscillating around 1.0 keeps the output O(1) so normalization-scale errors remain observable."
},
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "scale": 0.9, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "scale": 0.9, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "offset": 1.0, "sinStep": 0.031, "cosStep": 0.019 }
},
"biasT": {
"dtype": "float32",
"shape": [768],
"data": { "kind": "fillFloat32", "scale": 0.05, "sinStep": 0.041, "cosStep": 0.023 }
}
},
"outputs": {
"outputT": { "dtype": "float32", "shape": [1, 1024, 256], "tolerance": 0.0004, "relTolerance": 0.0004 }
}
},
{
"name": "splitk_decode_h4_d64_kv2048_no_bias_ramp_value_scale_lock",
"provenance": {
"notes": "A monotone value ramp makes each output an order-one function of the weighted key index. This exposes both uniform scale errors and incorrect exponential offsets in the cross-partition split-K combine."
},
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 1, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "linspace", "start": 0.5, "end": 2.0 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.00005 } }
},
{
"name": "splitk_decode_h4_d64_kv2048_no_bias_f16_ramp_value_scale_lock",
"provenance": {
"notes": "A monotone value ramp keeps float16 decode outputs at order-one magnitude, making split-K accumulation, cross-partition rescaling, and final normalization observable."
},
"attrs": { "num_heads": 4, "scale": 0.125 },
"inputs": {
"queryT": {
"dtype": "float16",
"shape": [1, 1, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float16",
"shape": [1, 2048, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float16",
"shape": [1, 2048, 256],
"data": { "kind": "linspace", "start": 0.5, "end": 2.0 }
}
},
"outputs": { "outputT": { "dtype": "float16", "shape": [1, 1, 256], "tolerance": 0.003 } }
},
{
"name": "flash_q32_h4_d128_no_bias_f16_ramp_value_scale_lock",
"provenance": {
"notes": "A monotone value ramp gives each float16 q32 row a distinct order-one output, exposing the register-blocked epilogue division and an incorrect broadcast lane."
},
"attrs": { "num_heads": 4, "scale": 0.08838834764831845 },
"inputs": {
"queryT": {
"dtype": "float16",
"shape": [1, 64, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.017, "cosStep": 0.031 }
},
"keyT": {
"dtype": "float16",
"shape": [1, 64, 512],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.011, "cosStep": 0.023 }
},
"valueT": {
"dtype": "float16",
"shape": [1, 64, 512],
"data": { "kind": "linspace", "start": 0.5, "end": 2.0 }
}
},
"outputs": { "outputT": { "dtype": "float16", "shape": [1, 64, 512], "tolerance": 0.003 } }
},
{
"name": "short_query_splitk_single_partition_q16_kv2048_h8_d32_ramp_value_scale_lock",
"provenance": {
"notes": "The adaptive short-query path uses one partition because query-head parallelism already supplies enough work. A value ramp keeps all 16 outputs at order-one magnitude, exposing in-kernel normalization errors."
},
"attrs": { "num_heads": 8, "scale": 0.17677669529663687 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 16, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.013, "cosStep": 0.029 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "fillFloat32", "scale": 0.08, "sinStep": 0.019, "cosStep": 0.037 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 2048, 256],
"data": { "kind": "linspace", "start": 0.5, "end": 2.0 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 16, 256], "tolerance": 0.00005 } }
},
{
"name": "small_seq_blocked_bias_causal_1x64x64_h4d16",
"provenance": {
"notes": "Short-sequence attention with 64 queries, 64 keys, four heads of width 16, fused bias, and causal masking."
},
"attrs": { "num_heads": 4, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 64, 64],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 64, 64],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 64, 64],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"biasT": {
"dtype": "float32",
"shape": [192],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 64, 64], "tolerance": 0.00002 } }
},
{
"name": "small_seq_blocked_no_bias_causal_q13_kv40_h2d16",
"provenance": {
"notes": "Thirteen queries leave five active rows in the final eight-row block, and the key count is not divisible by sixteen. Causal masking makes out-of-range lanes and inactive rows contribute the identity partial."
},
"attrs": { "num_heads": 2, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 13, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 40, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 40, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 13, 32], "tolerance": 0.00002 } }
},
{
"name": "small_seq_blocked_bias_bidirectional_q24_kv40_h3d32",
"provenance": {
"notes": "Head dim 32 (eight vec4 per row, the route's register ceiling) with bias and no causal mask; kv > q so every query sees all forty keys."
},
"attrs": { "num_heads": 3, "unidirectional": 0 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 24, 96],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 40, 96],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 40, 96],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"biasT": {
"dtype": "float32",
"shape": [288],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 24, 96], "tolerance": 0.00002 } }
},
{
"name": "small_seq_blocked_no_bias_bidirectional_q3_kv5_h1d8",
"provenance": {
"notes": "Fewer keys than key lanes (5 keys, 8 lanes after the power-of-two floor) and fewer queries than one block: most lanes hold no key and merge identities."
},
"attrs": { "num_heads": 1, "unidirectional": 0 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 3, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [1, 5, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 5, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [1, 3, 8], "tolerance": 0.00002 } }
},
{
"name": "small_seq_blocked_bias_causal_batch2_q16_kv16_h2d16",
"provenance": {
"notes": "Two batches of two heads at exactly two query blocks; the batch axis rides dispatch z and the bias is shared across batches."
},
"attrs": { "num_heads": 2, "unidirectional": 1 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [2, 16, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"keyT": {
"dtype": "float32",
"shape": [2, 16, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23 }
},
"valueT": {
"dtype": "float32",
"shape": [2, 16, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.41 }
},
"biasT": {
"dtype": "float32",
"shape": [96],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 }
}
},
"outputs": { "outputT": { "dtype": "float32", "shape": [2, 16, 32], "tolerance": 0.00002 } }
},
{
"name": "small_seq_positive_infinity_query",
"provenance": {
"notes": "The unmasked whole-head route always includes an `exp(0)` term, so a finite row cannot have a zero denominator. A positive-infinity query produces non-finite scores and the expected NaN result."
},
"attrs": { "num_heads": 2 },
"inputs": {
"queryT": {
"dtype": "float32",
"shape": [1, 4, 8],
"data": { "kind": "cycle", "values": ["Infinity", 0.5, -0.25, 0.75, 0.125, -0.5, 0.25, 1.0] }
},
"keyT": {
"dtype": "float32",
"shape": [1, 4, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.023, "scale": 0.4 }
},
"valueT": {
"dtype": "float32",
"shape": [1, 4, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.007, "cosStep": 0.041, "scale": 0.4 }
}
},
"outputs": {
"outputT": {
"dtype": "float32",
"shape": [1, 4, 8],
"tolerance": 0.00002,
"relTolerance": 0.00002,
"allowNaN": true
}
}
}
]
}