{ "op": "com.microsoft.MultiHeadAttention", "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": "No-bias companion for ORT's batch=1, q_seq=2, kv_seq=3, num_heads=2, head_size=16 cross-attention shape." }, "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.007, "cosStep": 0.041 } } }, "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.007, "cosStep": 0.041 } } }, "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.029, "cosStep": 0.017 } } }, "outputs": { "outputT": { "dtype": "float32", "shape": [1, 1, 256], "tolerance": 0.0003 } } }, { "name": "splitk_decode_head_dim128_no_bias_kv2048", "provenance": { "notes": "Compact companion for bench case decode-h8-d128-kv2048, covering headDim=128 decode split-K selection." }, "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.029, "cosStep": 0.017 } } }, "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.029, "cosStep": 0.017 } } }, "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": "f16 headDim=128 prefill coverage for q32-broadcast benchmarks; full tier selects qkv_no_bias_flash_q32_broadcast and no-subgroups selects qkv_no_bias_flash_q32_shared." }, "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.007, "cosStep": 0.041 } } }, "outputs": { "outputT": { "dtype": "float16", "shape": [1, 64, 512], "tolerance": 0.03 } } }, { "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.007, "cosStep": 0.041 } } }, "outputs": { "outputT": { "dtype": "float16", "shape": [1, 1, 256], "tolerance": 0.03 } } }, { "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": "Exact upper-left causal witness. ORT CPU skips masking the final query row when qSeq < kvSeq and returns 3.75 instead of 1.5 there." }, "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": "query sequence 65537 exceeds the flash-path cap and exercises the scalar fallback's folded dispatch. x is clamped to 65535 and the grid-stride loop handles the final two queries on its second iteration. kvSeq=2 keeps the reference compact, while distinct query rows expose an indexing error." }, "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": "Compact companion for bench case prefill-cluster-qseq64-h16-d64-HEALTHY, which exposes the baseline/no-subgroups tier gap in the cluster prefill route." }, "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": "Compact companion for bench case flux2-joint-attn-img512-s1536-24h-d128, preserving headDim=128 and qSeq*heads>=256 so the flash-cluster path and no-subgroups fallback remain eligible." }, "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": "Compact correctness companion for the fused-bias benchmark at the 32-vec4, 32-lane register-topology boundary." }, "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": "Compact lock immediately below both flash admission boundaries: qSeq*heads=31*8=248 (<256) and kvSeq=511 (<512). It guards the realistic scalar fallback that the paired benchmark exposes." }, "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.007, "cosStep": 0.041 } } }, "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.007, "cosStep": 0.041 } } }, "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.029, "cosStep": 0.017 } } }, "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": "Compact correctness lock for the D<32 key-parallel fallback. The paired q128/kv2048 benchmark exposes the per-key-barrier pathology this path removes." }, "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 coverage for the D<32 key-parallel fallback. Values are scaled to O(1) while queries and keys remain small, keeping the convex-combination output near one so the tolerance detects meaningful scale errors." }, "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": "Locks the adaptive one-partition short-query flash path once batch*queries*heads already supplies 128 workgroups; the paired q16/kv4096 benchmark measures the same occupancy regime." }, "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.029, "cosStep": 0.017 } } }, "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.029, "cosStep": 0.017 } } }, "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": "The d=80 twin of the f16 fused materialized fixture: a head dim that is not a multiple of 32 takes the guarded staging forms instead of the unguarded selects, on the same 16MB score-bytes admission floor." }, "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": "Bias twin of the d128 subgroup-matrix prefill. headDim % 32 == 0 takes the select-form Q tile load, so this locks the fused Q bias on that branch and the post-normalization V bias in the compact store epilogue. The K bias is deliberately absent from the kernel and present in the reference: it shifts every logit in a row by one constant, so softmax cancels it, and a divergence here would prove otherwise." }, "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": "Locks the device-derived portable fallback above the former hard-coded headDim<=256 ceiling; D320 occurs in 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 d64 supplies only 16 vec4 dot products to a 32-lane subgroup; the selector should prefer the portable split-K kernel 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.029, "cosStep": 0.017 } } }, "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.031, "cosStep": 0.019 } } }, "outputs": { "outputT": { "dtype": "float32", "shape": [1, 1500, 128], "tolerance": 0.0004, "relTolerance": 0.0004 } } }, { "name": "materialized_prefill_q512_h1_d64_bias", "provenance": { "notes": "Bias companion for the portable materialized f32 path; the even KV length exercises its register-cached vec4 softmax while locking 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": "Generalized subgroup-matrix coverage: d80 exercises the BK32 tail, q520/kv516 exercise both matrix tile tails, and kv516 keeps the 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.029, "cosStep": 0.017 } } }, "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": "Bias twin on the guarded Q tile load: d80 is not a multiple of 32, so the select-form branch is unavailable and the bounds-checked load carries the bias instead. q520/kv516 keep both matrix tile tails live, where a bias applied to a padded row would leak into the result." }, "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.031, "cosStep": 0.019 } } }, "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": "Batch and narrow-head coverage for the generalized selector; two batches also exercise the workgroup-z to batch/head mapping." }, "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.025, "cosStep": 0.013 } } }, "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_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.07, "cosStep": 0.41 } }, "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": "One query row below the cooperative cluster threshold (qSeq 30 < 31) while qSeq*heads=270 still clears the flash occupancy floor, and kvSeq stays far under the split-K thresholds. Locks the one-query-row-per-workgroup flash kernel: the subgroup form on fixed-width tiers, the portable form 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 } } }, "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 sibling of flash_q30_below_cluster_h9_d64_no_bias: same sub-cluster query count, so the biased flash kernel runs per query row instead of the clustered or split-K forms." }, "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 sibling of flash_q30_below_cluster_h9_d64_no_bias: qSeq 30 keeps the tiled prefill kernel (qSeq >= 31) out, so the per-query-row attention-bias flash kernel runs 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": "The other materialized-sgmat fixtures draw V from a zero-mean sinusoid, so a softmax average over hundreds of keys cancels to ~1e-5 and the 4e-4 absolute tolerance swamps any multiplicative error: halving the apply output passes every one of them. Offsetting V to oscillate about 1.0 makes the attention average O(1), so the normalization itself is under test - the denominator the row-stats pass publishes, and the divide the apply performs with it." }, "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": "Above the fused-softmax score-byte threshold (4 heads x 1024 x 1024 x 4B = 16.8 MiB), so this is the row-stats route rather than the separate softmax pass. V oscillates about 1.0 so the attention average is O(1) and the normalization is actually under test: halving the apply output, or doubling either the per-tile or the combined denominator, fails this and passes every zero-mean fixture." }, "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": "Every no-bias decode split-K fixture draws V from a zero-mean sinusoid, so the softmax average over 2048 keys cancels to ~5e-5 while the absolute tolerance is 3e-4: halving the apply output, or dropping the exp-weighted rescale in the cross-partition combine, passes all nine of them (the bias siblings only escape because the V bias survives the average). A monotone V ramp makes each output element 0.5 + 1.5 * (weighted mean key index) / kvSeq, which is O(1) - so a uniform scale error is visible - and is a direct function of the per-partition weights, so a combine that mixes partitions with the wrong exponent offset moves it too." }, "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": "The f16 arm of the no-bias decode split-K kernel is a separate compile (usesF16) and its only coverage was flash_decode_head_dim64_no_bias_f16, whose 0.03 absolute tolerance against a ~1e-4 expected output cannot detect a 295x scale error - the single blindest fixture in the op. Same ramped V as the f32 sibling, so the f16 accumulate/rescale path is scale-locked too." }, "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": "qkv_no_bias_flash_q32_broadcast and qkv_no_bias_flash_q32_shared are reached by exactly one fixture, flash_self_attention_head_dim128_no_bias_f16, whose zero-mean V averages to ~1.8e-3 under a 0.03 absolute tolerance - a 16x scale error passes. Same shape, dtype and route with a monotone V ramp so each query row lands at 0.5 + 1.5 * (weighted mean key index) / 64: the register-blocked q32 epilogue divide is now under test, and the per-query variation also catches a broadcast that staged the wrong lane's row." }, "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 when batch*queries*heads already supplies enough work, so normalization stays in-kernel instead of using the cross-partition combine. A ramped V keeps each of the 16 query-row outputs O(1), making scale errors observable where a zero-mean companion averages to 5.8e-5 under a 5e-4 tolerance." }, "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 } } } ] }