gemm.https.any.js (90553B)
1 // META: title=test WebNN API gemm operation 2 // META: global=window 3 // META: variant=?cpu 4 // META: variant=?gpu 5 // META: variant=?npu 6 // META: script=../resources/utils.js 7 // META: timeout=long 8 9 'use strict'; 10 11 // https://www.w3.org/TR/webnn/#api-mlgraphbuilder-gemm 12 // Calculate the general matrix multiplication of the Basic Linear Algebra 13 // Subprograms. The calculation follows the expression alpha * A * B + beta * C 14 // 15 // dictionary MLGemmOptions { 16 // MLOperand c; 17 // double alpha = 1.0; 18 // double beta = 1.0; 19 // boolean aTranspose = false; 20 // boolean bTranspose = false; 21 // }; 22 // 23 // MLOperand gemm( 24 // MLOperand a, MLOperand b, optional MLGemmOptions options = {}); 25 26 const gemmTests = [ 27 { 28 'name': 'gemm two float32 2D tensors (b is non-constant) default options', 29 'graph': { 30 'inputs': { 31 'inputA': { 32 'data': [ 33 82.98884582519531, 90.51641082763672, 59.638519287109375, 34 36.271873474121094, 18.9648494720459, 43.89479446411133, 35 98.89488220214844, 91.46013641357422, 50.51683807373047, 36 40.45679473876953, 50.76741409301758, 9.336554527282715 37 ], 38 'descriptor': {shape: [3, 4], dataType: 'float32'} 39 }, 40 'inputB': { 41 'data': [ 42 25.14739227294922, 66.6923828125, 63.29909896850586, 43 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 44 16.4991455078125, 3.036668062210083, 93.14022064208984, 45 70.08265686035156, 75.74880981445312, 96.60688018798828, 46 99.10041809082031, 23.2437744140625, 86.11856842041016, 47 42.90679168701172, 34.08055114746094, 87.37654876708984, 48 92.34209442138672, 60.32209014892578 49 ], 50 'descriptor': {shape: [4, 5], dataType: 'float32'} 51 } 52 }, 53 'operators': [{ 54 'name': 'gemm', 55 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}], 56 'outputs': 'gemmOutput' 57 }], 58 'expectedOutputs': { 59 'gemmOutput': { 60 'data': [ 61 8161.14697265625, 14025.82421875, 14607.5009765625, 62 14048.5322265625, 18757.09765625, 11892.5107421875, 63 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125, 64 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125, 65 10868.6025390625 66 ], 67 'descriptor': {shape: [3, 5], dataType: 'float32'} 68 } 69 } 70 } 71 }, 72 { 73 'name': 'gemm two float32 2D tensors default options', 74 'graph': { 75 'inputs': { 76 'inputA': { 77 'data': [ 78 82.98884582519531, 90.51641082763672, 59.638519287109375, 79 36.271873474121094, 18.9648494720459, 43.89479446411133, 80 98.89488220214844, 91.46013641357422, 50.51683807373047, 81 40.45679473876953, 50.76741409301758, 9.336554527282715 82 ], 83 'descriptor': {shape: [3, 4], dataType: 'float32'} 84 }, 85 'inputB': { 86 'data': [ 87 25.14739227294922, 66.6923828125, 63.29909896850586, 88 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 89 16.4991455078125, 3.036668062210083, 93.14022064208984, 90 70.08265686035156, 75.74880981445312, 96.60688018798828, 91 99.10041809082031, 23.2437744140625, 86.11856842041016, 92 42.90679168701172, 34.08055114746094, 87.37654876708984, 93 92.34209442138672, 60.32209014892578 94 ], 95 'descriptor': {shape: [4, 5], dataType: 'float32'}, 96 'constant': true 97 } 98 }, 99 'operators': [{ 100 'name': 'gemm', 101 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}], 102 'outputs': 'gemmOutput' 103 }], 104 'expectedOutputs': { 105 'gemmOutput': { 106 'data': [ 107 8161.14697265625, 14025.82421875, 14607.5009765625, 108 14048.5322265625, 18757.09765625, 11892.5107421875, 109 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125, 110 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125, 111 10868.6025390625 112 ], 113 'descriptor': {shape: [3, 5], dataType: 'float32'} 114 } 115 } 116 } 117 }, 118 { 119 'name': 'gemm two float32 2D constant tensors options.c', 120 'graph': { 121 'inputs': { 122 'inputA': { 123 'data': [ 124 82.98884582519531, 90.51641082763672, 59.638519287109375, 125 36.271873474121094, 18.9648494720459, 43.89479446411133, 126 98.89488220214844, 91.46013641357422, 50.51683807373047, 127 40.45679473876953, 50.76741409301758, 9.336554527282715 128 ], 129 'descriptor': {shape: [3, 4], dataType: 'float32'}, 130 'constant': true 131 }, 132 'inputB': { 133 'data': [ 134 25.14739227294922, 66.6923828125, 63.29909896850586, 135 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 136 16.4991455078125, 3.036668062210083, 93.14022064208984, 137 70.08265686035156, 75.74880981445312, 96.60688018798828, 138 99.10041809082031, 23.2437744140625, 86.11856842041016, 139 42.90679168701172, 34.08055114746094, 87.37654876708984, 140 92.34209442138672, 60.32209014892578 141 ], 142 'descriptor': {shape: [4, 5], dataType: 'float32'}, 143 'constant': true 144 }, 145 'inputC': { 146 'data': [ 147 82.77201843261719, 91.38520812988281, 12.651897430419922, 148 20.12200355529785, 68.51224517822266, 35.202415466308594, 149 13.33466625213623, 50.78546905517578, 88.61195373535156, 150 30.577470779418945, 69.47061920166016, 7.166217803955078, 151 28.337108612060547, 90.69412231445312, 71.23025512695312 152 ], 153 'descriptor': {shape: [3, 5], dataType: 'float32'}, 154 'constant': true 155 } 156 }, 157 'operators': [{ 158 'name': 'gemm', 159 'arguments': 160 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 161 'outputs': 'gemmOutput' 162 }], 163 'expectedOutputs': { 164 'gemmOutput': { 165 'data': [ 166 8243.9189453125, 14117.208984375, 14620.15234375, 14068.654296875, 167 18825.609375, 11927.712890625, 14673.310546875, 19176.533203125, 168 15122.8896484375, 18303.658203125, 5586.16064453125, 9266.43359375, 169 9195.7294921875, 6438.0244140625, 10939.8330078125 170 ], 171 'descriptor': {shape: [3, 5], dataType: 'float32'} 172 } 173 } 174 } 175 }, 176 { 177 'name': 'gemm two float32 2D tensors options.c', 178 'graph': { 179 'inputs': { 180 'inputA': { 181 'data': [ 182 82.98884582519531, 90.51641082763672, 59.638519287109375, 183 36.271873474121094, 18.9648494720459, 43.89479446411133, 184 98.89488220214844, 91.46013641357422, 50.51683807373047, 185 40.45679473876953, 50.76741409301758, 9.336554527282715 186 ], 187 'descriptor': {shape: [3, 4], dataType: 'float32'} 188 }, 189 'inputB': { 190 'data': [ 191 25.14739227294922, 66.6923828125, 63.29909896850586, 192 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 193 16.4991455078125, 3.036668062210083, 93.14022064208984, 194 70.08265686035156, 75.74880981445312, 96.60688018798828, 195 99.10041809082031, 23.2437744140625, 86.11856842041016, 196 42.90679168701172, 34.08055114746094, 87.37654876708984, 197 92.34209442138672, 60.32209014892578 198 ], 199 'descriptor': {shape: [4, 5], dataType: 'float32'}, 200 'constant': true 201 }, 202 'inputC': { 203 'data': [ 204 82.77201843261719, 91.38520812988281, 12.651897430419922, 205 20.12200355529785, 68.51224517822266, 35.202415466308594, 206 13.33466625213623, 50.78546905517578, 88.61195373535156, 207 30.577470779418945, 69.47061920166016, 7.166217803955078, 208 28.337108612060547, 90.69412231445312, 71.23025512695312 209 ], 210 'descriptor': {shape: [3, 5], dataType: 'float32'}, 211 'constant': true 212 } 213 }, 214 'operators': [{ 215 'name': 'gemm', 216 'arguments': 217 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 218 'outputs': 'gemmOutput' 219 }], 220 'expectedOutputs': { 221 'gemmOutput': { 222 'data': [ 223 8243.9189453125, 14117.208984375, 14620.15234375, 14068.654296875, 224 18825.609375, 11927.712890625, 14673.310546875, 19176.533203125, 225 15122.8896484375, 18303.658203125, 5586.16064453125, 9266.43359375, 226 9195.7294921875, 6438.0244140625, 10939.8330078125 227 ], 228 'descriptor': {shape: [3, 5], dataType: 'float32'} 229 } 230 } 231 } 232 }, 233 { 234 'name': 'gemm two float32 2D tensors broadcast options.c [1, 5] => [3, 5]', 235 'graph': { 236 'inputs': { 237 'inputA': { 238 'data': [ 239 82.98884582519531, 90.51641082763672, 59.638519287109375, 240 36.271873474121094, 18.9648494720459, 43.89479446411133, 241 98.89488220214844, 91.46013641357422, 50.51683807373047, 242 40.45679473876953, 50.76741409301758, 9.336554527282715 243 ], 244 'descriptor': {shape: [3, 4], dataType: 'float32'} 245 }, 246 'inputB': { 247 'data': [ 248 25.14739227294922, 66.6923828125, 63.29909896850586, 249 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 250 16.4991455078125, 3.036668062210083, 93.14022064208984, 251 70.08265686035156, 75.74880981445312, 96.60688018798828, 252 99.10041809082031, 23.2437744140625, 86.11856842041016, 253 42.90679168701172, 34.08055114746094, 87.37654876708984, 254 92.34209442138672, 60.32209014892578 255 ], 256 'descriptor': {shape: [4, 5], dataType: 'float32'}, 257 'constant': true 258 }, 259 'inputC': { 260 'data': [ 261 85.90813446044922, 39.3753547668457, 50.942604064941406, 262 31.87430763244629, 31.210525512695312 263 ], 264 'descriptor': {shape: [1, 5], dataType: 'float32'}, 265 'constant': true 266 } 267 }, 268 'operators': [{ 269 'name': 'gemm', 270 'arguments': 271 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 272 'outputs': 'gemmOutput' 273 }], 274 'expectedOutputs': { 275 'gemmOutput': { 276 'data': [ 277 8247.0546875, 14065.19921875, 14658.443359375, 14080.40625, 278 18788.30859375, 11978.4189453125, 14699.3505859375, 19176.689453125, 279 15066.1513671875, 18304.291015625, 5602.5986328125, 9298.642578125, 280 9218.3349609375, 6379.20458984375, 10899.8125 281 ], 282 'descriptor': {shape: [3, 5], dataType: 'float32'} 283 } 284 } 285 } 286 }, 287 { 288 'name': 'gemm two float32 2D tensors broadcast options.c [3, 1] => [3, 5]', 289 'graph': { 290 'inputs': { 291 'inputA': { 292 'data': [ 293 82.98884582519531, 90.51641082763672, 59.638519287109375, 294 36.271873474121094, 18.9648494720459, 43.89479446411133, 295 98.89488220214844, 91.46013641357422, 50.51683807373047, 296 40.45679473876953, 50.76741409301758, 9.336554527282715 297 ], 298 'descriptor': {shape: [3, 4], dataType: 'float32'} 299 }, 300 'inputB': { 301 'data': [ 302 25.14739227294922, 66.6923828125, 63.29909896850586, 303 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 304 16.4991455078125, 3.036668062210083, 93.14022064208984, 305 70.08265686035156, 75.74880981445312, 96.60688018798828, 306 99.10041809082031, 23.2437744140625, 86.11856842041016, 307 42.90679168701172, 34.08055114746094, 87.37654876708984, 308 92.34209442138672, 60.32209014892578 309 ], 310 'descriptor': {shape: [4, 5], dataType: 'float32'}, 311 'constant': true 312 }, 313 'inputC': { 314 'data': [6.20251989364624, 81.40641784667969, 73.00516510009766], 315 'descriptor': {shape: [3, 1], dataType: 'float32'}, 316 'constant': true 317 } 318 }, 319 'operators': [{ 320 'name': 'gemm', 321 'arguments': 322 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 323 'outputs': 'gemmOutput' 324 }], 325 'expectedOutputs': { 326 'gemmOutput': { 327 'data': [ 328 8167.349609375, 14032.0263671875, 14613.703125, 14054.734375, 329 18763.30078125, 11973.9169921875, 14741.3818359375, 19207.154296875, 330 15115.68359375, 18354.486328125, 5589.6953125, 9332.2724609375, 331 9240.3974609375, 6420.33544921875, 10941.607421875 332 ], 333 'descriptor': {shape: [3, 5], dataType: 'float32'} 334 } 335 } 336 } 337 }, 338 { 339 'name': 'gemm two float32 2D tensors broadcast options.c [1, 1] => [3, 5]', 340 'graph': { 341 'inputs': { 342 'inputA': { 343 'data': [ 344 82.98884582519531, 90.51641082763672, 59.638519287109375, 345 36.271873474121094, 18.9648494720459, 43.89479446411133, 346 98.89488220214844, 91.46013641357422, 50.51683807373047, 347 40.45679473876953, 50.76741409301758, 9.336554527282715 348 ], 349 'descriptor': {shape: [3, 4], dataType: 'float32'} 350 }, 351 'inputB': { 352 'data': [ 353 25.14739227294922, 66.6923828125, 63.29909896850586, 354 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 355 16.4991455078125, 3.036668062210083, 93.14022064208984, 356 70.08265686035156, 75.74880981445312, 96.60688018798828, 357 99.10041809082031, 23.2437744140625, 86.11856842041016, 358 42.90679168701172, 34.08055114746094, 87.37654876708984, 359 92.34209442138672, 60.32209014892578 360 ], 361 'descriptor': {shape: [4, 5], dataType: 'float32'}, 362 'constant': true 363 }, 364 'inputC': { 365 'data': [18.78192901611328], 366 'descriptor': {shape: [1, 1], dataType: 'float32'}, 367 'constant': true 368 } 369 }, 370 'operators': [{ 371 'name': 'gemm', 372 'arguments': 373 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 374 'outputs': 'gemmOutput' 375 }], 376 'expectedOutputs': { 377 'gemmOutput': { 378 'data': [ 379 8179.9287109375, 14044.6064453125, 14626.2822265625, 380 14067.314453125, 18775.87890625, 11911.29296875, 14678.7578125, 381 19144.529296875, 15053.0595703125, 18291.86328125, 5535.47216796875, 382 9278.048828125, 9186.173828125, 6366.1123046875, 10887.384765625 383 ], 384 'descriptor': {shape: [3, 5], dataType: 'float32'} 385 } 386 } 387 } 388 }, 389 { 390 'name': 'gemm two float32 2D tensors broadcast options.c [5] => [3, 5]', 391 'graph': { 392 'inputs': { 393 'inputA': { 394 'data': [ 395 82.98884582519531, 90.51641082763672, 59.638519287109375, 396 36.271873474121094, 18.9648494720459, 43.89479446411133, 397 98.89488220214844, 91.46013641357422, 50.51683807373047, 398 40.45679473876953, 50.76741409301758, 9.336554527282715 399 ], 400 'descriptor': {shape: [3, 4], dataType: 'float32'} 401 }, 402 'inputB': { 403 'data': [ 404 25.14739227294922, 66.6923828125, 63.29909896850586, 405 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 406 16.4991455078125, 3.036668062210083, 93.14022064208984, 407 70.08265686035156, 75.74880981445312, 96.60688018798828, 408 99.10041809082031, 23.2437744140625, 86.11856842041016, 409 42.90679168701172, 34.08055114746094, 87.37654876708984, 410 92.34209442138672, 60.32209014892578 411 ], 412 'descriptor': {shape: [4, 5], dataType: 'float32'}, 413 'constant': true 414 }, 415 'inputC': { 416 'data': [ 417 85.90813446044922, 39.3753547668457, 50.942604064941406, 418 31.87430763244629, 31.210525512695312 419 ], 420 'descriptor': {shape: [5], dataType: 'float32'}, 421 'constant': true 422 } 423 }, 424 'operators': [{ 425 'name': 'gemm', 426 'arguments': 427 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 428 'outputs': 'gemmOutput' 429 }], 430 'expectedOutputs': { 431 'gemmOutput': { 432 'data': [ 433 8247.0546875, 14065.19921875, 14658.443359375, 14080.40625, 434 18788.30859375, 11978.4189453125, 14699.3505859375, 19176.689453125, 435 15066.1513671875, 18304.291015625, 5602.5986328125, 9298.642578125, 436 9218.3349609375, 6379.20458984375, 10899.8125 437 ], 438 'descriptor': {shape: [3, 5], dataType: 'float32'} 439 } 440 } 441 } 442 }, 443 { 444 'name': 'gemm two float32 2D tensors broadcast options.c [1] => [3, 5]', 445 'graph': { 446 'inputs': { 447 'inputA': { 448 'data': [ 449 82.98884582519531, 90.51641082763672, 59.638519287109375, 450 36.271873474121094, 18.9648494720459, 43.89479446411133, 451 98.89488220214844, 91.46013641357422, 50.51683807373047, 452 40.45679473876953, 50.76741409301758, 9.336554527282715 453 ], 454 'descriptor': {shape: [3, 4], dataType: 'float32'} 455 }, 456 'inputB': { 457 'data': [ 458 25.14739227294922, 66.6923828125, 63.29909896850586, 459 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 460 16.4991455078125, 3.036668062210083, 93.14022064208984, 461 70.08265686035156, 75.74880981445312, 96.60688018798828, 462 99.10041809082031, 23.2437744140625, 86.11856842041016, 463 42.90679168701172, 34.08055114746094, 87.37654876708984, 464 92.34209442138672, 60.32209014892578 465 ], 466 'descriptor': {shape: [4, 5], dataType: 'float32'}, 467 'constant': true 468 }, 469 'inputC': { 470 'data': [18.78192901611328], 471 'descriptor': {shape: [1], dataType: 'float32'}, 472 'constant': true 473 } 474 }, 475 'operators': [{ 476 'name': 'gemm', 477 'arguments': 478 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 479 'outputs': 'gemmOutput' 480 }], 481 'expectedOutputs': { 482 'gemmOutput': { 483 'data': [ 484 8179.9287109375, 14044.6064453125, 14626.2822265625, 485 14067.314453125, 18775.87890625, 11911.29296875, 14678.7578125, 486 19144.529296875, 15053.0595703125, 18291.86328125, 5535.47216796875, 487 9278.048828125, 9186.173828125, 6366.1123046875, 10887.384765625 488 ], 489 'descriptor': {shape: [3, 5], dataType: 'float32'} 490 } 491 } 492 } 493 }, 494 { 495 'name': 'gemm two float32 2D tensors scalar options.c', 496 'graph': { 497 'inputs': { 498 'inputA': { 499 'data': [ 500 82.98884582519531, 90.51641082763672, 59.638519287109375, 501 36.271873474121094, 18.9648494720459, 43.89479446411133, 502 98.89488220214844, 91.46013641357422, 50.51683807373047, 503 40.45679473876953, 50.76741409301758, 9.336554527282715 504 ], 505 'descriptor': {shape: [3, 4], dataType: 'float32'} 506 }, 507 'inputB': { 508 'data': [ 509 25.14739227294922, 66.6923828125, 63.29909896850586, 510 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 511 16.4991455078125, 3.036668062210083, 93.14022064208984, 512 70.08265686035156, 75.74880981445312, 96.60688018798828, 513 99.10041809082031, 23.2437744140625, 86.11856842041016, 514 42.90679168701172, 34.08055114746094, 87.37654876708984, 515 92.34209442138672, 60.32209014892578 516 ], 517 'descriptor': {shape: [4, 5], dataType: 'float32'}, 518 'constant': true 519 }, 520 'inputC': { 521 'data': [18.78192901611328], 522 'descriptor': {shape: [], dataType: 'float32'}, 523 'constant': true 524 } 525 }, 526 'operators': [{ 527 'name': 'gemm', 528 'arguments': 529 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 530 'outputs': 'gemmOutput' 531 }], 532 'expectedOutputs': { 533 'gemmOutput': { 534 'data': [ 535 8179.9287109375, 14044.6064453125, 14626.2822265625, 536 14067.314453125, 18775.87890625, 11911.29296875, 14678.7578125, 537 19144.529296875, 15053.0595703125, 18291.86328125, 5535.47216796875, 538 9278.048828125, 9186.173828125, 6366.1123046875, 10887.384765625 539 ], 540 'descriptor': {shape: [3, 5], dataType: 'float32'} 541 } 542 } 543 } 544 }, 545 { 546 'name': 'gemm two float32 2D tensors options.alpha', 547 'graph': { 548 'inputs': { 549 'inputA': { 550 'data': [ 551 82.98884582519531, 90.51641082763672, 59.638519287109375, 552 36.271873474121094, 18.9648494720459, 43.89479446411133, 553 98.89488220214844, 91.46013641357422, 50.51683807373047, 554 40.45679473876953, 50.76741409301758, 9.336554527282715 555 ], 556 'descriptor': {shape: [3, 4], dataType: 'float32'} 557 }, 558 'inputB': { 559 'data': [ 560 25.14739227294922, 66.6923828125, 63.29909896850586, 561 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 562 16.4991455078125, 3.036668062210083, 93.14022064208984, 563 70.08265686035156, 75.74880981445312, 96.60688018798828, 564 99.10041809082031, 23.2437744140625, 86.11856842041016, 565 42.90679168701172, 34.08055114746094, 87.37654876708984, 566 92.34209442138672, 60.32209014892578 567 ], 568 'descriptor': {shape: [4, 5], dataType: 'float32'}, 569 'constant': true 570 } 571 }, 572 'operators': [{ 573 'name': 'gemm', 574 'arguments': [ 575 {'a': 'inputA'}, {'b': 'inputB'}, 576 {'options': {'alpha': 74.43204170482103}} 577 ], 578 'outputs': 'gemmOutput' 579 }], 580 'expectedOutputs': { 581 'gemmOutput': { 582 'data': [ 583 607450.875, 1043970.75, 1087266.125, 1045661, 1396129.125, 584 885183.875, 1091172, 1423568.5, 1119032, 1360102.75, 410618.53125, 585 689186.1875, 682347.75, 472444.78125, 808972.3125 586 ], 587 'descriptor': {shape: [3, 5], dataType: 'float32'} 588 } 589 } 590 } 591 }, 592 { 593 'name': 'gemm two float32 2D tensors options.beta', 594 'graph': { 595 'inputs': { 596 'inputA': { 597 'data': [ 598 82.98884582519531, 90.51641082763672, 59.638519287109375, 599 36.271873474121094, 18.9648494720459, 43.89479446411133, 600 98.89488220214844, 91.46013641357422, 50.51683807373047, 601 40.45679473876953, 50.76741409301758, 9.336554527282715 602 ], 603 'descriptor': {shape: [3, 4], dataType: 'float32'} 604 }, 605 'inputB': { 606 'data': [ 607 25.14739227294922, 66.6923828125, 63.29909896850586, 608 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 609 16.4991455078125, 3.036668062210083, 93.14022064208984, 610 70.08265686035156, 75.74880981445312, 96.60688018798828, 611 99.10041809082031, 23.2437744140625, 86.11856842041016, 612 42.90679168701172, 34.08055114746094, 87.37654876708984, 613 92.34209442138672, 60.32209014892578 614 ], 615 'descriptor': {shape: [4, 5], dataType: 'float32'}, 616 'constant': true 617 } 618 }, 619 'operators': [{ 620 'name': 'gemm', 621 'arguments': [ 622 {'a': 'inputA'}, {'b': 'inputB'}, 623 {'options': {'beta': 62.01828598608989}} 624 ], 625 'outputs': 'gemmOutput' 626 }], 627 'expectedOutputs': { 628 'gemmOutput': { 629 'data': [ 630 8161.14697265625, 14025.82421875, 14607.5009765625, 631 14048.5322265625, 18757.09765625, 11892.5107421875, 632 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125, 633 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125, 634 10868.6025390625 635 ], 636 'descriptor': {shape: [3, 5], dataType: 'float32'} 637 } 638 } 639 } 640 }, 641 { 642 'name': 'gemm two float32 2D tensors options.c and options.beta', 643 'graph': { 644 'inputs': { 645 'inputA': { 646 'data': [ 647 82.98884582519531, 90.51641082763672, 59.638519287109375, 648 36.271873474121094, 18.9648494720459, 43.89479446411133, 649 98.89488220214844, 91.46013641357422, 50.51683807373047, 650 40.45679473876953, 50.76741409301758, 9.336554527282715 651 ], 652 'descriptor': {shape: [3, 4], dataType: 'float32'} 653 }, 654 'inputB': { 655 'data': [ 656 25.14739227294922, 66.6923828125, 63.29909896850586, 657 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 658 16.4991455078125, 3.036668062210083, 93.14022064208984, 659 70.08265686035156, 75.74880981445312, 96.60688018798828, 660 99.10041809082031, 23.2437744140625, 86.11856842041016, 661 42.90679168701172, 34.08055114746094, 87.37654876708984, 662 92.34209442138672, 60.32209014892578 663 ], 664 'descriptor': {shape: [4, 5], dataType: 'float32'}, 665 'constant': true 666 }, 667 'inputC': { 668 'data': [ 669 82.77201843261719, 91.38520812988281, 12.651897430419922, 670 20.12200355529785, 68.51224517822266, 35.202415466308594, 671 13.33466625213623, 50.78546905517578, 88.61195373535156, 672 30.577470779418945, 69.47061920166016, 7.166217803955078, 673 28.337108612060547, 90.69412231445312, 71.23025512695312 674 ], 675 'descriptor': {shape: [3, 5], dataType: 'float32'}, 676 'constant': true 677 } 678 }, 679 'operators': [{ 680 'name': 'gemm', 681 'arguments': [ 682 {'a': 'inputA'}, {'b': 'inputB'}, 683 {'options': {'c': 'inputC', 'beta': 62.01828598608989}} 684 ], 685 'outputs': 'gemmOutput' 686 }], 687 'expectedOutputs': { 688 'gemmOutput': { 689 'data': [ 690 13294.525390625, 19693.37890625, 15392.1494140625, 15296.4638671875, 691 23006.109375, 14075.7041015625, 15486.96875, 22275.375, 692 20529.83984375, 20169.443359375, 9825.138671875, 9703.7041015625, 693 10924.810546875, 11972.0244140625, 15286.1806640625 694 ], 695 'descriptor': {shape: [3, 5], dataType: 'float32'} 696 } 697 } 698 } 699 }, 700 { 701 'name': 'gemm two float32 2D tensors options.aTranspose being true', 702 'graph': { 703 'inputs': { 704 'inputA': { 705 'data': [ 706 82.98884582519531, 18.9648494720459, 50.51683807373047, 707 90.51641082763672, 43.89479446411133, 40.45679473876953, 708 59.638519287109375, 98.89488220214844, 50.76741409301758, 709 36.271873474121094, 91.46013641357422, 9.336554527282715 710 ], 711 'descriptor': {shape: [4, 3], dataType: 'float32'} 712 }, 713 'inputB': { 714 'data': [ 715 25.14739227294922, 66.6923828125, 63.29909896850586, 716 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 717 16.4991455078125, 3.036668062210083, 93.14022064208984, 718 70.08265686035156, 75.74880981445312, 96.60688018798828, 719 99.10041809082031, 23.2437744140625, 86.11856842041016, 720 42.90679168701172, 34.08055114746094, 87.37654876708984, 721 92.34209442138672, 60.32209014892578 722 ], 723 'descriptor': {shape: [4, 5], dataType: 'float32'}, 724 'constant': true 725 } 726 }, 727 'operators': [{ 728 'name': 'gemm', 729 'arguments': [ 730 {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'aTranspose': true}} 731 ], 732 'outputs': 'gemmOutput' 733 }], 734 'expectedOutputs': { 735 'gemmOutput': { 736 'data': [ 737 8161.14697265625, 14025.82421875, 14607.5009765625, 738 14048.5322265625, 18757.09765625, 11892.5107421875, 739 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125, 740 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125, 741 10868.6025390625 742 ], 743 'descriptor': {shape: [3, 5], dataType: 'float32'} 744 } 745 } 746 } 747 }, 748 { 749 'name': 750 'gemm two float32 2D tensors options.aTranspose being explicit false', 751 'graph': { 752 'inputs': { 753 'inputA': { 754 'data': [ 755 82.98884582519531, 90.51641082763672, 59.638519287109375, 756 36.271873474121094, 18.9648494720459, 43.89479446411133, 757 98.89488220214844, 91.46013641357422, 50.51683807373047, 758 40.45679473876953, 50.76741409301758, 9.336554527282715 759 ], 760 'descriptor': {shape: [3, 4], dataType: 'float32'} 761 }, 762 'inputB': { 763 'data': [ 764 25.14739227294922, 66.6923828125, 63.29909896850586, 765 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 766 16.4991455078125, 3.036668062210083, 93.14022064208984, 767 70.08265686035156, 75.74880981445312, 96.60688018798828, 768 99.10041809082031, 23.2437744140625, 86.11856842041016, 769 42.90679168701172, 34.08055114746094, 87.37654876708984, 770 92.34209442138672, 60.32209014892578 771 ], 772 'descriptor': {shape: [4, 5], dataType: 'float32'}, 773 'constant': true 774 } 775 }, 776 'operators': [{ 777 'name': 'gemm', 778 'arguments': [ 779 {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'aTranspose': false}} 780 ], 781 'outputs': 'gemmOutput' 782 }], 783 'expectedOutputs': { 784 'gemmOutput': { 785 'data': [ 786 8161.14697265625, 14025.82421875, 14607.5009765625, 787 14048.5322265625, 18757.09765625, 11892.5107421875, 788 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125, 789 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125, 790 10868.6025390625 791 ], 792 'descriptor': {shape: [3, 5], dataType: 'float32'} 793 } 794 } 795 } 796 }, 797 { 798 'name': 'gemm two float32 2D tensors options.bTranspose being true', 799 'graph': { 800 'inputs': { 801 'inputA': { 802 'data': [ 803 82.98884582519531, 90.51641082763672, 59.638519287109375, 804 36.271873474121094, 18.9648494720459, 43.89479446411133, 805 98.89488220214844, 91.46013641357422, 50.51683807373047, 806 40.45679473876953, 50.76741409301758, 9.336554527282715 807 ], 808 'descriptor': {shape: [3, 4], dataType: 'float32'} 809 }, 810 'inputB': { 811 'data': [ 812 25.14739227294922, 0.0037256532814353704, 75.74880981445312, 813 42.90679168701172, 66.6923828125, 16.4991455078125, 814 96.60688018798828, 34.08055114746094, 63.29909896850586, 815 3.036668062210083, 99.10041809082031, 87.37654876708984, 816 10.629964828491211, 93.14022064208984, 23.2437744140625, 817 92.34209442138672, 61.32737731933594, 70.08265686035156, 818 86.11856842041016, 60.32209014892578 819 ], 820 'descriptor': {shape: [5, 4], dataType: 'float32'}, 821 'constant': true 822 } 823 }, 824 'operators': [{ 825 'name': 'gemm', 826 'arguments': [ 827 {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'bTranspose': true}} 828 ], 829 'outputs': 'gemmOutput' 830 }], 831 'expectedOutputs': { 832 'gemmOutput': { 833 'data': [ 834 8161.14697265625, 14025.82421875, 14607.5009765625, 835 14048.5322265625, 18757.09765625, 11892.5107421875, 836 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125, 837 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125, 838 10868.6025390625 839 ], 840 'descriptor': {shape: [3, 5], dataType: 'float32'} 841 } 842 } 843 } 844 }, 845 { 846 'name': 847 'gemm two float32 2D tensors options.bTranspose being explicit false', 848 'graph': { 849 'inputs': { 850 'inputA': { 851 'data': [ 852 82.98884582519531, 90.51641082763672, 59.638519287109375, 853 36.271873474121094, 18.9648494720459, 43.89479446411133, 854 98.89488220214844, 91.46013641357422, 50.51683807373047, 855 40.45679473876953, 50.76741409301758, 9.336554527282715 856 ], 857 'descriptor': {shape: [3, 4], dataType: 'float32'} 858 }, 859 'inputB': { 860 'data': [ 861 25.14739227294922, 66.6923828125, 63.29909896850586, 862 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 863 16.4991455078125, 3.036668062210083, 93.14022064208984, 864 70.08265686035156, 75.74880981445312, 96.60688018798828, 865 99.10041809082031, 23.2437744140625, 86.11856842041016, 866 42.90679168701172, 34.08055114746094, 87.37654876708984, 867 92.34209442138672, 60.32209014892578 868 ], 869 'descriptor': {shape: [4, 5], dataType: 'float32'}, 870 'constant': true 871 } 872 }, 873 'operators': [{ 874 'name': 'gemm', 875 'arguments': [ 876 {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'bTranspose': false}} 877 ], 878 'outputs': 'gemmOutput' 879 }], 880 'expectedOutputs': { 881 'gemmOutput': { 882 'data': [ 883 8161.14697265625, 14025.82421875, 14607.5009765625, 884 14048.5322265625, 18757.09765625, 11892.5107421875, 885 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125, 886 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125, 887 10868.6025390625 888 ], 889 'descriptor': {shape: [3, 5], dataType: 'float32'} 890 } 891 } 892 } 893 }, 894 { 895 'name': 'gemm two float32 2D tensors all options', 896 'graph': { 897 'inputs': { 898 'inputA': { 899 'data': [ 900 82.98884582519531, 18.9648494720459, 50.51683807373047, 901 90.51641082763672, 43.89479446411133, 40.45679473876953, 902 59.638519287109375, 98.89488220214844, 50.76741409301758, 903 36.271873474121094, 91.46013641357422, 9.336554527282715 904 ], 905 'descriptor': {shape: [4, 3], dataType: 'float32'} 906 }, 907 'inputB': { 908 'data': [ 909 25.14739227294922, 0.0037256532814353704, 75.74880981445312, 910 42.90679168701172, 66.6923828125, 16.4991455078125, 911 96.60688018798828, 34.08055114746094, 63.29909896850586, 912 3.036668062210083, 99.10041809082031, 87.37654876708984, 913 10.629964828491211, 93.14022064208984, 23.2437744140625, 914 92.34209442138672, 61.32737731933594, 70.08265686035156, 915 86.11856842041016, 60.32209014892578 916 ], 917 'descriptor': {shape: [5, 4], dataType: 'float32'}, 918 'constant': true 919 }, 920 'inputC': { 921 'data': [ 922 82.77201843261719, 91.38520812988281, 12.651897430419922, 923 20.12200355529785, 68.51224517822266, 35.202415466308594, 924 13.33466625213623, 50.78546905517578, 88.61195373535156, 925 30.577470779418945, 69.47061920166016, 7.166217803955078, 926 28.337108612060547, 90.69412231445312, 71.23025512695312 927 ], 928 'descriptor': {shape: [3, 5], dataType: 'float32'}, 929 'constant': true 930 } 931 }, 932 'operators': [{ 933 'name': 'gemm', 934 'arguments': [ 935 {'a': 'inputA'}, {'b': 'inputB'}, { 936 'options': { 937 'c': 'inputC', 938 'alpha': 74.43204170482103, 939 'beta': 62.01828598608989, 940 'aTranspose': true, 941 'bTranspose': true 942 } 943 } 944 ], 945 'outputs': 'gemmOutput' 946 }], 947 'expectedOutputs': { 948 'gemmOutput': { 949 'data': [ 950 612584.25, 1049638.375, 1088050.75, 1046908.875, 1400378.125, 951 887367.0625, 1091999, 1426718.125, 1124527.625, 1361999.125, 414927, 952 689630.625, 684105.1875, 478069.46875, 813389.875 953 ], 954 'descriptor': {shape: [3, 5], dataType: 'float32'} 955 } 956 } 957 } 958 }, 959 { 960 'name': 'gemm both negative options.alpha and 1st float32 input tensor', 961 'graph': { 962 'inputs': { 963 'inputA': { 964 'data': [ 965 -87.94973754882812, -14.765121459960938, -80.86310577392578, 966 -59.27638244628906, -28.74825096130371, -9.038779258728027, 967 -76.046630859375, -83.94807434082031, -95.02689361572266, 968 -47.89733123779297, -69.0116195678711, -86.66899108886719 969 ], 970 'descriptor': {shape: [3, 4], dataType: 'float32'} 971 }, 972 'inputB': { 973 'data': [ 974 25.14739227294922, 66.6923828125, 63.29909896850586, 975 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 976 16.4991455078125, 3.036668062210083, 93.14022064208984, 977 70.08265686035156, 75.74880981445312, 96.60688018798828, 978 99.10041809082031, 23.2437744140625, 86.11856842041016, 979 42.90679168701172, 34.08055114746094, 87.37654876708984, 980 92.34209442138672, 60.32209014892578 981 ], 982 'descriptor': {shape: [4, 5], dataType: 'float32'}, 983 'constant': true 984 }, 985 'inputC': { 986 'data': [ 987 82.77201843261719, 91.38520812988281, 12.651897430419922, 988 20.12200355529785, 68.51224517822266, 35.202415466308594, 989 13.33466625213623, 50.78546905517578, 88.61195373535156, 990 30.577470779418945, 69.47061920166016, 7.166217803955078, 991 28.337108612060547, 90.69412231445312, 71.23025512695312 992 ], 993 'descriptor': {shape: [3, 5], dataType: 'float32'}, 994 'constant': true 995 } 996 }, 997 'operators': [{ 998 'name': 'gemm', 999 'arguments': [ 1000 {'a': 'inputA'}, {'b': 'inputB'}, 1001 {'options': {'c': 'inputC', 'alpha': -22.611149749186296}} 1002 ], 1003 'outputs': 'gemmOutput' 1004 }], 1005 'expectedOutputs': { 1006 'gemmOutput': { 1007 'data': [ 1008 246101.234375, 360542.34375, 425213.25, 218520.65625, 383734.40625, 1009 228076.8125, 277543.625, 378076, 241282.15625, 316800.71875, 1010 256391.5625, 378711.34375, 465195.8125, 341034.875, 460338.3125 1011 ], 1012 'descriptor': {shape: [3, 5], dataType: 'float32'} 1013 } 1014 } 1015 } 1016 }, 1017 { 1018 'name': 'gemm both negative options.alpha and 2nd float32 input tensor', 1019 'graph': { 1020 'inputs': { 1021 'inputA': { 1022 'data': [ 1023 82.98884582519531, 90.51641082763672, 59.638519287109375, 1024 36.271873474121094, 18.9648494720459, 43.89479446411133, 1025 98.89488220214844, 91.46013641357422, 50.51683807373047, 1026 40.45679473876953, 50.76741409301758, 9.336554527282715 1027 ], 1028 'descriptor': {shape: [3, 4], dataType: 'float32'} 1029 }, 1030 'inputB': { 1031 'data': [ 1032 -64.35197448730469, -87.64981079101562, -96.04495239257812, 1033 -31.07155990600586, -6.548067092895508, -64.64146423339844, 1034 -14.02061653137207, -88.93306732177734, -24.179410934448242, 1035 -97.31866455078125, -93.4608154296875, -39.490394592285156, 1036 -94.37982177734375, -75.83335876464844, -11.403324127197266, 1037 -26.2825927734375, -56.237979888916016, -46.47404861450195, 1038 -89.20684051513672, -53.495323181152344 1039 ], 1040 'descriptor': {shape: [4, 5], dataType: 'float32'}, 1041 'constant': true 1042 }, 1043 'inputC': { 1044 'data': [ 1045 82.77201843261719, 91.38520812988281, 12.651897430419922, 1046 20.12200355529785, 68.51224517822266, 35.202415466308594, 1047 13.33466625213623, 50.78546905517578, 88.61195373535156, 1048 30.577470779418945, 69.47061920166016, 7.166217803955078, 1049 28.337108612060547, 90.69412231445312, 71.23025512695312 1050 ], 1051 'descriptor': {shape: [3, 5], dataType: 'float32'}, 1052 'constant': true 1053 } 1054 }, 1055 'operators': [{ 1056 'name': 'gemm', 1057 'arguments': [ 1058 {'a': 'inputA'}, {'b': 'inputB'}, 1059 {'options': {'c': 'inputC', 'alpha': -22.611149749186296}} 1060 ], 1061 'outputs': 'gemmOutput' 1062 }], 1063 'expectedOutputs': { 1064 'gemmOutput': { 1065 'data': [ 1066 400725.03125, 292635.75, 527642.375, 283236.40625, 270787.40625, 1067 355130.96875, 256121.421875, 436658.0625, 391465.40625, 1068 235557.03125, 245540.5625, 170154.125, 309239.4375, 163583.015625, 1069 120958.7578125 1070 ], 1071 'descriptor': {shape: [3, 5], dataType: 'float32'} 1072 } 1073 } 1074 } 1075 }, 1076 { 1077 'name': 1078 'gemm both negative options.beta and 3rd float32 input tensor (options.c)', 1079 'graph': { 1080 'inputs': { 1081 'inputA': { 1082 'data': [ 1083 82.98884582519531, 90.51641082763672, 59.638519287109375, 1084 36.271873474121094, 18.9648494720459, 43.89479446411133, 1085 98.89488220214844, 91.46013641357422, 50.51683807373047, 1086 40.45679473876953, 50.76741409301758, 9.336554527282715 1087 ], 1088 'descriptor': {shape: [3, 4], dataType: 'float32'} 1089 }, 1090 'inputB': { 1091 'data': [ 1092 25.14739227294922, 66.6923828125, 63.29909896850586, 1093 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 1094 16.4991455078125, 3.036668062210083, 93.14022064208984, 1095 70.08265686035156, 75.74880981445312, 96.60688018798828, 1096 99.10041809082031, 23.2437744140625, 86.11856842041016, 1097 42.90679168701172, 34.08055114746094, 87.37654876708984, 1098 92.34209442138672, 60.32209014892578 1099 ], 1100 'descriptor': {shape: [4, 5], dataType: 'float32'}, 1101 'constant': true 1102 }, 1103 'inputC': { 1104 'data': [ 1105 -42.662681579589844, -93.6637954711914, -40.708492279052734, 1106 -45.060977935791016, -87.90338897705078, -71.1618881225586, 1107 -85.56422424316406, -10.049134254455566, -46.105403900146484, 1108 -66.76168060302734, -25.392492294311523, -65.62987518310547, 1109 -40.50155258178711, -81.5303955078125, -41.39629364013672 1110 ], 1111 'descriptor': {shape: [3, 5], dataType: 'float32'}, 1112 'constant': true 1113 } 1114 }, 1115 'operators': [{ 1116 'name': 'gemm', 1117 'arguments': [ 1118 {'a': 'inputA'}, {'b': 'inputB'}, 1119 {'options': {'c': 'inputC', 'beta': -11.68521964935509}} 1120 ], 1121 'outputs': 'gemmOutput' 1122 }], 1123 'expectedOutputs': { 1124 'gemmOutput': { 1125 'data': [ 1126 8659.669921875, 15120.3056640625, 15083.1884765625, 1127 14575.0791015625, 19784.267578125, 12724.052734375, 15659.8125, 1128 19243.173828125, 15573.029296875, 19053.205078125, 5813.4072265625, 1129 10026.1669921875, 9640.6611328125, 7300.03076171875, 1130 11352.3271484375 1131 ], 1132 'descriptor': {shape: [3, 5], dataType: 'float32'} 1133 } 1134 } 1135 } 1136 }, 1137 { 1138 'name': 'gemm both negative options.alpha and options.beta', 1139 'graph': { 1140 'inputs': { 1141 'inputA': { 1142 'data': [ 1143 82.98884582519531, 90.51641082763672, 59.638519287109375, 1144 36.271873474121094, 18.9648494720459, 43.89479446411133, 1145 98.89488220214844, 91.46013641357422, 50.51683807373047, 1146 40.45679473876953, 50.76741409301758, 9.336554527282715 1147 ], 1148 'descriptor': {shape: [3, 4], dataType: 'float32'} 1149 }, 1150 'inputB': { 1151 'data': [ 1152 25.14739227294922, 66.6923828125, 63.29909896850586, 1153 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 1154 16.4991455078125, 3.036668062210083, 93.14022064208984, 1155 70.08265686035156, 75.74880981445312, 96.60688018798828, 1156 99.10041809082031, 23.2437744140625, 86.11856842041016, 1157 42.90679168701172, 34.08055114746094, 87.37654876708984, 1158 92.34209442138672, 60.32209014892578 1159 ], 1160 'descriptor': {shape: [4, 5], dataType: 'float32'}, 1161 'constant': true 1162 }, 1163 'inputC': { 1164 'data': [ 1165 82.77201843261719, 91.38520812988281, 12.651897430419922, 1166 20.12200355529785, 68.51224517822266, 35.202415466308594, 1167 13.33466625213623, 50.78546905517578, 88.61195373535156, 1168 30.577470779418945, 69.47061920166016, 7.166217803955078, 1169 28.337108612060547, 90.69412231445312, 71.23025512695312 1170 ], 1171 'descriptor': {shape: [3, 5], dataType: 'float32'}, 1172 'constant': true 1173 } 1174 }, 1175 'operators': [{ 1176 'name': 'gemm', 1177 'arguments': [ 1178 {'a': 'inputA'}, {'b': 'inputB'}, { 1179 'options': { 1180 'c': 'inputC', 1181 'alpha': -22.611149749186296, 1182 'beta': -11.68521964935509 1183 } 1184 } 1185 ], 1186 'outputs': 'gemmOutput' 1187 }], 1188 'expectedOutputs': { 1189 'gemmOutput': { 1190 'data': [ 1191 -185500.109375, -318207.84375, -330440.21875, -317888.59375, 1192 -424920.125, -269314.6875, -331634.71875, -433048.5625, 1193 -340977.71875, -413532.65625, -125550.484375, -209446.40625, 1194 -207616.390625, -144580.21875, -246583.921875 1195 ], 1196 'descriptor': {shape: [3, 5], dataType: 'float32'} 1197 } 1198 } 1199 } 1200 }, 1201 { 1202 'name': 1203 'gemm both negative options.alpha and 3rd float32 input tensor (options.c)', 1204 'graph': { 1205 'inputs': { 1206 'inputA': { 1207 'data': [ 1208 82.98884582519531, 90.51641082763672, 59.638519287109375, 1209 36.271873474121094, 18.9648494720459, 43.89479446411133, 1210 98.89488220214844, 91.46013641357422, 50.51683807373047, 1211 40.45679473876953, 50.76741409301758, 9.336554527282715 1212 ], 1213 'descriptor': {shape: [3, 4], dataType: 'float32'} 1214 }, 1215 'inputB': { 1216 'data': [ 1217 25.14739227294922, 66.6923828125, 63.29909896850586, 1218 10.629964828491211, 61.32737731933594, 0.0037256532814353704, 1219 16.4991455078125, 3.036668062210083, 93.14022064208984, 1220 70.08265686035156, 75.74880981445312, 96.60688018798828, 1221 99.10041809082031, 23.2437744140625, 86.11856842041016, 1222 42.90679168701172, 34.08055114746094, 87.37654876708984, 1223 92.34209442138672, 60.32209014892578 1224 ], 1225 'descriptor': {shape: [4, 5], dataType: 'float32'}, 1226 'constant': true 1227 }, 1228 'inputC': { 1229 'data': [ 1230 -42.662681579589844, -93.6637954711914, -40.708492279052734, 1231 -45.060977935791016, -87.90338897705078, -71.1618881225586, 1232 -85.56422424316406, -10.049134254455566, -46.105403900146484, 1233 -66.76168060302734, -25.392492294311523, -65.62987518310547, 1234 -40.50155258178711, -81.5303955078125, -41.39629364013672 1235 ], 1236 'descriptor': {shape: [3, 5], dataType: 'float32'}, 1237 'constant': true 1238 } 1239 }, 1240 'operators': [{ 1241 'name': 'gemm', 1242 'arguments': [ 1243 {'a': 'inputA'}, {'b': 'inputB'}, 1244 {'options': {'c': 'inputC', 'alpha': -22.611149749186296}} 1245 ], 1246 'outputs': 'gemmOutput' 1247 }], 1248 'expectedOutputs': { 1249 'gemmOutput': { 1250 'data': [ 1251 -184575.5625, -317233.65625, -330333.09375, -317698.5, -424207.4375, 1252 -268974.5, -331564.4375, -432465.15625, -339988.375, -413242.09375, 1253 -124764.09375, -209428.296875, -207325.765625, -143601.96875, 1254 -245792.984375 1255 ], 1256 'descriptor': {shape: [3, 5], dataType: 'float32'} 1257 } 1258 } 1259 } 1260 }, 1261 1262 // float16 tests 1263 { 1264 'name': 'gemm two float16 2D tensors (b is non-constant) default options', 1265 'graph': { 1266 'inputs': { 1267 'inputA': { 1268 'data': [ 1269 0.654296875, 0.37451171875, 0.708984375, 0.7578125, 1270 0.07781982421875, 0.1444091796875, 0.214111328125, 0.73291015625, 1271 0.9384765625, 0.218505859375, 0.69140625, 0.85400390625 1272 ], 1273 'descriptor': {shape: [3, 4], dataType: 'float16'} 1274 }, 1275 'inputB': { 1276 'data': [ 1277 0.98974609375, 0.1365966796875, 0.442626953125, 0.501953125, 1278 0.3447265625, 0.208251953125, 0.64697265625, 0.88037109375, 1279 0.83203125, 0.826171875, 0.52978515625, 0.51904296875, 1280 0.57080078125, 0.74072265625, 0.8125, 0.6103515625, 1281 0.72509765625, 0.487548828125, 0.126220703125, 0.5703125 1282 ], 1283 'descriptor': {shape: [4, 5], dataType: 'float16'} 1284 } 1285 }, 1286 'operators': [{ 1287 'name': 'gemm', 1288 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}], 1289 'outputs': 'gemmOutput' 1290 }], 1291 'expectedOutputs': { 1292 'gemmOutput': { 1293 'data': [ 1294 1.5634765625, 1.2490234375, 1.3935546875, 1.2607421875, 1.54296875, 1295 0.66796875, 0.74658203125, 0.64111328125, 0.410400390625, 1296 0.73828125, 1.8623046875, 1.248046875, 1.4189453125, 1.2724609375, 1297 1.552734375 1298 ], 1299 'descriptor': {shape: [3, 5], dataType: 'float16'} 1300 } 1301 } 1302 } 1303 }, 1304 { 1305 'name': 'gemm two float16 2D tensors default options', 1306 'graph': { 1307 'inputs': { 1308 'inputA': { 1309 'data': [ 1310 0.074951171875, 0.03216552734375, 0.501953125, 0.650390625, 1311 0.447021484375, 0.6201171875, 0.027099609375, 0.72021484375, 1312 0.60009765625, 0.246826171875, 0.9169921875, 0.767578125 1313 ], 1314 'descriptor': {shape: [3, 4], dataType: 'float16'} 1315 }, 1316 'inputB': { 1317 'data': [ 1318 0.4384765625, 0.80517578125, 0.09515380859375, 0.2376708984375, 1319 0.84912109375, 0.79296875, 0.33154296875, 0.66455078125, 1320 0.46826171875, 0.55712890625, 0.587890625, 0.611328125, 1321 0.464111328125, 0.74267578125, 0.43505859375, 0.68310546875, 1322 0.309814453125, 0.5908203125, 0.088134765625, 0.07745361328125 1323 ], 1324 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1325 'constant': true 1326 } 1327 }, 1328 'operators': [{ 1329 'name': 'gemm', 1330 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}], 1331 'outputs': 'gemmOutput' 1332 }], 1333 'expectedOutputs': { 1334 'gemmOutput': { 1335 'data': [ 1336 0.7978515625, 0.57958984375, 0.6455078125, 0.462890625, 1337 0.350341796875, 1.1953125, 0.80517578125, 0.892578125, 1338 0.480224609375, 0.79248046875, 1.5224609375, 1.36328125, 1339 1.1005859375, 1.0068359375, 1.10546875 1340 ], 1341 'descriptor': {shape: [3, 5], dataType: 'float16'} 1342 } 1343 } 1344 } 1345 }, 1346 { 1347 'name': 'gemm two float16 2D constant tensors options.c', 1348 'graph': { 1349 'inputs': { 1350 'inputA': { 1351 'data': [ 1352 0.74365234375, 0.465576171875, 0.99755859375, 0.5576171875, 1353 0.3115234375, 0.47509765625, 0.468994140625, 0.340576171875, 1354 0.1337890625, 0.395263671875, 0.80224609375, 0.60986328125 1355 ], 1356 'descriptor': {shape: [3, 4], dataType: 'float16'}, 1357 'constant': true 1358 }, 1359 'inputB': { 1360 'data': [ 1361 0.46435546875, 0.31298828125, 0.2039794921875, 0.39697265625, 1362 0.76171875, 0.366455078125, 0.35595703125, 0.1937255859375, 1363 0.450927734375, 0.7958984375, 0.167724609375, 0.2998046875, 1364 0.54833984375, 0.72265625, 0.56640625, 0.93896484375, 1365 0.92333984375, 0.67138671875, 0.822265625, 0.55029296875 1366 ], 1367 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1368 'constant': true 1369 }, 1370 'inputC': { 1371 'data': [ 1372 0.00004869699478149414, 0.143798828125, 0.87158203125, 0.8759765625, 1373 0.87353515625, 0.9501953125, 0.87353515625, 0.1787109375, 1374 0.3935546875, 0.23583984375, 0.048431396484375, 0.157958984375, 1375 0.0894775390625, 0.19287109375, 0.4462890625 1376 ], 1377 'descriptor': {shape: [3, 5], dataType: 'float16'}, 1378 'constant': true 1379 } 1380 }, 1381 'operators': [{ 1382 'name': 'gemm', 1383 'arguments': 1384 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 1385 'outputs': 'gemmOutput' 1386 }], 1387 'expectedOutputs': { 1388 'gemmOutput': { 1389 'data': [ 1390 1.20703125, 1.3564453125, 2.03515625, 2.560546875, 2.681640625, 1391 1.6669921875, 1.595703125, 0.8203125, 1.3505859375, 1.3046875, 1392 0.96240234375, 1.14453125, 1.04296875, 1.505859375, 1.65234375 1393 ], 1394 'descriptor': {shape: [3, 5], dataType: 'float16'} 1395 } 1396 } 1397 } 1398 }, 1399 { 1400 'name': 'gemm two float16 2D tensors options.c', 1401 'graph': { 1402 'inputs': { 1403 'inputA': { 1404 'data': [ 1405 0.17431640625, 0.09527587890625, 0.83935546875, 0.2127685546875, 1406 0.1314697265625, 0.48095703125, 0.248779296875, 0.043670654296875, 1407 0.1619873046875, 0.9384765625, 0.12188720703125, 0.8056640625 1408 ], 1409 'descriptor': {shape: [3, 4], dataType: 'float16'} 1410 }, 1411 'inputB': { 1412 'data': [ 1413 0.1759033203125, 0.8759765625, 0.3544921875, 0.216796875, 1414 0.8408203125, 0.0220184326171875, 0.7646484375, 0.8779296875, 1415 0.2392578125, 0.38525390625, 0.0938720703125, 0.57958984375, 1416 0.4638671875, 0.6982421875, 0.7900390625, 0.77099609375, 1417 0.744140625, 0.25537109375, 0.97900390625, 0.890625 1418 ], 1419 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1420 'constant': true 1421 }, 1422 'inputC': { 1423 'data': [ 1424 0.947265625, 0.61767578125, 0.7177734375, 0.175537109375, 1425 0.468994140625, 0.378662109375, 0.646484375, 0.48583984375, 1426 0.9921875, 0.046356201171875, 0.200439453125, 0.69677734375, 1427 0.054534912109375, 0.732421875, 0.97216796875 1428 ], 1429 'descriptor': {shape: [3, 5], dataType: 'float16'}, 1430 'constant': true 1431 } 1432 }, 1433 'operators': [{ 1434 'name': 'gemm', 1435 'arguments': 1436 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 1437 'outputs': 'gemmOutput' 1438 }], 1439 'expectedOutputs': { 1440 'gemmOutput': { 1441 'data': [ 1442 1.22265625, 1.48828125, 1.306640625, 1.0302734375, 1.5048828125, 1443 0.469482421875, 1.3056640625, 1.0810546875, 1.3525390625, 1444 0.57763671875, 0.88232421875, 2.2265625, 1.1982421875, 1.8662109375, 1445 2.283203125 1446 ], 1447 'descriptor': {shape: [3, 5], dataType: 'float16'} 1448 } 1449 } 1450 } 1451 }, 1452 { 1453 'name': 'gemm two float16 2D tensors broadcast options.c [1, 5] => [3, 5]', 1454 'graph': { 1455 'inputs': { 1456 'inputA': { 1457 'data': [ 1458 0.98681640625, 0.7919921875, 0.31298828125, 0.0943603515625, 1459 0.6806640625, 0.7177734375, 0.4150390625, 0.1239013671875, 1460 0.744140625, 0.311279296875, 0.54345703125, 0.2401123046875 1461 ], 1462 'descriptor': {shape: [3, 4], dataType: 'float16'} 1463 }, 1464 'inputB': { 1465 'data': [ 1466 0.249267578125, 0.63623046875, 0.226806640625, 1467 0.802734375, 0.88525390625, 0.27880859375, 1468 0.9345703125, 0.2093505859375, 0.77294921875, 1469 0.86669921875, 0.284912109375, 0.274658203125, 1470 0.125244140625, 0.43408203125, 0.005023956298828125, 1471 0.276123046875, 0.583984375, 0.1583251953125, 1472 0.53662109375, 0.52490234375 1473 ], 1474 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1475 'constant': true 1476 }, 1477 'inputC': { 1478 'data': [ 1479 0.093994140625, 0.94384765625, 0.751953125, 0.01458740234375, 1480 0.822265625 1481 ], 1482 'descriptor': {shape: [1, 5], dataType: 'float16'}, 1483 'constant': true 1484 } 1485 }, 1486 'operators': [{ 1487 'name': 'gemm', 1488 'arguments': 1489 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 1490 'outputs': 'gemmOutput' 1491 }], 1492 'expectedOutputs': { 1493 'gemmOutput': { 1494 'data': [ 1495 0.67578125, 2.453125, 1.1953125, 1.60546875, 2.43359375, 1496 0.6162109375, 2.234375, 1.1279296875, 1.3623046875, 2.11328125, 1497 0.58740234375, 1.998046875, 1.091796875, 1.2177734375, 1.8798828125 1498 ], 1499 'descriptor': {shape: [3, 5], dataType: 'float16'} 1500 } 1501 } 1502 } 1503 }, 1504 { 1505 'name': 'gemm two float16 2D tensors broadcast options.c [3, 1] => [3, 5]', 1506 'graph': { 1507 'inputs': { 1508 'inputA': { 1509 'data': [ 1510 0.99755859375, 0.139892578125, 0.255126953125, 0.347900390625, 1511 0.81298828125, 0.271484375, 0.47607421875, 0.137939453125, 1512 0.8134765625, 0.42138671875, 0.14306640625, 0.595703125 1513 ], 1514 'descriptor': {shape: [3, 4], dataType: 'float16'} 1515 }, 1516 'inputB': { 1517 'data': [ 1518 0.82568359375, 0.8203125, 0.93017578125, 0.669921875, 1519 0.73486328125, 0.974609375, 0.4951171875, 0.95361328125, 1520 0.393798828125, 0.55419921875, 0.6474609375, 0.1678466796875, 1521 0.68798828125, 0.89990234375, 0.08148193359375, 0.67626953125, 1522 0.3095703125, 0.826171875, 0.025726318359375, 0.9970703125 1523 ], 1524 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1525 'constant': true 1526 }, 1527 'inputC': { 1528 'data': [0.424072265625, 0.19873046875, 0.69189453125], 1529 'descriptor': {shape: [3, 1], dataType: 'float16'}, 1530 'constant': true 1531 } 1532 }, 1533 'operators': [{ 1534 'name': 'gemm', 1535 'arguments': 1536 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 1537 'outputs': 'gemmOutput' 1538 }], 1539 'expectedOutputs': { 1540 'gemmOutput': { 1541 'data': [ 1542 1.7841796875, 1.4619140625, 1.9482421875, 1.3857421875, 1543 1.6025390625, 1.5361328125, 1.123046875, 1.6552734375, 1.2822265625, 1544 1.123046875, 2.26953125, 1.7763671875, 2.44140625, 1.546875, 1545 2.12890625 1546 ], 1547 'descriptor': {shape: [3, 5], dataType: 'float16'} 1548 } 1549 } 1550 } 1551 }, 1552 { 1553 'name': 'gemm two float16 2D tensors broadcast options.c [1, 1] => [3, 5]', 1554 'graph': { 1555 'inputs': { 1556 'inputA': { 1557 'data': [ 1558 0.68896484375, 0.26171875, 0.78662109375, 0.2275390625, 1559 0.77294921875, 0.97021484375, 0.1256103515625, 0.98486328125, 1560 0.59326171875, 0.328125, 0.6611328125, 0.339599609375 1561 ], 1562 'descriptor': {shape: [3, 4], dataType: 'float16'} 1563 }, 1564 'inputB': { 1565 'data': [ 1566 0.298583984375, 0.99267578125, 0.85546875, 0.94384765625, 1567 0.994140625, 0.05615234375, 0.16845703125, 0.6943359375, 1568 0.83203125, 0.06951904296875, 0.9658203125, 0.11956787109375, 1569 0.7548828125, 0.29638671875, 0.58203125, 0.02618408203125, 1570 0.55859375, 0.034912109375, 0.97802734375, 0.70263671875 1571 ], 1572 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1573 'constant': true 1574 }, 1575 'inputC': { 1576 'data': [0.425048828125], 1577 'descriptor': {shape: [1, 1], dataType: 'float16'}, 1578 'constant': true 1579 } 1580 }, 1581 'operators': [{ 1582 'name': 'gemm', 1583 'arguments': 1584 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 1585 'outputs': 'gemmOutput' 1586 }], 1587 'expectedOutputs': { 1588 'gemmOutput': { 1589 'data': [ 1590 1.4111328125, 1.3740234375, 1.7978515625, 1.7490234375, 1.74609375, 1591 0.857421875, 1.9208984375, 1.888671875, 2.962890625, 2.025390625, 1592 1.267578125, 1.337890625, 1.6708984375, 1.7861328125, 1.6611328125 1593 ], 1594 'descriptor': {shape: [3, 5], dataType: 'float16'} 1595 } 1596 } 1597 } 1598 }, 1599 { 1600 'name': 'gemm two float16 2D tensors broadcast options.c [5] => [3, 5]', 1601 'graph': { 1602 'inputs': { 1603 'inputA': { 1604 'data': [ 1605 0.0216827392578125, 0.85888671875, 0.48095703125, 0.487548828125, 1606 0.91064453125, 0.86328125, 0.8046875, 0.224853515625, 0.50341796875, 1607 0.5478515625, 0.67724609375, 0.66015625 1608 ], 1609 'descriptor': {shape: [3, 4], dataType: 'float16'} 1610 }, 1611 'inputB': { 1612 'data': [ 1613 0.83642578125, 0.473876953125, 0.363037109375, 0.5498046875, 1614 0.4609375, 0.281982421875, 0.421142578125, 0.2330322265625, 1615 0.80419921875, 0.1865234375, 0.383056640625, 0.2454833984375, 1616 0.038421630859375, 0.35302734375, 0.431640625, 0.82177734375, 1617 0.8759765625, 0.34716796875, 0.47119140625, 0.58154296875 1618 ], 1619 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1620 'constant': true 1621 }, 1622 'inputC': { 1623 'data': [ 1624 0.7314453125, 0.0292816162109375, 0.8896484375, 0.424072265625, 1625 0.09136962890625 1626 ], 1627 'descriptor': {shape: [5], dataType: 'float16'}, 1628 'constant': true 1629 } 1630 }, 1631 'operators': [{ 1632 'name': 'gemm', 1633 'arguments': 1634 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 1635 'outputs': 'gemmOutput' 1636 }], 1637 'expectedOutputs': { 1638 'gemmOutput': { 1639 'data': [ 1640 1.5771484375, 0.9462890625, 1.28515625, 1.5263671875, 0.7529296875, 1641 2.23046875, 1.21875, 1.5302734375, 2.009765625, 1.150390625, 1642 2.109375, 1.2431640625, 1.455078125, 1.69140625, 1.1015625 1643 ], 1644 'descriptor': {shape: [3, 5], dataType: 'float16'} 1645 } 1646 } 1647 } 1648 }, 1649 { 1650 'name': 'gemm two float16 2D tensors broadcast options.c [1] => [3, 5]', 1651 'graph': { 1652 'inputs': { 1653 'inputA': { 1654 'data': [ 1655 0.5712890625, 0.83447265625, 0.35693359375, 0.326904296875, 1656 0.1727294921875, 0.1966552734375, 0.9404296875, 0.724609375, 1657 0.630859375, 0.53759765625, 0.72021484375, 0.88525390625 1658 ], 1659 'descriptor': {shape: [3, 4], dataType: 'float16'} 1660 }, 1661 'inputB': { 1662 'data': [ 1663 0.91552734375, 0.85009765625, 0.2169189453125, 0.430908203125, 1664 0.30810546875, 0.88916015625, 0.9931640625, 0.705078125, 1665 0.55126953125, 0.91259765625, 0.92431640625, 0.148681640625, 1666 0.4306640625, 0.69921875, 0.24658203125, 0.19287109375, 1667 0.5263671875, 0.98095703125, 0.80322265625, 0.407958984375 1668 ], 1669 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1670 'constant': true 1671 }, 1672 'inputC': { 1673 'data': [0.755859375], 1674 'descriptor': {shape: [1], dataType: 'float16'}, 1675 'constant': true 1676 } 1677 }, 1678 'operators': [{ 1679 'name': 'gemm', 1680 'arguments': 1681 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 1682 'outputs': 'gemmOutput' 1683 }], 1684 'expectedOutputs': { 1685 'gemmOutput': { 1686 'data': [ 1687 2.4140625, 2.294921875, 1.9423828125, 1.974609375, 1.9150390625, 1688 2.09765625, 1.619140625, 2.046875, 2.177734375, 1.515625, 2.6484375, 1689 2.3984375, 2.451171875, 2.5390625, 1.9794921875 1690 ], 1691 'descriptor': {shape: [3, 5], dataType: 'float16'} 1692 } 1693 } 1694 } 1695 }, 1696 { 1697 'name': 'gemm two float16 2D tensors scalar options.c', 1698 'graph': { 1699 'inputs': { 1700 'inputA': { 1701 'data': [ 1702 0.966796875, 0.87353515625, 0.9384765625, 0.9091796875, 1703 0.81396484375, 0.73876953125, 0.1455078125, 0.08917236328125, 1704 0.7900390625, 0.271484375, 0.21240234375, 0.393310546875 1705 ], 1706 'descriptor': {shape: [3, 4], dataType: 'float16'} 1707 }, 1708 'inputB': { 1709 'data': [ 1710 0.52587890625, 0.219482421875, 0.666015625, 0.5078125, 1711 0.2279052734375, 0.12420654296875, 0.890625, 0.6884765625, 1712 0.779296875, 0.7548828125, 0.92578125, 0.669921875, 1713 0.60498046875, 0.1966552734375, 0.986328125, 0.533203125, 1714 0.62744140625, 0.732421875, 0.5947265625, 0.33837890625 1715 ], 1716 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1717 'constant': true 1718 }, 1719 'inputC': { 1720 'data': [0.95361328125], 1721 'descriptor': {shape: [], dataType: 'float16'}, 1722 'constant': true 1723 } 1724 }, 1725 'operators': [{ 1726 'name': 'gemm', 1727 'arguments': 1728 [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}], 1729 'outputs': 'gemmOutput' 1730 }], 1731 'expectedOutputs': { 1732 'gemmOutput': { 1733 'data': [ 1734 2.923828125, 3.142578125, 3.431640625, 2.849609375, 3.06640625, 1735 1.6552734375, 1.943359375, 2.158203125, 2.0234375, 1.8701171875, 1736 1.8095703125, 1.7578125, 2.083984375, 1.841796875, 1.681640625 1737 ], 1738 'descriptor': {shape: [3, 5], dataType: 'float16'} 1739 } 1740 } 1741 } 1742 }, 1743 { 1744 'name': 'gemm two float16 2D tensors options.alpha', 1745 'graph': { 1746 'inputs': { 1747 'inputA': { 1748 'data': [ 1749 0.455810546875, 0.89501953125, 0.1544189453125, 0.25244140625, 1750 0.359130859375, 0.61376953125, 0.2164306640625, 0.347412109375, 1751 0.90966796875, 0.91455078125, 0.59765625, 0.409912109375 1752 ], 1753 'descriptor': {shape: [3, 4], dataType: 'float16'} 1754 }, 1755 'inputB': { 1756 'data': [ 1757 0.084228515625, 0.6025390625, 0.370361328125, 0.474365234375, 1758 0.93115234375, 0.72998046875, 0.76806640625, 0.759765625, 1759 0.673828125, 0.480224609375, 0.12255859375, 0.71044921875, 1760 0.90478515625, 0.1796875, 0.55322265625, 0.0193939208984375, 1761 0.290771484375, 0.2197265625, 0.80859375, 0.102783203125 1762 ], 1763 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1764 'constant': true 1765 } 1766 }, 1767 'operators': [{ 1768 'name': 'gemm', 1769 'arguments': [ 1770 {'a': 'inputA'}, {'b': 'inputB'}, 1771 {'options': {'alpha': 74.43204170482103}} 1772 ], 1773 'outputs': 'gemmOutput' 1774 }], 1775 'expectedOutputs': { 1776 'gemmOutput': { 1777 'data': [ 1778 53.25, 85.25, 77.6875, 78.25, 71.875, 38.0625, 70.1875, 64.875, 1779 67.25, 58.40625, 61.4375, 133.5, 123.75, 110.625, 123.5 1780 ], 1781 'descriptor': {shape: [3, 5], dataType: 'float16'} 1782 } 1783 } 1784 } 1785 }, 1786 { 1787 'name': 'gemm two float16 2D tensors options.beta', 1788 'graph': { 1789 'inputs': { 1790 'inputA': { 1791 'data': [ 1792 0.371337890625, 0.97216796875, 0.51953125, 0.73974609375, 1793 0.5126953125, 0.0809326171875, 0.44482421875, 0.421875, 1794 0.2294921875, 0.609375, 0.441162109375, 0.748046875 1795 ], 1796 'descriptor': {shape: [3, 4], dataType: 'float16'} 1797 }, 1798 'inputB': { 1799 'data': [ 1800 0.3330078125, 0.7275390625, 0.229736328125, 0.122314453125, 1801 0.176025390625, 0.84033203125, 0.392578125, 0.85205078125, 1802 0.053955078125, 0.257080078125, 0.1416015625, 0.272705078125, 1803 0.7294921875, 0.55615234375, 0.71630859375, 0.560546875, 1804 0.6728515625, 0.5107421875, 0.36376953125, 0.92578125 1805 ], 1806 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1807 'constant': true 1808 } 1809 }, 1810 'operators': [{ 1811 'name': 'gemm', 1812 'arguments': [ 1813 {'a': 'inputA'}, {'b': 'inputB'}, 1814 {'options': {'beta': 62.01828598608989}} 1815 ], 1816 'outputs': 'gemmOutput' 1817 }], 1818 'expectedOutputs': { 1819 'gemmOutput': { 1820 'data': [ 1821 1.4287109375, 1.291015625, 1.6708984375, 0.65576171875, 1822 1.3720703125, 0.5380859375, 0.81005859375, 0.7265625, 1823 0.468017578125, 0.8203125, 1.0703125, 1.0302734375, 1.275390625, 1824 0.57861328125, 1.2060546875 1825 ], 1826 'descriptor': {shape: [3, 5], dataType: 'float16'} 1827 } 1828 } 1829 } 1830 }, 1831 { 1832 'name': 'gemm two float16 2D tensors options.c and options.beta', 1833 'graph': { 1834 'inputs': { 1835 'inputA': { 1836 'data': [ 1837 0.55615234375, 0.2451171875, 0.1129150390625, 0.6279296875, 1838 0.3349609375, 0.0188751220703125, 0.09759521484375, 0.73828125, 1839 0.67236328125, 0.4375, 0.271484375, 0.865234375 1840 ], 1841 'descriptor': {shape: [3, 4], dataType: 'float16'} 1842 }, 1843 'inputB': { 1844 'data': [ 1845 0.45361328125, 0.7060546875, 0.45751953125, 0.306640625, 1846 0.41552734375, 0.271484375, 0.28076171875, 0.376708984375, 1847 0.2457275390625, 0.283935546875, 0.72412109375, 0.52392578125, 1848 0.7265625, 0.50390625, 0.08197021484375, 0.33154296875, 1849 0.2176513671875, 0.1204833984375, 0.1644287109375, 0.2138671875 1850 ], 1851 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1852 'constant': true 1853 }, 1854 'inputC': { 1855 'data': [ 1856 0.736328125, 0.85791015625, 0.9248046875, 0.92236328125, 1857 0.9267578125, 0.377685546875, 0.319091796875, 0.2371826171875, 1858 0.79736328125, 0.074462890625, 0.6376953125, 0.413818359375, 1859 0.72265625, 0.90966796875, 0.767578125 1860 ], 1861 'descriptor': {shape: [3, 5], dataType: 'float16'}, 1862 'constant': true 1863 } 1864 }, 1865 'operators': [{ 1866 'name': 'gemm', 1867 'arguments': [ 1868 {'a': 'inputA'}, {'b': 'inputB'}, 1869 {'options': {'c': 'inputC', 'beta': 62.01828598608989}} 1870 ], 1871 'outputs': 'gemmOutput' 1872 }], 1873 'expectedOutputs': { 1874 'gemmOutput': { 1875 'data': [ 1876 46.28125, 53.875, 57.84375, 57.59375, 57.90625, 23.890625, 20.25, 1877 15.03125, 49.71875, 4.9296875, 40.46875, 26.59375, 45.59375, 57, 1878 48.21875 1879 ], 1880 'descriptor': {shape: [3, 5], dataType: 'float16'} 1881 } 1882 } 1883 } 1884 }, 1885 { 1886 'name': 'gemm two float16 2D tensors options.aTranspose being true', 1887 'graph': { 1888 'inputs': { 1889 'inputA': { 1890 'data': [ 1891 0.335693359375, 0.2005615234375, 0.2440185546875, 0.306396484375, 1892 0.85693359375, 0.327880859375, 0.1824951171875, 0.47900390625, 1893 0.6357421875, 0.15185546875, 0.8330078125, 0.55615234375 1894 ], 1895 'descriptor': {shape: [4, 3], dataType: 'float16'} 1896 }, 1897 'inputB': { 1898 'data': [ 1899 0.271240234375, 0.0931396484375, 0.84375, 1900 0.796875, 0.195556640625, 0.79150390625, 1901 0.59375, 0.8486328125, 0.01042938232421875, 1902 0.0809326171875, 0.90869140625, 0.36083984375, 1903 0.66748046875, 0.1376953125, 0.1590576171875, 1904 0.513671875, 0.810546875, 0.6669921875, 1905 0.39208984375, 0.97900390625 1906 ], 1907 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1908 'constant': true 1909 } 1910 }, 1911 'operators': [{ 1912 'name': 'gemm', 1913 'arguments': [ 1914 {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'aTranspose': true}} 1915 ], 1916 'outputs': 'gemmOutput' 1917 }], 1918 'expectedOutputs': { 1919 'gemmOutput': { 1920 'data': [ 1921 0.57763671875, 0.402099609375, 0.7666015625, 0.35546875, 1922 0.26806640625, 1.595703125, 1.3759765625, 1.771484375, 0.5615234375, 1923 1, 1.189453125, 0.8974609375, 1.279296875, 0.50341796875, 1924 0.7197265625 1925 ], 1926 'descriptor': {shape: [3, 5], dataType: 'float16'} 1927 } 1928 } 1929 } 1930 }, 1931 { 1932 'name': 1933 'gemm two float16 2D tensors options.aTranspose being explicit false', 1934 'graph': { 1935 'inputs': { 1936 'inputA': { 1937 'data': [ 1938 0.61572265625, 0.9892578125, 0.81591796875, 0.8583984375, 1939 0.47119140625, 0.56494140625, 0.91943359375, 0.174560546875, 1940 0.295654296875, 0.77783203125, 0.324951171875, 0.708984375 1941 ], 1942 'descriptor': {shape: [3, 4], dataType: 'float16'} 1943 }, 1944 'inputB': { 1945 'data': [ 1946 0.650390625, 0.10198974609375, 0.49365234375, 1947 0.322265625, 0.87060546875, 0.74072265625, 1948 0.7001953125, 0.7138671875, 0.826171875, 1949 0.42529296875, 0.57080078125, 0.54150390625, 1950 0.320556640625, 0.59130859375, 0.1961669921875, 1951 0.34228515625, 0.034515380859375, 0.669921875, 1952 0.356201171875, 0.358154296875 1953 ], 1954 'descriptor': {shape: [4, 5], dataType: 'float16'}, 1955 'constant': true 1956 } 1957 }, 1958 'operators': [{ 1959 'name': 'gemm', 1960 'arguments': [ 1961 {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'aTranspose': false}} 1962 ], 1963 'outputs': 'gemmOutput' 1964 }], 1965 'expectedOutputs': { 1966 'gemmOutput': { 1967 'data': [ 1968 1.892578125, 1.2265625, 1.8466796875, 1.8037109375, 1.423828125, 1969 1.3095703125, 0.94775390625, 1.0478515625, 1.224609375, 1970 0.8935546875, 1.1962890625, 0.775390625, 1.2802734375, 1.1826171875, 1971 0.90576171875 1972 ], 1973 'descriptor': {shape: [3, 5], dataType: 'float16'} 1974 } 1975 } 1976 } 1977 }, 1978 { 1979 'name': 'gemm two float16 2D tensors options.bTranspose being true', 1980 'graph': { 1981 'inputs': { 1982 'inputA': { 1983 'data': [ 1984 0.58251953125, 0.024688720703125, 0.144775390625, 0.41162109375, 1985 0.837890625, 0.5419921875, 0.75341796875, 0.435546875, 1986 0.207275390625, 0.0222930908203125, 0.8896484375, 0.2578125 1987 ], 1988 'descriptor': {shape: [3, 4], dataType: 'float16'} 1989 }, 1990 'inputB': { 1991 'data': [ 1992 0.2349853515625, 0.39794921875, 0.64990234375, 1993 0.62744140625, 0.4853515625, 0.397216796875, 1994 0.6787109375, 0.65283203125, 0.2154541015625, 1995 0.7177734375, 0.70166015625, 0.98193359375, 1996 0.6708984375, 0.26318359375, 0.5478515625, 1997 0.69873046875, 0.63623046875, 0.006359100341796875, 1998 0.1671142578125, 0.60791015625 1999 ], 2000 'descriptor': {shape: [5, 4], dataType: 'float16'}, 2001 'constant': true 2002 } 2003 }, 2004 'operators': [{ 2005 'name': 'gemm', 2006 'arguments': [ 2007 {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'bTranspose': true}} 2008 ], 2009 'outputs': 'gemmOutput' 2010 }], 2011 'expectedOutputs': { 2012 'gemmOutput': { 2013 'data': [ 2014 0.4990234375, 0.65966796875, 0.64892578125, 0.76416015625, 2015 0.64501953125, 1.17578125, 1.41796875, 1.525390625, 1.421875, 2016 0.92724609375, 0.79736328125, 0.88134765625, 0.93798828125, 0.8125, 2017 0.4375 2018 ], 2019 'descriptor': {shape: [3, 5], dataType: 'float16'} 2020 } 2021 } 2022 } 2023 }, 2024 { 2025 'name': 2026 'gemm two float16 2D tensors options.bTranspose being explicit false', 2027 'graph': { 2028 'inputs': { 2029 'inputA': { 2030 'data': [ 2031 0.84814453125, 0.66748046875, 0.424072265625, 0.7294921875, 2032 0.93798828125, 0.787109375, 0.485595703125, 0.341064453125, 2033 0.364501953125, 0.398681640625, 0.1600341796875, 0.98828125 2034 ], 2035 'descriptor': {shape: [3, 4], dataType: 'float16'} 2036 }, 2037 'inputB': { 2038 'data': [ 2039 0.1717529296875, 0.51953125, 0.40576171875, 2040 0.73388671875, 0.1510009765625, 0.572265625, 2041 0.890625, 0.69970703125, 0.58642578125, 2042 0.09619140625, 0.9990234375, 0.6572265625, 2043 0.035247802734375, 0.251708984375, 0.462158203125, 2044 0.177001953125, 0.027984619140625, 0.1444091796875, 2045 0.77099609375, 0.11273193359375 2046 ], 2047 'descriptor': {shape: [4, 5], dataType: 'float16'}, 2048 'constant': true 2049 } 2050 }, 2051 'operators': [{ 2052 'name': 'gemm', 2053 'arguments': [ 2054 {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'bTranspose': false}} 2055 ], 2056 'outputs': 'gemmOutput' 2057 }], 2058 'expectedOutputs': { 2059 'gemmOutput': { 2060 'data': [ 2061 1.080078125, 1.333984375, 0.931640625, 1.6826171875, 0.470458984375, 2062 1.1572265625, 1.5166015625, 0.99755859375, 1.53515625, 2063 0.480224609375, 0.62548828125, 0.67724609375, 0.5751953125, 2064 1.3037109375, 0.27880859375 2065 ], 2066 'descriptor': {shape: [3, 5], dataType: 'float16'} 2067 } 2068 } 2069 } 2070 }, 2071 { 2072 'name': 'gemm two float16 2D tensors all options', 2073 'graph': { 2074 'inputs': { 2075 'inputA': { 2076 'data': [ 2077 0.5048828125, 0.583984375, 0.11492919921875, 0.66845703125, 2078 0.5654296875, 0.470458984375, 0.76904296875, 0.03497314453125, 2079 0.76904296875, 0.413330078125, 0.300537109375, 0.73779296875 2080 ], 2081 'descriptor': {shape: [4, 3], dataType: 'float16'} 2082 }, 2083 'inputB': { 2084 'data': [ 2085 0.84814453125, 0.861328125, 0.9736328125, 0.7001953125, 2086 0.06622314453125, 0.79541015625, 0.5458984375, 0.712890625, 2087 0.58642578125, 0.219970703125, 0.92236328125, 0.09332275390625, 2088 0.1328125, 0.25439453125, 0.857421875, 0.794921875, 2089 0.60009765625, 0.422119140625, 0.5068359375, 0.1951904296875 2090 ], 2091 'descriptor': {shape: [5, 4], dataType: 'float16'}, 2092 'constant': true 2093 }, 2094 'inputC': { 2095 'data': [ 2096 0.79150390625, 0.434326171875, 0.432861328125, 0.85205078125, 2097 0.314453125, 0.07110595703125, 0.8798828125, 0.037017822265625, 2098 0.68798828125, 0.84765625, 0.859375, 0.285400390625, 0.63720703125, 2099 0.6015625, 0.96826171875 2100 ], 2101 'descriptor': {shape: [3, 5], dataType: 'float16'}, 2102 'constant': true 2103 } 2104 }, 2105 'operators': [{ 2106 'name': 'gemm', 2107 'arguments': [ 2108 {'a': 'inputA'}, {'b': 'inputB'}, { 2109 'options': { 2110 'c': 'inputC', 2111 'alpha': 74.43204170482103, 2112 'beta': 62.01828598608989, 2113 'aTranspose': true, 2114 'bTranspose': true 2115 } 2116 } 2117 ], 2118 'outputs': 'gemmOutput' 2119 }], 2120 'expectedOutputs': { 2121 'gemmOutput': { 2122 'data': [ 2123 201.125, 122.1875, 115.5, 144, 98.0625, 95.75, 108.3125, 41.53125, 2124 79.1875, 102.125, 184.875, 116.5, 110.1875, 140.125, 119.6875 2125 ], 2126 'descriptor': {shape: [3, 5], dataType: 'float16'} 2127 } 2128 } 2129 } 2130 }, 2131 { 2132 'name': 'gemm both negative options.alpha and 1st float16 input tensor', 2133 'graph': { 2134 'inputs': { 2135 'inputA': { 2136 'data': [ 2137 0.373779296875, 0.314208984375, 0.775390625, 0.712890625, 2138 0.1170654296875, 0.1820068359375, 0.81640625, 0.4609375, 2139 0.59912109375, 0.0888671875, 0.52734375, 0.65869140625 2140 ], 2141 'descriptor': {shape: [3, 4], dataType: 'float16'} 2142 }, 2143 'inputB': { 2144 'data': [ 2145 0.673828125, 0.45703125, 0.9619140625, 0.7275390625, 2146 0.9013671875, 0.837890625, 0.88330078125, 0.744140625, 2147 0.076171875, 0.283447265625, 0.59228515625, 0.47119140625, 2148 0.9794921875, 0.595703125, 0.578125, 0.71142578125, 2149 0.8974609375, 0.83447265625, 0.36962890625, 0.689453125 2150 ], 2151 'descriptor': {shape: [4, 5], dataType: 'float16'}, 2152 'constant': true 2153 }, 2154 'inputC': { 2155 'data': [ 2156 0.367431640625, 0.8427734375, 0.0340576171875, 0.7353515625, 2157 0.048309326171875, 0.9326171875, 0.623046875, 0.93017578125, 2158 0.049896240234375, 0.9501953125, 0.53369140625, 0.12109375, 2159 0.154296875, 0.9443359375, 0.293212890625 2160 ], 2161 'descriptor': {shape: [3, 5], dataType: 'float16'}, 2162 'constant': true 2163 } 2164 }, 2165 'operators': [{ 2166 'name': 'gemm', 2167 'arguments': [ 2168 {'a': 'inputA'}, {'b': 'inputB'}, 2169 {'options': {'c': 'inputC', 'alpha': -22.611149749186296}} 2170 ], 2171 'outputs': 'gemmOutput' 2172 }], 2173 'expectedOutputs': { 2174 'gemmOutput': { 2175 'data': [ 2176 -33.125, -32.03125, -44, -22.359375, -30.828125, -22.640625, 2177 -22.28125, -31.453125, -17.03125, -20.453125, -27.9375, -26.828125, 2178 -38.46875, -21.671875, -29.65625 2179 ], 2180 'descriptor': {shape: [3, 5], dataType: 'float16'} 2181 } 2182 } 2183 } 2184 }, 2185 { 2186 'name': 'gemm both negative options.alpha and 2nd float16 input tensor', 2187 'graph': { 2188 'inputs': { 2189 'inputA': { 2190 'data': [ 2191 0.7666015625, 0.97216796875, 0.0718994140625, 0.2430419921875, 2192 0.0016126632690429688, 0.544921875, 0.32177734375, 0.5556640625, 2193 0.4990234375, 0.384765625, 0.51171875, 0.18212890625 2194 ], 2195 'descriptor': {shape: [3, 4], dataType: 'float16'} 2196 }, 2197 'inputB': { 2198 'data': [ 2199 0.265625, 0.7099609375, 0.7265625, 2200 0.57080078125, 0.8330078125, 0.1624755859375, 2201 0.28759765625, 0.6552734375, 0.97509765625, 2202 0.42822265625, 0.016632080078125, 0.13818359375, 2203 0.1358642578125, 0.525390625, 0.384765625, 2204 0.17626953125, 0.10430908203125, 0.7548828125, 2205 0.8330078125, 0.2169189453125 2206 ], 2207 'descriptor': {shape: [4, 5], dataType: 'float16'}, 2208 'constant': true 2209 }, 2210 'inputC': { 2211 'data': [ 2212 0.285888671875, 0.1680908203125, 0.93798828125, 0.357177734375, 2213 0.07672119140625, 0.38671875, 0.5224609375, 0.83837890625, 2214 0.051422119140625, 0.173095703125, 0.00557708740234375, 2215 0.323486328125, 0.2587890625, 0.30322265625, 0.5576171875 2216 ], 2217 'descriptor': {shape: [3, 5], dataType: 'float16'}, 2218 'constant': true 2219 } 2220 }, 2221 'operators': [{ 2222 'name': 'gemm', 2223 'arguments': [ 2224 {'a': 'inputA'}, {'b': 'inputB'}, 2225 {'options': {'c': 'inputC', 'alpha': -22.611149749186296}} 2226 ], 2227 'outputs': 'gemmOutput' 2228 }], 2229 'expectedOutputs': { 2230 'gemmOutput': { 2231 'data': [ 2232 -8.8828125, -19.265625, -30.421875, -36.40625, -25.59375, 2233 -3.9609375, -5.36328125, -17.734375, -26.265625, -10.65625, 2234 -5.32421875, -12.21875, -18.328125, -24.125, -17.90625 2235 ], 2236 'descriptor': {shape: [3, 5], dataType: 'float16'} 2237 } 2238 } 2239 } 2240 }, 2241 { 2242 'name': 2243 'gemm both negative options.beta and 3rd float16 input tensor (options.c)', 2244 'graph': { 2245 'inputs': { 2246 'inputA': { 2247 'data': [ 2248 0.85400390625, 0.70458984375, 0.76416015625, 0.982421875, 2249 0.470458984375, 0.310546875, 0.68408203125, 0.83935546875, 2250 0.52294921875, 0.5234375, 0.79736328125, 0.10626220703125 2251 ], 2252 'descriptor': {shape: [3, 4], dataType: 'float16'} 2253 }, 2254 'inputB': { 2255 'data': [ 2256 0.955078125, 0.25537109375, 0.68505859375, 0.29296875, 2257 0.36962890625, 0.479248046875, 0.599609375, 0.16455078125, 2258 0.59375, 0.759765625, 0.325927734375, 0.9853515625, 2259 0.348388671875, 0.428466796875, 0.1644287109375, 0.371337890625, 2260 0.343505859375, 0.434814453125, 0.0859375, 0.148193359375 2261 ], 2262 'descriptor': {shape: [4, 5], dataType: 'float16'}, 2263 'constant': true 2264 }, 2265 'inputC': { 2266 'data': [ 2267 0.09210205078125, 0.869140625, 0.186279296875, 0.9111328125, 2268 0.80224609375, 0.70703125, 0.51904296875, 0.78466796875, 2269 0.43310546875, 0.884765625, 0.452880859375, 0.052764892578125, 2270 0.83740234375, 0.8994140625, 0.68896484375 2271 ], 2272 'descriptor': {shape: [3, 5], dataType: 'float16'}, 2273 'constant': true 2274 } 2275 }, 2276 'operators': [{ 2277 'name': 'gemm', 2278 'arguments': [ 2279 {'a': 'inputA'}, {'b': 'inputB'}, 2280 {'options': {'c': 'inputC', 'beta': -11.68521964935509}} 2281 ], 2282 'outputs': 'gemmOutput' 2283 }], 2284 'expectedOutputs': { 2285 'gemmOutput': { 2286 'data': [ 2287 0.69091796875, -8.421875, -0.7822265625, -9.5625, -8.25, 2288 -7.12890625, -4.796875, -8.1953125, -4.375, -9.6953125, -4.2421875, 2289 0.65283203125, -9.015625, -9.6953125, -7.3125 2290 ], 2291 'descriptor': {shape: [3, 5], dataType: 'float16'} 2292 } 2293 } 2294 } 2295 }, 2296 { 2297 'name': 2298 'gemm float16 input tensors with both negative options.alpha and options.beta', 2299 'graph': { 2300 'inputs': { 2301 'inputA': { 2302 'data': [ 2303 0.623046875, 0.5673828125, 0.568359375, 0.218017578125, 2304 0.29833984375, 0.425048828125, 0.59228515625, 0.09576416015625, 2305 0.14306640625, 0.66259765625, 0.34521484375, 0.505859375 2306 ], 2307 'descriptor': {shape: [3, 4], dataType: 'float16'} 2308 }, 2309 'inputB': { 2310 'data': [ 2311 0.65673828125, 0.182373046875, 0.61328125, 0.17578125, 2312 0.8076171875, 0.46923828125, 0.5927734375, 0.09747314453125, 2313 0.7041015625, 0.209228515625, 0.955078125, 0.716796875, 2314 0.955078125, 0.61669921875, 0.45556640625, 0.76611328125, 2315 0.69970703125, 0.58154296875, 0.492919921875, 0.6513671875 2316 ], 2317 'descriptor': {shape: [4, 5], dataType: 'float16'}, 2318 'constant': true 2319 }, 2320 'inputC': { 2321 'data': [ 2322 0.40087890625, 0.72509765625, 0.35595703125, 0.0589599609375, 2323 0.1856689453125, 0.923828125, 0.0650634765625, 0.169677734375, 2324 0.93603515625, 0.0208892822265625, 0.281005859375, 0.8193359375, 2325 0.256591796875, 0.043365478515625, 0.222900390625 2326 ], 2327 'descriptor': {shape: [3, 5], dataType: 'float16'}, 2328 'constant': true 2329 } 2330 }, 2331 'operators': [{ 2332 'name': 'gemm', 2333 'arguments': [ 2334 {'a': 'inputA'}, {'b': 'inputB'}, { 2335 'options': { 2336 'c': 'inputC', 2337 'alpha': -22.611149749186296, 2338 'beta': -11.68521964935509 2339 } 2340 } 2341 ], 2342 'outputs': 'gemmOutput' 2343 }], 2344 'expectedOutputs': { 2345 'gemmOutput': { 2346 'data': [ 2347 -36, -31.3125, -29.1875, -22.546875, -25.296875, -34.1875, 2348 -18.796875, -21.109375, -28.21875, -15.2109375, -28.65625, 2349 -32.65625, -20.546875, -22.078125, -19.359375 2350 ], 2351 'descriptor': {shape: [3, 5], dataType: 'float16'} 2352 } 2353 } 2354 } 2355 }, 2356 { 2357 'name': 2358 'gemm both negative options.alpha and 3rd float16 input tensor (options.c)', 2359 'graph': { 2360 'inputs': { 2361 'inputA': { 2362 'data': [ 2363 0.95068359375, 0.211669921875, 0.203857421875, 0.198486328125, 2364 0.9140625, 0.68994140625, 0.9951171875, 0.3525390625, 2365 0.029266357421875, 0.128662109375, 0.1787109375, 0.91357421875 2366 ], 2367 'descriptor': {shape: [3, 4], dataType: 'float16'} 2368 }, 2369 'inputB': { 2370 'data': [ 2371 0.3720703125, 0.353271484375, 0.1610107421875, 0.301513671875, 2372 0.75830078125, 0.18359375, 0.06787109375, 0.029083251953125, 2373 0.9453125, 0.609375, 0.10418701171875, 0.80517578125, 2374 0.65625, 0.77197265625, 0.5888671875, 0.916015625, 2375 0.104736328125, 0.7138671875, 0.75341796875, 0.88623046875 2376 ], 2377 'descriptor': {shape: [4, 5], dataType: 'float16'}, 2378 'constant': true 2379 }, 2380 'inputC': { 2381 'data': [ 2382 0.484375, 0.97412109375, 0.072509765625, 0.439697265625, 2383 0.46533203125, 0.97119140625, 0.84375, 0.0928955078125, 0.591796875, 2384 0.0114898681640625, 0.47265625, 0.7490234375, 0.1689453125, 2385 0.2379150390625, 0.69970703125 2386 ], 2387 'descriptor': {shape: [3, 5], dataType: 'float16'}, 2388 'constant': true 2389 } 2390 }, 2391 'operators': [{ 2392 'name': 'gemm', 2393 'arguments': [ 2394 {'a': 'inputA'}, {'b': 'inputB'}, 2395 {'options': {'c': 'inputC', 'alpha': -22.611149749186296}} 2396 ], 2397 'outputs': 'gemmOutput' 2398 }], 2399 'expectedOutputs': { 2400 'gemmOutput': { 2401 'data': [ 2402 -12.984375, -11.125, -9.7578125, -17.5, -25.4375, -19.234375, 2403 -26.46875, -24.140625, -43.75, -45.46875, -19.65625, -5.09765625, 2404 -17.421875, -21.390625, -22.265625 2405 ], 2406 'descriptor': {shape: [3, 5], dataType: 'float16'} 2407 } 2408 } 2409 } 2410 } 2411 ]; 2412 2413 webnn_conformance_test(gemmTests, buildAndExecuteGraph, getPrecisionTolerance);