| { |
| "op": "com.microsoft.SparseAttention", |
| "fixtureArrays": { |
| "block_column_indices_t_pattern": [0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 3, 4, 5, 6, 7, 8, 9, 10, 0, 4, 5, 6, 7, 8, 9, 10, 11, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 4, 6, 7, 8, 9, 10, 11, 12, 13, 0, 4, 7, 8, 9, 10, 11, 12, 13, 14, 0, 4, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 9, 3, 4, 5, 6, 7, 8, 9, 10, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 5, 6, 7, 8, 9, 10, 11, 12, 3, 6, 7, 8, 9, 10, 11, 12, 13, 3, 7, 8, 9, 10, 11, 12, 13, 14, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 5, 6, 7, 8, 9, 10, 11, 2, 5, 6, 7, 8, 9, 10, 11, 12, 2, 6, 7, 8, 9, 10, 11, 12, 13, 2, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2, 6, 8, 9, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 4, 5, 6, 7, 8, 9, 10, 1, 4, 5, 6, 7, 8, 9, 10, 11, 1, 5, 6, 7, 8, 9, 10, 11, 12, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 5, 7, 8, 9, 10, 11, 12, 13, 14, 1, 5, 8, 9, 10, 11, 12, 13, 14, 15, -1, -1], |
| "sparse-prompt-b1-s1024-h32kv8-d128-blk64_input_blockRowIndicesT": [0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 54, 63, 72, 82, 92, 102, 112, 0, 1, 3, 6, 10, 15, 21, 28, 36, 44, 52, 60, 69, 78, 87, 96, 106, 0, 1, 3, 6, 10, 15, 21, 28, 36, 44, 52, 61, 70, 79, 88, 98, 108, 0, 1, 3, 6, 10, 15, 21, 28, 36, 44, 53, 62, 71, 80, 90, 100, 110] |
| }, |
| "tunableSpace": { "WORKGROUP_SIZE": [32, 64, 128, 256], "APPEND_WORKGROUP_SIZE": [64, 128, 256] }, |
| "cases": [ |
| { |
| "name": "sparse-prompt-b1-s1024-h32kv8-d128-blk64", |
| "preset": "smoke", |
| "vars": { |
| "dtype": "float32", |
| "batch": 1, |
| "seq": 1024, |
| "heads": 32, |
| "kvHeads": 8, |
| "headDim": 128, |
| "qkPairs": 13254656, |
| "attendedKeys": 1024, |
| "dtypeBytes": 4 |
| }, |
| "attrs": { "num_heads": 32, "kv_num_heads": 8, "sparse_block_size": 64 }, |
| "inputs": { |
| "queryT": { "shape": [1, 1024, 4096], "dtype": "float32", "dist": "normal", "seed": 9300, "scale": 1 }, |
| "keyT": { "shape": [1, 1024, 1024], "dtype": "float32", "dist": "normal", "seed": 9301, "scale": 1 }, |
| "valueT": { "shape": [1, 1024, 1024], "dtype": "float32", "dist": "normal", "seed": 9302, "scale": 1 }, |
| "pastKeyT": { "shape": [1, 8, 1024, 128], "dtype": "float32", "dist": "normal", "seed": 9303, "scale": 1 }, |
| "pastValueT": { "shape": [1, 8, 1024, 128], "dtype": "float32", "dist": "normal", "seed": 9304, "scale": 1 }, |
| "blockRowIndicesT": { |
| "shape": [4, 17], |
| "dtype": "int32", |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/sparse-prompt-b1-s1024-h32kv8-d128-blk64_input_blockRowIndicesT" } |
| } |
| }, |
| "blockColIndicesT": { |
| "shape": [4, 112], |
| "dtype": "int32", |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/block_column_indices_t_pattern" } } |
| }, |
| "totalSequenceLengthT": { "shape": [1], "dtype": "int32", "data": { "kind": "values", "values": [1024] } }, |
| "keyTotalSequenceLengthsT": { "shape": [1], "dtype": "int32", "dist": "constant", "value": 1024 } |
| }, |
| "outputs": { "outputT": { "shape": [1, 1024, 4096], "dtype": "float32" } }, |
| "bench": { "metrics": [{ "type": "gflops", "value": "4 * args.qkPairs * args.headDim" }] } |
| }, |
| { |
| "name": "sparse-decode-b8-past1023-h32kv8-d128-blk64", |
| "preset": "smoke", |
| "vars": { |
| "dtype": "float32", |
| "batch": 8, |
| "seq": 1, |
| "heads": 32, |
| "kvHeads": 8, |
| "headDim": 128, |
| "qkPairs": 163840, |
| "attendedKeys": 640, |
| "dtypeBytes": 4 |
| }, |
| "attrs": { "num_heads": 32, "kv_num_heads": 8, "sparse_block_size": 64 }, |
| "inputs": { |
| "queryT": { "shape": [8, 1, 4096], "dtype": "float32", "dist": "normal", "seed": 9310, "scale": 1 }, |
| "keyT": { "shape": [8, 1, 1024], "dtype": "float32", "dist": "normal", "seed": 9311, "scale": 1 }, |
| "valueT": { "shape": [8, 1, 1024], "dtype": "float32", "dist": "normal", "seed": 9312, "scale": 1 }, |
| "pastKeyT": { "shape": [8, 8, 1024, 128], "dtype": "float32", "dist": "normal", "seed": 9313, "scale": 1 }, |
| "pastValueT": { "shape": [8, 8, 1024, 128], "dtype": "float32", "dist": "normal", "seed": 9314, "scale": 1 }, |
| "blockRowIndicesT": { |
| "shape": [4, 17], |
| "dtype": "int32", |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/sparse-prompt-b1-s1024-h32kv8-d128-blk64_input_blockRowIndicesT" } |
| } |
| }, |
| "blockColIndicesT": { |
| "shape": [4, 112], |
| "dtype": "int32", |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/block_column_indices_t_pattern" } } |
| }, |
| "totalSequenceLengthT": { "shape": [1], "dtype": "int32", "data": { "kind": "values", "values": [1024] } }, |
| "keyTotalSequenceLengthsT": { "shape": [8], "dtype": "int32", "dist": "constant", "value": 1024 } |
| }, |
| "outputs": { "outputT": { "shape": [8, 1, 4096], "dtype": "float32" } }, |
| "bench": { |
| "metrics": [ |
| { |
| "type": "bandwidth", |
| "value": "2 * args.batch * args.kvHeads * args.attendedKeys * args.headDim * args.dtypeBytes" |
| } |
| ] |
| } |
| }, |
| { |
| "name": "sparse-decode-f16-b8-past1023", |
| "preset": "model", |
| "vars": { |
| "dtype": "float16", |
| "batch": 8, |
| "seq": 1, |
| "heads": 32, |
| "kvHeads": 8, |
| "headDim": 128, |
| "qkPairs": 163840, |
| "attendedKeys": 640, |
| "dtypeBytes": 2 |
| }, |
| "attrs": { "num_heads": 32, "kv_num_heads": 8, "sparse_block_size": 64 }, |
| "inputs": { |
| "queryT": { "shape": [8, 1, 4096], "dtype": "float16", "dist": "normal", "seed": 9320, "scale": 1 }, |
| "keyT": { "shape": [8, 1, 1024], "dtype": "float16", "dist": "normal", "seed": 9321, "scale": 1 }, |
| "valueT": { "shape": [8, 1, 1024], "dtype": "float16", "dist": "normal", "seed": 9322, "scale": 1 }, |
| "pastKeyT": { "shape": [8, 8, 1024, 128], "dtype": "float16", "dist": "normal", "seed": 9323, "scale": 1 }, |
| "pastValueT": { "shape": [8, 8, 1024, 128], "dtype": "float16", "dist": "normal", "seed": 9324, "scale": 1 }, |
| "blockRowIndicesT": { |
| "shape": [4, 17], |
| "dtype": "int32", |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/sparse-prompt-b1-s1024-h32kv8-d128-blk64_input_blockRowIndicesT" } |
| } |
| }, |
| "blockColIndicesT": { |
| "shape": [4, 112], |
| "dtype": "int32", |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/block_column_indices_t_pattern" } } |
| }, |
| "totalSequenceLengthT": { "shape": [1], "dtype": "int32", "data": { "kind": "values", "values": [1024] } }, |
| "keyTotalSequenceLengthsT": { "shape": [8], "dtype": "int32", "dist": "constant", "value": 1024 } |
| }, |
| "outputs": { "outputT": { "shape": [8, 1, 4096], "dtype": "float16" } }, |
| "bench": { |
| "metrics": [ |
| { |
| "type": "bandwidth", |
| "value": "2 * args.batch * args.kvHeads * args.attendedKeys * args.headDim * args.dtypeBytes" |
| } |
| ] |
| } |
| }, |
| { |
| "name": "sparse-decode-packed-rotary-b8-past1023", |
| "preset": "model", |
| "vars": { |
| "dtype": "float32", |
| "batch": 8, |
| "seq": 1, |
| "heads": 32, |
| "kvHeads": 8, |
| "headDim": 128, |
| "qkPairs": 163840, |
| "attendedKeys": 640, |
| "dtypeBytes": 4 |
| }, |
| "attrs": { "num_heads": 32, "kv_num_heads": 8, "sparse_block_size": 64, "do_rotary": 1 }, |
| "inputs": { |
| "queryT": { "shape": [8, 1, 6144], "dtype": "float32", "dist": "normal", "seed": 9330, "scale": 1 }, |
| "pastKeyT": { "shape": [8, 8, 1024, 128], "dtype": "float32", "dist": "normal", "seed": 9333, "scale": 1 }, |
| "pastValueT": { "shape": [8, 8, 1024, 128], "dtype": "float32", "dist": "normal", "seed": 9334, "scale": 1 }, |
| "blockRowIndicesT": { |
| "shape": [4, 17], |
| "dtype": "int32", |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/sparse-prompt-b1-s1024-h32kv8-d128-blk64_input_blockRowIndicesT" } |
| } |
| }, |
| "blockColIndicesT": { |
| "shape": [4, 112], |
| "dtype": "int32", |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/block_column_indices_t_pattern" } } |
| }, |
| "totalSequenceLengthT": { "shape": [1], "dtype": "int32", "data": { "kind": "values", "values": [1024] } }, |
| "keyTotalSequenceLengthsT": { "shape": [8], "dtype": "int32", "dist": "constant", "value": 1024 }, |
| "cosCacheT": { "shape": [1024, 64], "dtype": "float32", "dist": "normal", "seed": 9335, "scale": 1 }, |
| "sinCacheT": { "shape": [1024, 64], "dtype": "float32", "dist": "normal", "seed": 9336, "scale": 1 } |
| }, |
| "outputs": { "outputT": { "shape": [8, 1, 4096], "dtype": "float32" } }, |
| "bench": { |
| "metrics": [ |
| { |
| "type": "bandwidth", |
| "value": "2 * args.batch * args.kvHeads * args.attendedKeys * args.headDim * args.dtypeBytes" |
| } |
| ] |
| } |
| }, |
| { |
| "name": "sparse-chunked-b2-s128-past896", |
| "preset": "model", |
| "vars": { |
| "dtype": "float32", |
| "batch": 2, |
| "seq": 128, |
| "heads": 32, |
| "kvHeads": 8, |
| "headDim": 128, |
| "qkPairs": 4919296, |
| "attendedKeys": 704, |
| "dtypeBytes": 4 |
| }, |
| "attrs": { "num_heads": 32, "kv_num_heads": 8, "sparse_block_size": 64 }, |
| "inputs": { |
| "queryT": { "shape": [2, 128, 4096], "dtype": "float32", "dist": "normal", "seed": 9340, "scale": 1 }, |
| "keyT": { "shape": [2, 128, 1024], "dtype": "float32", "dist": "normal", "seed": 9341, "scale": 1 }, |
| "valueT": { "shape": [2, 128, 1024], "dtype": "float32", "dist": "normal", "seed": 9342, "scale": 1 }, |
| "pastKeyT": { "shape": [2, 8, 1024, 128], "dtype": "float32", "dist": "normal", "seed": 9343, "scale": 1 }, |
| "pastValueT": { "shape": [2, 8, 1024, 128], "dtype": "float32", "dist": "normal", "seed": 9344, "scale": 1 }, |
| "blockRowIndicesT": { |
| "shape": [4, 17], |
| "dtype": "int32", |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/sparse-prompt-b1-s1024-h32kv8-d128-blk64_input_blockRowIndicesT" } |
| } |
| }, |
| "blockColIndicesT": { |
| "shape": [4, 112], |
| "dtype": "int32", |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/block_column_indices_t_pattern" } } |
| }, |
| "totalSequenceLengthT": { "shape": [1], "dtype": "int32", "data": { "kind": "values", "values": [1024] } }, |
| "keyTotalSequenceLengthsT": { "shape": [2], "dtype": "int32", "dist": "constant", "value": 1024 } |
| }, |
| "outputs": { "outputT": { "shape": [2, 128, 4096], "dtype": "float32" } }, |
| "bench": { "metrics": [{ "type": "gflops", "value": "4 * args.qkPairs * args.headDim" }] } |
| } |
| ] |
| } |
|
|