{ "op": "com.microsoft.MRotaryEmbedding", "tunableSpace": { "WORKGROUP_SIZE": [64, 128, 256] }, "cases": [ { "name": "mrope-f32-smoke-b1h4s64d64", "preset": "smoke", "attrs": { "mrope_layout": 0, "interleaved": 0, "mrope_section": [16, 8, 8], "rotary_embedding_dim": 0, "scale": 1 }, "vars": { "elems": 16384, "rotPairs": 8192 }, "inputs": { "x": { "shape": [1, 4, 64, 64], "dtype": "float32", "dist": "normal", "seed": 1000, "scale": 0.2 }, "positionIds": { "shape": [3, 1, 64], "dtype": "uint32", "dist": "uniform", "seed": 1001, "min": 0, "max": 127 }, "cos": { "shape": [128, 32], "dtype": "float32", "dist": "uniform", "seed": 1002, "scale": 0.1, "offset": 0.9 }, "sin": { "shape": [128, 32], "dtype": "float32", "dist": "uniform", "seed": 1003, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 4, 64, 64], "dtype": "float32" } }, "bench": { "primary": false, "metrics": [{ "type": "bandwidth", "value": "args.elems * 4 * 2 + args.rotPairs * 4 * 2" }] } }, { "name": "qwen3-vl-2b-decode-q-h16-d128", "preset": "model", "attrs": { "mrope_layout": 1, "interleaved": 0, "mrope_section": [24, 20, 20], "rotary_embedding_dim": 0, "scale": 1 }, "vars": { "elems": 2048, "rotPairs": 1024 }, "provenance": { "model": "Qwen/Qwen3-VL-2B-Instruct", "notes": "Qwen3-VL interleaved M-RoPE over the query projection: 16 heads x head_dim 128, mrope_section [24, 20, 20] summing to head_dim/2. Cache rows cover the model's position budget." }, "inputs": { "x": { "shape": [1, 16, 1, 128], "dtype": "float32", "dist": "normal", "seed": 1000, "scale": 0.2 }, "positionIds": { "shape": [3, 1, 1], "dtype": "uint32", "dist": "uniform", "seed": 1001, "min": 0, "max": 32767 }, "cos": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1002, "scale": 0.1, "offset": 0.9 }, "sin": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1003, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 16, 1, 128], "dtype": "float32" } }, "bench": { "primary": true, "metrics": [{ "type": "bandwidth", "value": "args.elems * 4 * 2 + args.rotPairs * 4 * 2" }] } }, { "name": "qwen3-vl-2b-prefill-t512-q-h16-d128", "preset": "model", "attrs": { "mrope_layout": 1, "interleaved": 0, "mrope_section": [24, 20, 20], "rotary_embedding_dim": 0, "scale": 1 }, "vars": { "elems": 1048576, "rotPairs": 524288 }, "provenance": { "model": "Qwen/Qwen3-VL-2B-Instruct", "notes": "Qwen3-VL interleaved M-RoPE over the query projection: 16 heads x head_dim 128, mrope_section [24, 20, 20] summing to head_dim/2. Cache rows cover the model's position budget." }, "inputs": { "x": { "shape": [1, 16, 512, 128], "dtype": "float32", "dist": "normal", "seed": 1000, "scale": 0.2 }, "positionIds": { "shape": [3, 1, 512], "dtype": "uint32", "dist": "uniform", "seed": 1001, "min": 0, "max": 32767 }, "cos": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1002, "scale": 0.1, "offset": 0.9 }, "sin": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1003, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 16, 512, 128], "dtype": "float32" } }, "bench": { "primary": false, "metrics": [{ "type": "bandwidth", "value": "args.elems * 4 * 2 + args.rotPairs * 4 * 2" }] } }, { "name": "qwen3-vl-2b-decode-k-h8-d128", "preset": "model", "attrs": { "mrope_layout": 1, "interleaved": 0, "mrope_section": [24, 20, 20], "rotary_embedding_dim": 0, "scale": 1 }, "vars": { "elems": 1024, "rotPairs": 512 }, "provenance": { "model": "Qwen/Qwen3-VL-2B-Instruct", "notes": "Same layer's key projection: 8 kv heads, so half the query work and the smallest dispatch M-RoPE sees in decode." }, "inputs": { "x": { "shape": [1, 8, 1, 128], "dtype": "float32", "dist": "normal", "seed": 1000, "scale": 0.2 }, "positionIds": { "shape": [3, 1, 1], "dtype": "uint32", "dist": "uniform", "seed": 1001, "min": 0, "max": 32767 }, "cos": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1002, "scale": 0.1, "offset": 0.9 }, "sin": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1003, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 8, 1, 128], "dtype": "float32" } }, "bench": { "primary": false, "metrics": [{ "type": "bandwidth", "value": "args.elems * 4 * 2 + args.rotPairs * 4 * 2" }] } }, { "name": "qwen2-5-vl-3b-prefill-t512-q-h16-d128", "preset": "model", "attrs": { "mrope_layout": 0, "interleaved": 0, "mrope_section": [16, 24, 24], "rotary_embedding_dim": 0, "scale": 1 }, "vars": { "elems": 1048576, "rotPairs": 524288 }, "provenance": { "model": "Qwen/Qwen2.5-VL-3B-Instruct", "notes": "Qwen2.5-VL sectioned M-RoPE, mrope_section [16, 24, 24]. The sectioned branch reads three contiguous chunks where the interleaved branch strides by 3, so the two layouts have different cache access patterns at the same shape." }, "inputs": { "x": { "shape": [1, 16, 512, 128], "dtype": "float32", "dist": "normal", "seed": 1000, "scale": 0.2 }, "positionIds": { "shape": [3, 1, 512], "dtype": "uint32", "dist": "uniform", "seed": 1001, "min": 0, "max": 32767 }, "cos": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1002, "scale": 0.1, "offset": 0.9 }, "sin": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1003, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 16, 512, 128], "dtype": "float32" } }, "bench": { "primary": false, "metrics": [{ "type": "bandwidth", "value": "args.elems * 4 * 2 + args.rotPairs * 4 * 2" }] } }, { "name": "qwen3-vl-2b-prefill-t512-q-h16-d128-f16", "preset": "model", "attrs": { "mrope_layout": 1, "interleaved": 0, "mrope_section": [24, 20, 20], "rotary_embedding_dim": 0, "scale": 1 }, "vars": { "elems": 1048576, "rotPairs": 524288 }, "provenance": { "model": "Qwen/Qwen3-VL-2B-Instruct", "notes": "f16 activations at the same Qwen3-VL prefill shape." }, "inputs": { "x": { "shape": [1, 16, 512, 128], "dtype": "float16", "dist": "normal", "seed": 1000, "scale": 0.2 }, "positionIds": { "shape": [3, 1, 512], "dtype": "uint32", "dist": "uniform", "seed": 1001, "min": 0, "max": 32767 }, "cos": { "shape": [32768, 64], "dtype": "float16", "dist": "uniform", "seed": 1002, "scale": 0.1, "offset": 0.9 }, "sin": { "shape": [32768, 64], "dtype": "float16", "dist": "uniform", "seed": 1003, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 16, 512, 128], "dtype": "float16" } }, "bench": { "primary": false, "metrics": [{ "type": "bandwidth", "value": "args.elems * 2 * 2 + args.rotPairs * 2 * 2" }] } }, { "name": "mrope-f32-stress-b4h32s2048d128", "preset": "stress", "attrs": { "mrope_layout": 1, "interleaved": 0, "mrope_section": [24, 20, 20], "rotary_embedding_dim": 0, "scale": 1 }, "vars": { "elems": 33554432, "rotPairs": 16777216 }, "inputs": { "x": { "shape": [4, 32, 2048, 128], "dtype": "float32", "dist": "normal", "seed": 1000, "scale": 0.2 }, "positionIds": { "shape": [3, 4, 2048], "dtype": "uint32", "dist": "uniform", "seed": 1001, "min": 0, "max": 32767 }, "cos": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1002, "scale": 0.1, "offset": 0.9 }, "sin": { "shape": [32768, 64], "dtype": "float32", "dist": "uniform", "seed": 1003, "scale": 0.1 } }, "outputs": { "y": { "shape": [4, 32, 2048, 128], "dtype": "float32" } }, "bench": { "primary": false, "metrics": [{ "type": "bandwidth", "value": "args.elems * 4 * 2 + args.rotPairs * 4 * 2" }] } } ] }