File size: 3,916 Bytes
e394010
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8f90598
 
 
 
e394010
 
 
 
 
 
 
 
8f90598
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e394010
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{
  "tunableSpace": { "WORKGROUP_SIZE": [64, 128, 256] },
  "cases": [
    {
      "name": "expand-f32-1m",
      "preset": "smoke",
      "vars": { "dtype": "float32", "count": 1048576 },
      "inputs": {
        "input": { "shape": [1, 1024], "dtype": "float32", "dist": "normal", "seed": 860, "scale": 1 },
        "shape": { "shape": [2], "dtype": "uint32", "data": { "kind": "values", "values": [1024, 1024] } }
      },
      "outputs": { "output": { "shape": [1024, 1024], "dtype": "float32" } },
      "bench": {
        "primary": true,
        "metrics": [{ "type": "bandwidth", "value": "args.count * dtypeBytes(args.dtype) * 2" }]
      }
    },
    {
      "name": "expand-u32-bool-like-1m",
      "preset": "edge",
      "vars": { "dtype": "uint32", "count": 1048576 },
      "inputs": {
        "input": { "shape": [1, 1024], "dtype": "uint32", "dist": "linearMod", "mod": 2 },
        "shape": { "shape": [2], "dtype": "uint32", "data": { "kind": "values", "values": [1024, 1024] } }
      },
      "outputs": { "output": { "shape": [1024, 1024], "dtype": "uint32" } },
      "bench": { "metrics": [{ "type": "bandwidth", "value": "args.count * dtypeBytes(args.dtype) * 2" }] }
    },
    {
      "name": "expand-f32-unaligned-row-1m",
      "provenance": {
        "notes": "A 1025-wide row: the output last extent is not a multiple of four, so one four-lane group per row crosses the row boundary. The vec4 arm resolves that group per lane and keeps the single-offset path for the rest, rather than sending the whole tensor to the scalar route."
      },
      "preset": "stress",
      "vars": { "dtype": "float32", "count": 1049600 },
      "inputs": {
        "input": { "shape": [1, 1025], "dtype": "float32", "dist": "normal", "seed": 42, "scale": 1 },
        "shape": { "shape": [2], "dtype": "uint32", "data": { "kind": "values", "values": [1024, 1025] } }
      },
      "outputs": { "output": { "shape": [1024, 1025], "dtype": "float32" } },
      "bench": { "metrics": [{ "type": "bandwidth", "value": "args.count * dtypeBytes(args.dtype) * 2" }] }
    },
    {
      "name": "expand-f32-mask-8x1x1x197-to-8x8x197x197-vit-pathology",
      "preset": "stress",
      "provenance": {
        "notes": "Key-mask broadcast [B,1,1,S] -> [B,H,S,S] at ViT-B/16 token count: broadcast_vec4 needs the output last extent % 4 == 0, and 197 fails it, so the 2.5M-element broadcast runs the scalar broadcast route. Control: expand-f32-mask-8x1x1x200-to-8x8x200x200-control."
      },
      "vars": { "dtype": "float32" },
      "inputs": {
        "input": { "shape": [8, 1, 1, 197], "dtype": "float32", "dist": "normal", "seed": 43, "scale": 1 },
        "shape": { "shape": [4], "dtype": "uint32", "data": { "kind": "values", "values": [8, 8, 197, 197] } }
      },
      "outputs": { "output": { "shape": [8, 8, 197, 197], "dtype": "float32", "dist": "empty" } },
      "bench": {
        "metrics": [
          { "type": "bandwidth", "value": "(numel(shapes.input) + numel(shapes.output)) * dtypeBytes(args.dtype)" }
        ]
      }
    },
    {
      "name": "expand-f32-mask-8x1x1x200-to-8x8x200x200-control",
      "preset": "stress",
      "provenance": {
        "notes": "Nearest multiple-of-4 token count for expand-f32-mask-8x1x1x197-to-8x8x197x197-vit-pathology (3% more bytes) on the broadcast_vec4 route."
      },
      "vars": { "dtype": "float32" },
      "inputs": {
        "input": { "shape": [8, 1, 1, 200], "dtype": "float32", "dist": "normal", "seed": 44, "scale": 1 },
        "shape": { "shape": [4], "dtype": "uint32", "data": { "kind": "values", "values": [8, 8, 200, 200] } }
      },
      "outputs": { "output": { "shape": [8, 8, 200, 200], "dtype": "float32", "dist": "empty" } },
      "bench": {
        "metrics": [
          { "type": "bandwidth", "value": "(numel(shapes.input) + numel(shapes.output)) * dtypeBytes(args.dtype)" }
        ]
      }
    }
  ]
}