File size: 20,288 Bytes
bc30b10 5974e09 bc30b10 5974e09 bc30b10 5974e09 bc30b10 7e43ef2 5974e09 bc30b10 7e43ef2 bc30b10 | 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 | {
"tunableSpace": { "WORKGROUP_SIZE": [64, 128, 256] },
"cases": [
{
"name": "small",
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 32 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [16, 1, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.01, "cosStep": 0.02 }
},
"w": {
"dtype": "float32",
"shape": [1, 128, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.03, "cosStep": 0.04, "scale": 0.08 }
},
"r": {
"dtype": "float32",
"shape": [1, 128, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.06, "scale": 0.08 }
},
"b": { "dtype": "float32", "shape": [1, 256], "data": { "kind": "constant", "value": 0.0 } }
},
"outputs": {
"y": { "dtype": "float32", "shape": [16, 1, 1, 32] },
"y_h": { "dtype": "float32", "shape": [1, 1, 32] },
"y_c": { "dtype": "float32", "shape": [1, 1, 32] }
},
"bench": {
"metrics": [
{
"type": "gflops",
"value": "2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) * (dim(shapes.x, 2) + dim(shapes.r, 2))"
},
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "h256-in64-b8-seq32-vec4",
"preset": "smoke",
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 256 },
"vars": { "seq": 32, "batch": 8, "inputSize": 64, "hidden": 256 },
"inputs": {
"x": { "dtype": "float32", "shape": [32, 8, 64], "dist": "normal", "seed": 401, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [1, 1024, 64], "dist": "normal", "seed": 402, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [1, 1024, 256], "dist": "normal", "seed": 403, "scale": 0.02 },
"b": { "dtype": "float32", "shape": [1, 2048], "dist": "normal", "seed": 404, "scale": 0.05 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [32, 1, 8, 256] },
"y_h": { "dtype": "float32", "shape": [1, 8, 256] },
"y_c": { "dtype": "float32", "shape": [1, 8, 256] }
},
"bench": {
"primary": true,
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "h102-in80-b4-seq32-scalar",
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 102 },
"vars": { "seq": 32, "batch": 4, "inputSize": 80, "hidden": 102 },
"inputs": {
"x": { "dtype": "float32", "shape": [32, 4, 80], "dist": "normal", "seed": 411, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [1, 408, 80], "dist": "normal", "seed": 412, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [1, 408, 102], "dist": "normal", "seed": 413, "scale": 0.05 },
"b": { "dtype": "float32", "shape": [1, 816], "dist": "normal", "seed": 414, "scale": 0.05 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [32, 1, 4, 102] },
"y_h": { "dtype": "float32", "shape": [1, 4, 102] },
"y_c": { "dtype": "float32", "shape": [1, 4, 102] }
},
"bench": {
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "large-h512-in64-b2-seq4-vec4",
"preset": "model",
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 512 },
"vars": { "seq": 4, "batch": 2, "inputSize": 64, "hidden": 512 },
"inputs": {
"x": { "dtype": "float32", "shape": [4, 2, 64], "dist": "normal", "seed": 501, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [1, 2048, 64], "dist": "normal", "seed": 502, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [1, 2048, 512], "dist": "normal", "seed": 503, "scale": 0.02 },
"b": { "dtype": "float32", "shape": [1, 4096], "dist": "normal", "seed": 504, "scale": 0.05 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [4, 1, 2, 512] },
"y_h": { "dtype": "float32", "shape": [1, 2, 512] },
"y_c": { "dtype": "float32", "shape": [1, 2, 512] }
},
"bench": {
"primary": false,
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "decode-b1-h256-in256-seq64-single-workgroup-cliff",
"preset": "smoke",
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 256 },
"vars": { "seq": 64, "batch": 1, "inputSize": 256, "hidden": 256 },
"inputs": {
"x": { "dtype": "float32", "shape": [64, 1, 256], "dist": "normal", "seed": 601, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [1, 1024, 256], "dist": "normal", "seed": 602, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [1, 1024, 256], "dist": "normal", "seed": 603, "scale": 0.02 },
"b": { "dtype": "float32", "shape": [1, 2048], "dist": "normal", "seed": 604, "scale": 0.05 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [64, 1, 1, 256] },
"y_h": { "dtype": "float32", "shape": [1, 1, 256] },
"y_c": { "dtype": "float32", "shape": [1, 1, 256] }
},
"bench": {
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "decode-b8-h256-in256-seq64-control-occupancy",
"preset": "smoke",
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 256 },
"vars": { "seq": 64, "batch": 8, "inputSize": 256, "hidden": 256 },
"inputs": {
"x": { "dtype": "float32", "shape": [64, 8, 256], "dist": "normal", "seed": 611, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [1, 1024, 256], "dist": "normal", "seed": 612, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [1, 1024, 256], "dist": "normal", "seed": 613, "scale": 0.02 },
"b": { "dtype": "float32", "shape": [1, 2048], "dist": "normal", "seed": 614, "scale": 0.05 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [64, 1, 8, 256] },
"y_h": { "dtype": "float32", "shape": [1, 8, 256] },
"y_c": { "dtype": "float32", "shape": [1, 8, 256] }
},
"bench": {
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "alignment-cliff-h510-in65-b8-seq32-vec2-recur",
"preset": "smoke",
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 510 },
"vars": { "seq": 32, "batch": 8, "inputSize": 65, "hidden": 510 },
"inputs": {
"x": { "dtype": "float32", "shape": [32, 8, 65], "dist": "normal", "seed": 621, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [1, 2040, 65], "dist": "normal", "seed": 622, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [1, 2040, 510], "dist": "normal", "seed": 623, "scale": 0.02 },
"b": { "dtype": "float32", "shape": [1, 4080], "dist": "normal", "seed": 624, "scale": 0.05 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [32, 1, 8, 510] },
"y_h": { "dtype": "float32", "shape": [1, 8, 510] },
"y_c": { "dtype": "float32", "shape": [1, 8, 510] }
},
"bench": {
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "alignment-control-h512-in64-b8-seq32-vec4",
"preset": "smoke",
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 512 },
"vars": { "seq": 32, "batch": 8, "inputSize": 64, "hidden": 512 },
"inputs": {
"x": { "dtype": "float32", "shape": [32, 8, 64], "dist": "normal", "seed": 631, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [1, 2048, 64], "dist": "normal", "seed": 632, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [1, 2048, 512], "dist": "normal", "seed": 633, "scale": 0.02 },
"b": { "dtype": "float32", "shape": [1, 4096], "dist": "normal", "seed": 634, "scale": 0.05 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [32, 1, 8, 512] },
"y_h": { "dtype": "float32", "shape": [1, 8, 512] },
"y_c": { "dtype": "float32", "shape": [1, 8, 512] }
},
"bench": {
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "workgroup-storage-boundary-h2048-in128-b4-seq8",
"preset": "smoke",
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 2048 },
"vars": { "seq": 8, "batch": 4, "inputSize": 128, "hidden": 2048 },
"tunableSpace": { "RECURRENT_WORKGROUP_SIZE": [1, 2, 4, 8, 16, 32, 64] },
"inputs": {
"x": { "dtype": "float32", "shape": [8, 4, 128], "dist": "normal", "seed": 641, "scale": 0.2 },
"w": { "dtype": "float32", "shape": [1, 8192, 128], "dist": "normal", "seed": 642, "scale": 0.02 },
"r": { "dtype": "float32", "shape": [1, 8192, 2048], "dist": "normal", "seed": 643, "scale": 0.01 },
"b": { "dtype": "float32", "shape": [1, 16384], "dist": "normal", "seed": 644, "scale": 0.02 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [8, 1, 4, 2048] },
"y_h": { "dtype": "float32", "shape": [1, 4, 2048] },
"y_c": { "dtype": "float32", "shape": [1, 4, 2048] }
},
"bench": {
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "reverse-decode-b1-h80-in80-seq512-single-wg-general-scalar",
"preset": "stress",
"attrs": { "layout": 0, "direction": "reverse", "input_forget": 0, "hidden_size": 80 },
"vars": { "seq": 512, "batch": 1, "inputSize": 80, "hidden": 80 },
"inputs": {
"x": { "dtype": "float32", "shape": [512, 1, 80], "dist": "normal", "seed": 701, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [1, 320, 80], "dist": "normal", "seed": 702, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [1, 320, 80], "dist": "normal", "seed": 703, "scale": 0.03 },
"b": { "dtype": "float32", "shape": [1, 640], "dist": "normal", "seed": 704, "scale": 0.05 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [512, 1, 1, 80], "dist": "empty" },
"y_h": { "dtype": "float32", "shape": [1, 1, 80], "dist": "empty" },
"y_c": { "dtype": "float32", "shape": [1, 1, 80], "dist": "empty" }
},
"bench": {
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "bidirectional-b16-h80-in80-seq256-general-scalar-no-fastpath",
"preset": "stress",
"attrs": { "layout": 0, "direction": "bidirectional", "input_forget": 0, "hidden_size": 80 },
"vars": { "seq": 256, "batch": 16, "inputSize": 80, "hidden": 80 },
"inputs": {
"x": { "dtype": "float32", "shape": [256, 16, 80], "dist": "normal", "seed": 711, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [2, 320, 80], "dist": "normal", "seed": 712, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [2, 320, 80], "dist": "normal", "seed": 713, "scale": 0.03 },
"b": { "dtype": "float32", "shape": [2, 640], "dist": "normal", "seed": 714, "scale": 0.05 }
},
"outputs": {
"y": { "dtype": "float32", "shape": [256, 2, 16, 80], "dist": "empty" },
"y_h": { "dtype": "float32", "shape": [2, 16, 80], "dist": "empty" },
"y_c": { "dtype": "float32", "shape": [2, 16, 80], "dist": "empty" }
},
"bench": {
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 2 * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "sequence-lens-b8-h256-in256-seq64-general-path",
"preset": "stress",
"provenance": {
"source": "synthetic benchmark",
"notes": "All eight sequence_lens values equal the full 64-step length; measures LSTM performance, including cell state carry, when sequence_lens is supplied but doesn't actually shorten any sequence."
},
"attrs": { "layout": 0, "direction": "forward", "input_forget": 0, "hidden_size": 256 },
"vars": { "seq": 64, "batch": 8, "inputSize": 256, "hidden": 256 },
"inputs": {
"x": { "dtype": "float32", "shape": [64, 8, 256], "dist": "normal", "seed": 9161, "scale": 0.3 },
"w": { "dtype": "float32", "shape": [1, 1024, 256], "dist": "normal", "seed": 9162, "scale": 0.05 },
"r": { "dtype": "float32", "shape": [1, 1024, 256], "dist": "normal", "seed": 9163, "scale": 0.02 },
"b": { "dtype": "float32", "shape": [1, 2048], "dist": "normal", "seed": 9164, "scale": 0.05 },
"sequence_lens": {
"dtype": "int32",
"shape": [8],
"data": { "kind": "values", "values": [64, 64, 64, 64, 64, 64, 64, 64] }
}
},
"outputs": {
"y": { "dtype": "float32", "shape": [64, 1, 8, 256], "dist": "empty" },
"y_h": { "dtype": "float32", "shape": [1, 8, 256], "dist": "empty" },
"y_c": { "dtype": "float32", "shape": [1, 8, 256], "dist": "empty" }
},
"bench": {
"metrics": [
{ "type": "gflops", "value": "args.seq * args.batch * 8 * args.hidden * (args.inputSize + args.hidden)" },
{
"type": "bandwidth",
"name": "recurrent lower-bound BW",
"value": "4 * (numel(shapes.x) + numel(shapes.w) + 2 * dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.w, 0) * dim(shapes.w, 1) + max(dim(shapes.x, 0) - 1, 0) * numel(shapes.r) + 4 * numel(shapes.y))"
}
]
}
},
{
"name": "lstm-layout1-batch-major-h256-in256-b8-seq64",
"preset": "edge",
"attrs": { "layout": 1, "direction": "forward", "hidden_size": 256 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [8, 64, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.01, "cosStep": 0.02 }
},
"w": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.03, "cosStep": 0.04, "scale": 0.05 }
},
"r": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.06, "scale": 0.05 }
},
"b": { "dtype": "float32", "shape": [1, 2048], "data": { "kind": "constant", "value": 0.0 } }
},
"outputs": {
"y": { "dtype": "float32", "shape": [8, 64, 1, 256] },
"y_h": { "dtype": "float32", "shape": [8, 1, 256] },
"y_c": { "dtype": "float32", "shape": [8, 1, 256] }
},
"bench": { "metrics": [{ "type": "gflops", "value": "2 * 64 * 8 * 4 * 256 * (256 + 256)" }] }
},
{
"name": "lstm-layout0-time-major-h256-in256-b8-seq64-control",
"preset": "edge",
"attrs": { "layout": 0, "direction": "forward", "hidden_size": 256 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [64, 8, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.01, "cosStep": 0.02 }
},
"w": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.03, "cosStep": 0.04, "scale": 0.05 }
},
"r": {
"dtype": "float32",
"shape": [1, 1024, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.06, "scale": 0.05 }
},
"b": { "dtype": "float32", "shape": [1, 2048], "data": { "kind": "constant", "value": 0.0 } }
},
"outputs": {
"y": { "dtype": "float32", "shape": [64, 1, 8, 256] },
"y_h": { "dtype": "float32", "shape": [1, 8, 256] },
"y_c": { "dtype": "float32", "shape": [1, 8, 256] }
},
"bench": { "metrics": [{ "type": "gflops", "value": "2 * 64 * 8 * 4 * 256 * (256 + 256)" }] }
}
]
}
|