Xenova's picture
Xenova HF Staff
sync 2e7068faf55e
48001d3 verified
Raw
History Blame
8.92 kB
{
"op": "ai.onnx.GlobalAveragePool",
"cases": [
{
"name": "nchw_1x2048x7x7",
"preset": "smoke",
"inputs": { "x": { "dtype": "float32", "shape": [1, 2048, 7, 7] } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 2048, 1, 1] } }
},
{
"name": "nchw_16x512x64x64_wg_parallel",
"preset": "smoke",
"vars": { "batch": 16, "channels": 512, "spatial": 4096 },
"inputs": { "x": { "dtype": "float32", "shape": [16, 512, 64, 64], "dist": "normal", "seed": 201 } },
"outputs": { "y": { "dtype": "float32", "shape": [16, 512, 1, 1], "dist": "empty" } },
"bench": {
"primary": true,
"metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }]
}
},
{
"name": "nchw_f16_8x256x32x32_wg_parallel",
"preset": "smoke",
"vars": { "dtype": "float16", "batch": 8, "channels": 256, "spatial": 1024 },
"inputs": { "x": { "dtype": "float16", "shape": [8, 256, 32, 32], "dist": "normal", "seed": 203 } },
"outputs": { "y": { "dtype": "float16", "shape": [8, 256, 1, 1], "dist": "empty" } },
"bench": {
"metrics": [
{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * dtypeBytes(args.dtype)" }
]
}
},
{
"name": "nchw_1x2048x7x7_smallspatial_scalar",
"preset": "smoke",
"vars": { "batch": 1, "channels": 2048, "spatial": 49 },
"inputs": { "x": { "dtype": "float32", "shape": [1, 2048, 7, 7], "dist": "normal", "seed": 211 } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 2048, 1, 1], "dist": "empty" } },
"bench": {
"primary": true,
"metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }]
}
},
{
"name": "nchw_1x2048x8x8_spatial64_vec4_planeparallel",
"preset": "smoke",
"vars": { "batch": 1, "channels": 2048, "spatial": 64 },
"inputs": { "x": { "dtype": "float32", "shape": [1, 2048, 8, 8], "dist": "normal", "seed": 212 } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 2048, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "nchw_1x1024x65x65_planeparallel_scalar_unaligned",
"preset": "smoke",
"vars": { "batch": 1, "channels": 1024, "spatial": 4225 },
"inputs": { "x": { "dtype": "float32", "shape": [1, 1024, 65, 65], "dist": "normal", "seed": 213 } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 1024, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "nchw_1x1024x66x66_planeparallel_vec4_aligned",
"preset": "smoke",
"vars": { "batch": 1, "channels": 1024, "spatial": 4356 },
"inputs": { "x": { "dtype": "float32", "shape": [1, 1024, 66, 66], "dist": "normal", "seed": 214 } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 1024, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "nchw_1x8x256x256_lowoccupancy_8planes",
"preset": "smoke",
"vars": { "batch": 1, "channels": 8, "spatial": 65536 },
"inputs": { "x": { "dtype": "float32", "shape": [1, 8, 256, 256], "dist": "normal", "seed": 215 } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 8, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "f32_inner63_below_subgroup_gate_1x2048x7x9",
"preset": "edge",
"vars": { "batch": 1, "channels": 2048, "spatial": 63 },
"inputs": { "x": { "dtype": "float32", "shape": [1, 2048, 7, 9], "dist": "normal", "seed": 301 } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 2048, 1, 1], "dist": "empty" } },
"bench": {
"primary": true,
"metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }]
}
},
{
"name": "nchw_1x1024x14x14_portable_gate_window",
"provenance": {
"notes": "Spatial 196 sits in the window the portable plane-parallel gate excludes (65 with subgroups, 1024 without), so a subgroupless device falls back to the serial kernel here."
},
"preset": "smoke",
"vars": { "batch": 1, "channels": 1024, "spatial": 196 },
"inputs": { "x": { "dtype": "float32", "shape": [1, 1024, 14, 14], "dist": "normal", "seed": 216 } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 1024, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "nchw_1x512x28x28_portable_gate_window",
"provenance": { "notes": "Spatial 784, the upper half of the same excluded window." },
"preset": "smoke",
"vars": { "batch": 1, "channels": 512, "spatial": 784 },
"inputs": { "x": { "dtype": "float32", "shape": [1, 512, 28, 28], "dist": "normal", "seed": 217 } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 512, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "nchw_32x128x16x16_manyplanes_spatial256",
"preset": "smoke",
"provenance": {
"notes": "4096 planes of 256 elements: the serial kernel already has an invocation per plane, so this is the regime where the plane-parallel workgroup has the least to add. GlobalLpPool's same shape prefers the serial route."
},
"vars": { "batch": 32, "channels": 128, "spatial": 256 },
"inputs": { "x": { "dtype": "float32", "shape": [32, 128, 16, 16], "dist": "normal", "seed": 218 } },
"outputs": { "y": { "dtype": "float32", "shape": [32, 128, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "nchw_32x128x28x28_manyplanes_spatial784",
"preset": "smoke",
"provenance": {
"notes": "Separates the two candidate discriminators: 4096 planes (where the serial kernel is saturated) at 784 elements per plane (where the workgroup tree amortizes)."
},
"vars": { "batch": 32, "channels": 128, "spatial": 784 },
"inputs": { "x": { "dtype": "float32", "shape": [32, 128, 28, 28], "dist": "normal", "seed": 219 } },
"outputs": { "y": { "dtype": "float32", "shape": [32, 128, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "nchw_32x64x16x16_planes2048_spatial256",
"preset": "smoke",
"provenance": {
"notes": "Halves the plane count of the 4096-plane spatial-256 case: brackets where the serial kernel stops being saturated."
},
"vars": { "batch": 32, "channels": 64, "spatial": 256 },
"inputs": { "x": { "dtype": "float32", "shape": [32, 64, 16, 16], "dist": "normal", "seed": 220 } },
"outputs": { "y": { "dtype": "float32", "shape": [32, 64, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "nchw_32x128x16x32_manyplanes_spatial512",
"preset": "smoke",
"provenance": {
"notes": "Doubles the spatial extent of the 4096-plane spatial-256 case: brackets where the workgroup tree starts amortizing."
},
"vars": { "batch": 32, "channels": 128, "spatial": 512 },
"inputs": { "x": { "dtype": "float32", "shape": [32, 128, 16, 32], "dist": "normal", "seed": 221 } },
"outputs": { "y": { "dtype": "float32", "shape": [32, 128, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
},
{
"name": "nchw_1x65536x9x9_planes65536_spatial81",
"preset": "smoke",
"provenance": {
"notes": "65536 planes: four outputs per invocation still leaves 16384 invocations, which is the regime the vec4-output serial kernel is written for."
},
"vars": { "batch": 1, "channels": 65536, "spatial": 81 },
"inputs": { "x": { "dtype": "float32", "shape": [1, 65536, 9, 9], "dist": "normal", "seed": 222 } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 65536, 1, 1], "dist": "empty" } },
"bench": { "metrics": [{ "type": "bandwidth", "value": "args.batch * args.channels * args.spatial * 4" }] }
}
],
"tunableSpace": { "WORKGROUP_SIZE": [64, 128, 256] }
}