oidn-web 0.3.4 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +140 -4
  3. package/benchmarks/compare.mjs +651 -0
  4. package/benchmarks/leak.mjs +255 -0
  5. package/benchmarks/results/before-spatial.json +391 -0
  6. package/benchmarks/results/before-spatial.md +47 -0
  7. package/benchmarks/results/int8-scan.json +2007 -0
  8. package/benchmarks/results/int8-scan.md +160 -0
  9. package/benchmarks/results/int8-w8a8-scan.json +2007 -0
  10. package/benchmarks/results/int8-w8a8-scan.md +160 -0
  11. package/benchmarks/results/int8-weight-channel.json +1413 -0
  12. package/benchmarks/results/int8-weight-channel.md +118 -0
  13. package/benchmarks/results/int8-weight-only.json +1437 -0
  14. package/benchmarks/results/int8-weight-only.md +118 -0
  15. package/benchmarks/results/kernel-webnn-final.json +1115 -0
  16. package/benchmarks/results/kernel-webnn-final.md +104 -0
  17. package/benchmarks/results/latest-optimized.json +375 -0
  18. package/benchmarks/results/latest-optimized.md +47 -0
  19. package/benchmarks/results/latest.json +391 -0
  20. package/benchmarks/results/latest.md +47 -0
  21. package/benchmarks/results/profile-baseline.json +331 -0
  22. package/benchmarks/results/profile-baseline.md +12 -0
  23. package/benchmarks/results/profile-conv2x.json +331 -0
  24. package/benchmarks/results/profile-conv2x.md +12 -0
  25. package/benchmarks/results/profile-fast-init.json +385 -0
  26. package/benchmarks/results/profile-fast-init.md +47 -0
  27. package/benchmarks/results/profile-fp16-fma.json +369 -0
  28. package/benchmarks/results/profile-fp16-fma.md +47 -0
  29. package/benchmarks/results/profile-fp16-tiled-decoder.json +369 -0
  30. package/benchmarks/results/profile-fp16-tiled-decoder.md +47 -0
  31. package/benchmarks/results/profile-fp16-tiled-encoder.json +369 -0
  32. package/benchmarks/results/profile-fp16-tiled-encoder.md +47 -0
  33. package/benchmarks/results/profile-fp16-unfused-pool.json +385 -0
  34. package/benchmarks/results/profile-fp16-unfused-pool.md +47 -0
  35. package/benchmarks/results/profile-input-major.json +347 -0
  36. package/benchmarks/results/profile-input-major.md +12 -0
  37. package/benchmarks/results/profile-k16.json +347 -0
  38. package/benchmarks/results/profile-k16.md +12 -0
  39. package/benchmarks/results/profile-k4.json +347 -0
  40. package/benchmarks/results/profile-k4.md +12 -0
  41. package/benchmarks/results/profile-pool-reuse.json +331 -0
  42. package/benchmarks/results/profile-pool-reuse.md +12 -0
  43. package/benchmarks/results/profile-precompiled.json +385 -0
  44. package/benchmarks/results/profile-precompiled.md +47 -0
  45. package/benchmarks/results/profile-static-channels.json +385 -0
  46. package/benchmarks/results/profile-static-channels.md +47 -0
  47. package/benchmarks/results/profile-static-io.json +385 -0
  48. package/benchmarks/results/profile-static-io.md +47 -0
  49. package/benchmarks/results/profile-tiled-conv.json +331 -0
  50. package/benchmarks/results/profile-tiled-conv.md +12 -0
  51. package/benchmarks/results/profile-tiled-decoder.json +347 -0
  52. package/benchmarks/results/profile-tiled-decoder.md +12 -0
  53. package/benchmarks/results/profile-tiled-matmul.json +331 -0
  54. package/benchmarks/results/profile-tiled-matmul.md +12 -0
  55. package/benchmarks/results/profile-unfused-decoder.json +379 -0
  56. package/benchmarks/results/profile-unfused-decoder.md +12 -0
  57. package/benchmarks/results/profile-unfused-pool.json +347 -0
  58. package/benchmarks/results/profile-unfused-pool.md +12 -0
  59. package/benchmarks/results/spatial-auto.json +575 -0
  60. package/benchmarks/results/spatial-auto.md +61 -0
  61. package/benchmarks/results/subgroup-smoke.json +1094 -0
  62. package/benchmarks/results/subgroup-smoke.md +104 -0
  63. package/benchmarks/results/webnn-smoke.json +739 -0
  64. package/benchmarks/results/webnn-smoke.md +76 -0
  65. package/dist/oidn.js +4189 -22603
  66. package/dist/oidn.umd.cjs +784 -5807
  67. package/lib/UNet.d.ts +66 -15
  68. package/lib/UNet.js +162 -257
  69. package/lib/UNet.js.map +1 -1
  70. package/lib/WGPUComputePass.d.ts +1 -1
  71. package/lib/WGPUComputePass.js +6 -4
  72. package/lib/WGPUComputePass.js.map +1 -1
  73. package/lib/backend.d.ts +8 -4
  74. package/lib/backend.js +36 -44
  75. package/lib/backend.js.map +1 -1
  76. package/lib/graphOptimizer.d.ts +54 -0
  77. package/lib/graphOptimizer.js +216 -0
  78. package/lib/graphOptimizer.js.map +1 -0
  79. package/lib/main.d.ts +33 -10
  80. package/lib/main.js +5 -0
  81. package/lib/main.js.map +1 -1
  82. package/lib/modelSpec.d.ts +80 -0
  83. package/lib/modelSpec.js +270 -0
  84. package/lib/modelSpec.js.map +1 -0
  85. package/lib/nativeUNet.d.ts +67 -0
  86. package/lib/nativeUNet.js +1735 -0
  87. package/lib/nativeUNet.js.map +1 -0
  88. package/lib/process.js +38 -35
  89. package/lib/process.js.map +1 -1
  90. package/lib/resourceTracker.d.ts +26 -0
  91. package/lib/resourceTracker.js +65 -0
  92. package/lib/resourceTracker.js.map +1 -0
  93. package/lib/tileScheduler.d.ts +33 -0
  94. package/lib/tileScheduler.js +86 -0
  95. package/lib/tileScheduler.js.map +1 -0
  96. package/lib/webnnUNet.d.ts +52 -0
  97. package/lib/webnnUNet.js +535 -0
  98. package/lib/webnnUNet.js.map +1 -0
  99. package/package.json +9 -5
  100. package/scripts/inspect-model.mjs +64 -0
  101. package/src/UNet.ts +236 -339
  102. package/src/WGPUComputePass.ts +6 -4
  103. package/src/backend.ts +42 -55
  104. package/src/graphOptimizer.ts +301 -0
  105. package/src/main.ts +71 -11
  106. package/src/modelSpec.ts +414 -0
  107. package/src/nativeUNet.ts +2256 -0
  108. package/src/process.ts +38 -36
  109. package/src/resourceTracker.ts +94 -0
  110. package/src/tileScheduler.ts +138 -0
  111. package/src/webnnUNet.ts +812 -0
  112. package/tests/modelSpec.test.mjs +128 -0
  113. package/tests/resourceLifecycle.test.mjs +383 -0
  114. package/tests/tileScheduler.test.mjs +90 -0
  115. package/lib/helper.d.ts +0 -4
  116. package/lib/helper.js +0 -33
  117. package/lib/helper.js.map +0 -1
  118. package/lib/kernels.d.ts +0 -1
  119. package/lib/kernels.js +0 -26
  120. package/lib/kernels.js.map +0 -1
  121. package/src/helper.ts +0 -43
  122. package/src/kernels.ts +0 -31
@@ -0,0 +1,1094 @@
1
+ {
2
+ "generatedAt": "2026-08-20T05:10:23.359Z",
3
+ "currentCommit": "e6b8577b1c69cc8ce979022717984aec5b9ea881",
4
+ "baselineCommit": "136c00c34aa5cf4561b4137034dbd643177f0a5f",
5
+ "settings": {
6
+ "width": 512,
7
+ "height": 512,
8
+ "tileSize": 512,
9
+ "warmup": 1,
10
+ "runs": 2,
11
+ "model": "rt_hdr_calb_cnrm_large.tza",
12
+ "gpuQueueCompletionIncluded": true
13
+ },
14
+ "browser": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
15
+ "adapter": {
16
+ "vendor": "apple",
17
+ "architecture": "metal-3",
18
+ "device": "",
19
+ "description": ""
20
+ },
21
+ "results": [
22
+ {
23
+ "label": "TFJS (136c00c)",
24
+ "bundle": "baseline",
25
+ "baseline": true,
26
+ "initializationMs": 10.100000001490116,
27
+ "timesMs": [
28
+ 36.5,
29
+ 37.29999999701977
30
+ ],
31
+ "supportsFP16": true,
32
+ "adapter": {
33
+ "vendor": "apple",
34
+ "architecture": "metal-3",
35
+ "device": "",
36
+ "description": ""
37
+ },
38
+ "summary": {
39
+ "minMs": 36.5,
40
+ "medianMs": 36.899999998509884,
41
+ "meanMs": 36.899999998509884,
42
+ "p95Ms": 37.29999999701977,
43
+ "maxMs": 37.29999999701977
44
+ },
45
+ "messages": []
46
+ },
47
+ {
48
+ "label": "WGSL FP32 Auto",
49
+ "bundle": "current",
50
+ "baseline": false,
51
+ "precision": "fp32",
52
+ "initializationMs": 38.900000005960464,
53
+ "timesMs": [
54
+ 38.399999998509884,
55
+ 37.5
56
+ ],
57
+ "executionProfile": {
58
+ "totalMs": 37.37813,
59
+ "layers": [
60
+ {
61
+ "id": "input-pack",
62
+ "durationMs": 0.050453
63
+ },
64
+ {
65
+ "id": "enc_conv1a",
66
+ "durationMs": 1.223494
67
+ },
68
+ {
69
+ "id": "enc_conv1b",
70
+ "durationMs": 3.980574
71
+ },
72
+ {
73
+ "id": "pool1",
74
+ "durationMs": 0.408415
75
+ },
76
+ {
77
+ "id": "enc_conv2a",
78
+ "durationMs": 1.403016
79
+ },
80
+ {
81
+ "id": "enc_conv2b",
82
+ "durationMs": 2.15777
83
+ },
84
+ {
85
+ "id": "pool2",
86
+ "durationMs": 0.054369
87
+ },
88
+ {
89
+ "id": "enc_conv3a",
90
+ "durationMs": 1.099632
91
+ },
92
+ {
93
+ "id": "enc_conv3b",
94
+ "durationMs": 1.076968
95
+ },
96
+ {
97
+ "id": "pool3",
98
+ "durationMs": 0.01829
99
+ },
100
+ {
101
+ "id": "enc_conv4a",
102
+ "durationMs": 0.470616
103
+ },
104
+ {
105
+ "id": "enc_conv4b",
106
+ "durationMs": 0.612142
107
+ },
108
+ {
109
+ "id": "pool4",
110
+ "durationMs": 0.008374
111
+ },
112
+ {
113
+ "id": "enc_conv5a",
114
+ "durationMs": 0.255098
115
+ },
116
+ {
117
+ "id": "enc_conv5b",
118
+ "durationMs": 0.337964
119
+ },
120
+ {
121
+ "id": "dec_conv4a",
122
+ "durationMs": 1.241242
123
+ },
124
+ {
125
+ "id": "dec_conv4b",
126
+ "durationMs": 0.609435
127
+ },
128
+ {
129
+ "id": "dec_conv3a",
130
+ "durationMs": 2.322086
131
+ },
132
+ {
133
+ "id": "dec_conv3b",
134
+ "durationMs": 1.175999
135
+ },
136
+ {
137
+ "id": "dec_conv2a",
138
+ "durationMs": 4.670001
139
+ },
140
+ {
141
+ "id": "dec_conv2b",
142
+ "durationMs": 2.156895
143
+ },
144
+ {
145
+ "id": "dec_conv1a",
146
+ "durationMs": 7.36988
147
+ },
148
+ {
149
+ "id": "dec_conv1b",
150
+ "durationMs": 4.177179
151
+ },
152
+ {
153
+ "id": "dec_conv1c",
154
+ "durationMs": 0.498238
155
+ }
156
+ ]
157
+ },
158
+ "runtimeInfo": {
159
+ "configuredEngine": "wgsl",
160
+ "gpuEngine": "wgsl",
161
+ "precision": "fp32",
162
+ "kernel": {
163
+ "configured": "auto",
164
+ "maxSpatialInputBlocks": 0,
165
+ "subgroupsAvailable": false
166
+ },
167
+ "model": "oidn-unet-large-v1",
168
+ "modelFamily": "oidn-unet-large",
169
+ "inputChannels": 9,
170
+ "dynamicTile": {
171
+ "enabled": false,
172
+ "currentTileSize": 512,
173
+ "minTileSize": 256,
174
+ "maxTileSize": 512,
175
+ "targetTileTimeMs": 16
176
+ },
177
+ "lastExecution": {
178
+ "width": 512,
179
+ "height": 512,
180
+ "tileWidth": 512,
181
+ "tileHeight": 512,
182
+ "tileCount": 1,
183
+ "durationMs": 39.20000000298023,
184
+ "tileTimeMs": {
185
+ "min": 39.100000001490116,
186
+ "median": 39.100000001490116,
187
+ "mean": 39.100000001490116,
188
+ "max": 39.100000001490116
189
+ }
190
+ }
191
+ },
192
+ "supportsFP16": true,
193
+ "adapter": {
194
+ "vendor": "apple",
195
+ "architecture": "metal-3",
196
+ "device": "",
197
+ "description": ""
198
+ },
199
+ "summary": {
200
+ "minMs": 37.5,
201
+ "medianMs": 37.94999999925494,
202
+ "meanMs": 37.94999999925494,
203
+ "p95Ms": 38.399999998509884,
204
+ "maxMs": 38.399999998509884
205
+ },
206
+ "messages": [],
207
+ "validation": {
208
+ "sampleCount": 6144,
209
+ "meanAbsoluteError": 0.0000011096847932397698,
210
+ "rootMeanSquaredError": 0.0000018071588418628667,
211
+ "maxAbsoluteError": 0.000013589859008789062,
212
+ "passed": true,
213
+ "thresholds": {
214
+ "maxMeanError": 0.0001,
215
+ "maxAbsoluteError": 0.001
216
+ }
217
+ }
218
+ },
219
+ {
220
+ "label": "WGSL FP32 Direct",
221
+ "bundle": "current",
222
+ "baseline": false,
223
+ "precision": "fp32",
224
+ "kernel": "direct",
225
+ "initializationMs": 44.20000000298023,
226
+ "timesMs": [
227
+ 66.30000000447035,
228
+ 66.39999999850988
229
+ ],
230
+ "executionProfile": {
231
+ "totalMs": 66.16696099999999,
232
+ "layers": [
233
+ {
234
+ "id": "input-pack",
235
+ "durationMs": 0.050955
236
+ },
237
+ {
238
+ "id": "enc_conv1a",
239
+ "durationMs": 1.238341
240
+ },
241
+ {
242
+ "id": "enc_conv1b",
243
+ "durationMs": 9.186731
244
+ },
245
+ {
246
+ "id": "pool1",
247
+ "durationMs": 1.051019
248
+ },
249
+ {
250
+ "id": "enc_conv2a",
251
+ "durationMs": 3.319964
252
+ },
253
+ {
254
+ "id": "enc_conv2b",
255
+ "durationMs": 5.788854
256
+ },
257
+ {
258
+ "id": "pool2",
259
+ "durationMs": 0.192405
260
+ },
261
+ {
262
+ "id": "enc_conv3a",
263
+ "durationMs": 1.198385
264
+ },
265
+ {
266
+ "id": "enc_conv3b",
267
+ "durationMs": 1.437746
268
+ },
269
+ {
270
+ "id": "pool3",
271
+ "durationMs": 0.018374
272
+ },
273
+ {
274
+ "id": "enc_conv4a",
275
+ "durationMs": 0.577965
276
+ },
277
+ {
278
+ "id": "enc_conv4b",
279
+ "durationMs": 0.839406
280
+ },
281
+ {
282
+ "id": "pool4",
283
+ "durationMs": 0.012417
284
+ },
285
+ {
286
+ "id": "enc_conv5a",
287
+ "durationMs": 0.320438
288
+ },
289
+ {
290
+ "id": "enc_conv5b",
291
+ "durationMs": 0.437431
292
+ },
293
+ {
294
+ "id": "dec_conv4a",
295
+ "durationMs": 1.871636
296
+ },
297
+ {
298
+ "id": "dec_conv4b",
299
+ "durationMs": 1.09735
300
+ },
301
+ {
302
+ "id": "dec_conv3a",
303
+ "durationMs": 3.342254
304
+ },
305
+ {
306
+ "id": "dec_conv3b",
307
+ "durationMs": 1.437247
308
+ },
309
+ {
310
+ "id": "dec_conv2a",
311
+ "durationMs": 7.010614
312
+ },
313
+ {
314
+ "id": "dec_conv2b",
315
+ "durationMs": 5.840268
316
+ },
317
+ {
318
+ "id": "dec_conv1a",
319
+ "durationMs": 10.112342
320
+ },
321
+ {
322
+ "id": "dec_conv1b",
323
+ "durationMs": 9.302391
324
+ },
325
+ {
326
+ "id": "dec_conv1c",
327
+ "durationMs": 0.482428
328
+ }
329
+ ]
330
+ },
331
+ "runtimeInfo": {
332
+ "configuredEngine": "wgsl",
333
+ "gpuEngine": "wgsl",
334
+ "precision": "fp32",
335
+ "kernel": {
336
+ "configured": "direct",
337
+ "maxSpatialInputBlocks": 0,
338
+ "subgroupsAvailable": false
339
+ },
340
+ "model": "oidn-unet-large-v1",
341
+ "modelFamily": "oidn-unet-large",
342
+ "inputChannels": 9,
343
+ "dynamicTile": {
344
+ "enabled": false,
345
+ "currentTileSize": 512,
346
+ "minTileSize": 256,
347
+ "maxTileSize": 512,
348
+ "targetTileTimeMs": 16
349
+ },
350
+ "lastExecution": {
351
+ "width": 512,
352
+ "height": 512,
353
+ "tileWidth": 512,
354
+ "tileHeight": 512,
355
+ "tileCount": 1,
356
+ "durationMs": 68,
357
+ "tileTimeMs": {
358
+ "min": 68,
359
+ "median": 68,
360
+ "mean": 68,
361
+ "max": 68
362
+ }
363
+ }
364
+ },
365
+ "supportsFP16": true,
366
+ "adapter": {
367
+ "vendor": "apple",
368
+ "architecture": "metal-3",
369
+ "device": "",
370
+ "description": ""
371
+ },
372
+ "summary": {
373
+ "minMs": 66.30000000447035,
374
+ "medianMs": 66.35000000149012,
375
+ "meanMs": 66.35000000149012,
376
+ "p95Ms": 66.39999999850988,
377
+ "maxMs": 66.39999999850988
378
+ },
379
+ "messages": [],
380
+ "validation": {
381
+ "sampleCount": 6144,
382
+ "meanAbsoluteError": 0.0000011096847932397698,
383
+ "rootMeanSquaredError": 0.0000018071588418628667,
384
+ "maxAbsoluteError": 0.000013589859008789062,
385
+ "passed": true,
386
+ "thresholds": {
387
+ "maxMeanError": 0.0001,
388
+ "maxAbsoluteError": 0.001
389
+ }
390
+ }
391
+ },
392
+ {
393
+ "label": "WGSL FP16 Direct",
394
+ "bundle": "current",
395
+ "baseline": false,
396
+ "precision": "fp16",
397
+ "kernel": "direct",
398
+ "initializationMs": 28.400000005960464,
399
+ "timesMs": [
400
+ 29.5,
401
+ 30.200000002980232
402
+ ],
403
+ "executionProfile": {
404
+ "totalMs": 29.166133000000002,
405
+ "layers": [
406
+ {
407
+ "id": "input-pack",
408
+ "durationMs": 0.044662
409
+ },
410
+ {
411
+ "id": "enc_conv1a",
412
+ "durationMs": 0.618351
413
+ },
414
+ {
415
+ "id": "enc_conv1b",
416
+ "durationMs": 3.092378
417
+ },
418
+ {
419
+ "id": "pool1",
420
+ "durationMs": 0.332757
421
+ },
422
+ {
423
+ "id": "enc_conv2a",
424
+ "durationMs": 1.808766
425
+ },
426
+ {
427
+ "id": "enc_conv2b",
428
+ "durationMs": 2.118399
429
+ },
430
+ {
431
+ "id": "pool2",
432
+ "durationMs": 0.061076
433
+ },
434
+ {
435
+ "id": "enc_conv3a",
436
+ "durationMs": 0.683135
437
+ },
438
+ {
439
+ "id": "enc_conv3b",
440
+ "durationMs": 0.858699
441
+ },
442
+ {
443
+ "id": "pool3",
444
+ "durationMs": 0.015165
445
+ },
446
+ {
447
+ "id": "enc_conv4a",
448
+ "durationMs": 0.552232
449
+ },
450
+ {
451
+ "id": "enc_conv4b",
452
+ "durationMs": 0.539318
453
+ },
454
+ {
455
+ "id": "pool4",
456
+ "durationMs": 0.010958
457
+ },
458
+ {
459
+ "id": "enc_conv5a",
460
+ "durationMs": 0.186355
461
+ },
462
+ {
463
+ "id": "enc_conv5b",
464
+ "durationMs": 0.2321
465
+ },
466
+ {
467
+ "id": "dec_conv4a",
468
+ "durationMs": 0.959397
469
+ },
470
+ {
471
+ "id": "dec_conv4b",
472
+ "durationMs": 0.541108
473
+ },
474
+ {
475
+ "id": "dec_conv3a",
476
+ "durationMs": 2.367372
477
+ },
478
+ {
479
+ "id": "dec_conv3b",
480
+ "durationMs": 0.846076
481
+ },
482
+ {
483
+ "id": "dec_conv2a",
484
+ "durationMs": 2.975141
485
+ },
486
+ {
487
+ "id": "dec_conv2b",
488
+ "durationMs": 1.969872
489
+ },
490
+ {
491
+ "id": "dec_conv1a",
492
+ "durationMs": 5.064917
493
+ },
494
+ {
495
+ "id": "dec_conv1b",
496
+ "durationMs": 3.093295
497
+ },
498
+ {
499
+ "id": "dec_conv1c",
500
+ "durationMs": 0.194604
501
+ }
502
+ ]
503
+ },
504
+ "runtimeInfo": {
505
+ "configuredEngine": "wgsl",
506
+ "gpuEngine": "wgsl",
507
+ "precision": "fp16",
508
+ "kernel": {
509
+ "configured": "direct",
510
+ "maxSpatialInputBlocks": 40,
511
+ "subgroupsAvailable": false
512
+ },
513
+ "model": "oidn-unet-large-v1",
514
+ "modelFamily": "oidn-unet-large",
515
+ "inputChannels": 9,
516
+ "dynamicTile": {
517
+ "enabled": false,
518
+ "currentTileSize": 512,
519
+ "minTileSize": 256,
520
+ "maxTileSize": 512,
521
+ "targetTileTimeMs": 16
522
+ },
523
+ "lastExecution": {
524
+ "width": 512,
525
+ "height": 512,
526
+ "tileWidth": 512,
527
+ "tileHeight": 512,
528
+ "tileCount": 1,
529
+ "durationMs": 31.200000002980232,
530
+ "tileTimeMs": {
531
+ "min": 31.200000002980232,
532
+ "median": 31.200000002980232,
533
+ "mean": 31.200000002980232,
534
+ "max": 31.200000002980232
535
+ }
536
+ }
537
+ },
538
+ "supportsFP16": true,
539
+ "adapter": {
540
+ "vendor": "apple",
541
+ "architecture": "metal-3",
542
+ "device": "",
543
+ "description": ""
544
+ },
545
+ "summary": {
546
+ "minMs": 29.5,
547
+ "medianMs": 29.850000001490116,
548
+ "meanMs": 29.850000001490116,
549
+ "p95Ms": 30.200000002980232,
550
+ "maxMs": 30.200000002980232
551
+ },
552
+ "messages": [],
553
+ "validation": {
554
+ "sampleCount": 6144,
555
+ "meanAbsoluteError": 0.0010210334021394374,
556
+ "rootMeanSquaredError": 0.001609680379854656,
557
+ "maxAbsoluteError": 0.012395620346069336,
558
+ "passed": true,
559
+ "thresholds": {
560
+ "maxMeanError": 0.005,
561
+ "maxAbsoluteError": 0.05
562
+ }
563
+ }
564
+ },
565
+ {
566
+ "label": "WGSL FP16 Implicit GEMM",
567
+ "bundle": "current",
568
+ "baseline": false,
569
+ "precision": "fp16",
570
+ "kernel": "implicit-gemm",
571
+ "initializationMs": 31,
572
+ "timesMs": [
573
+ 30.799999997019768,
574
+ 30.700000002980232
575
+ ],
576
+ "executionProfile": {
577
+ "totalMs": 29.756030999999997,
578
+ "layers": [
579
+ {
580
+ "id": "input-pack",
581
+ "durationMs": 0.04362
582
+ },
583
+ {
584
+ "id": "enc_conv1a",
585
+ "durationMs": 0.683969
586
+ },
587
+ {
588
+ "id": "enc_conv1b",
589
+ "durationMs": 2.937019
590
+ },
591
+ {
592
+ "id": "pool1",
593
+ "durationMs": 0.326632
594
+ },
595
+ {
596
+ "id": "enc_conv2a",
597
+ "durationMs": 1.121922
598
+ },
599
+ {
600
+ "id": "enc_conv2b",
601
+ "durationMs": 2.219347
602
+ },
603
+ {
604
+ "id": "pool2",
605
+ "durationMs": 0.141277
606
+ },
607
+ {
608
+ "id": "enc_conv3a",
609
+ "durationMs": 0.625558
610
+ },
611
+ {
612
+ "id": "enc_conv3b",
613
+ "durationMs": 0.792915
614
+ },
615
+ {
616
+ "id": "pool3",
617
+ "durationMs": 0.018873
618
+ },
619
+ {
620
+ "id": "enc_conv4a",
621
+ "durationMs": 0.32709
622
+ },
623
+ {
624
+ "id": "enc_conv4b",
625
+ "durationMs": 0.508488
626
+ },
627
+ {
628
+ "id": "pool4",
629
+ "durationMs": 0.008583
630
+ },
631
+ {
632
+ "id": "enc_conv5a",
633
+ "durationMs": 0.228892
634
+ },
635
+ {
636
+ "id": "enc_conv5b",
637
+ "durationMs": 0.297802
638
+ },
639
+ {
640
+ "id": "dec_conv4a",
641
+ "durationMs": 1.047221
642
+ },
643
+ {
644
+ "id": "dec_conv4b",
645
+ "durationMs": 0.506613
646
+ },
647
+ {
648
+ "id": "dec_conv3a",
649
+ "durationMs": 1.944751
650
+ },
651
+ {
652
+ "id": "dec_conv3b",
653
+ "durationMs": 1.176082
654
+ },
655
+ {
656
+ "id": "dec_conv2a",
657
+ "durationMs": 3.651735
658
+ },
659
+ {
660
+ "id": "dec_conv2b",
661
+ "durationMs": 1.753521
662
+ },
663
+ {
664
+ "id": "dec_conv1a",
665
+ "durationMs": 6.263747
666
+ },
667
+ {
668
+ "id": "dec_conv1b",
669
+ "durationMs": 2.938061
670
+ },
671
+ {
672
+ "id": "dec_conv1c",
673
+ "durationMs": 0.192313
674
+ }
675
+ ]
676
+ },
677
+ "runtimeInfo": {
678
+ "configuredEngine": "wgsl",
679
+ "gpuEngine": "wgsl",
680
+ "precision": "fp16",
681
+ "kernel": {
682
+ "configured": "implicit-gemm",
683
+ "maxSpatialInputBlocks": 40,
684
+ "subgroupsAvailable": false
685
+ },
686
+ "model": "oidn-unet-large-v1",
687
+ "modelFamily": "oidn-unet-large",
688
+ "inputChannels": 9,
689
+ "dynamicTile": {
690
+ "enabled": false,
691
+ "currentTileSize": 512,
692
+ "minTileSize": 256,
693
+ "maxTileSize": 512,
694
+ "targetTileTimeMs": 16
695
+ },
696
+ "lastExecution": {
697
+ "width": 512,
698
+ "height": 512,
699
+ "tileWidth": 512,
700
+ "tileHeight": 512,
701
+ "tileCount": 1,
702
+ "durationMs": 31.399999998509884,
703
+ "tileTimeMs": {
704
+ "min": 31.399999998509884,
705
+ "median": 31.399999998509884,
706
+ "mean": 31.399999998509884,
707
+ "max": 31.399999998509884
708
+ }
709
+ }
710
+ },
711
+ "supportsFP16": true,
712
+ "adapter": {
713
+ "vendor": "apple",
714
+ "architecture": "metal-3",
715
+ "device": "",
716
+ "description": ""
717
+ },
718
+ "summary": {
719
+ "minMs": 30.700000002980232,
720
+ "medianMs": 30.75,
721
+ "meanMs": 30.75,
722
+ "p95Ms": 30.799999997019768,
723
+ "maxMs": 30.799999997019768
724
+ },
725
+ "messages": [],
726
+ "validation": {
727
+ "sampleCount": 6144,
728
+ "meanAbsoluteError": 0.001559715069864372,
729
+ "rootMeanSquaredError": 0.0025477948380839928,
730
+ "maxAbsoluteError": 0.04479837417602539,
731
+ "passed": true,
732
+ "thresholds": {
733
+ "maxMeanError": 0.005,
734
+ "maxAbsoluteError": 0.05
735
+ }
736
+ }
737
+ },
738
+ {
739
+ "label": "WGSL FP16 Spatial (experimental)",
740
+ "bundle": "current",
741
+ "baseline": false,
742
+ "precision": "fp16",
743
+ "kernel": "spatial",
744
+ "initializationMs": 29,
745
+ "timesMs": [
746
+ 65.29999999701977,
747
+ 65
748
+ ],
749
+ "executionProfile": {
750
+ "totalMs": 65.135023,
751
+ "layers": [
752
+ {
753
+ "id": "input-pack",
754
+ "durationMs": 0.044248
755
+ },
756
+ {
757
+ "id": "enc_conv1a",
758
+ "durationMs": 0.716914
759
+ },
760
+ {
761
+ "id": "enc_conv1b",
762
+ "durationMs": 6.067171
763
+ },
764
+ {
765
+ "id": "pool1",
766
+ "durationMs": 0.339896
767
+ },
768
+ {
769
+ "id": "enc_conv2a",
770
+ "durationMs": 2.045542
771
+ },
772
+ {
773
+ "id": "enc_conv2b",
774
+ "durationMs": 4.968572
775
+ },
776
+ {
777
+ "id": "pool2",
778
+ "durationMs": 0.054955
779
+ },
780
+ {
781
+ "id": "enc_conv3a",
782
+ "durationMs": 1.431746
783
+ },
784
+ {
785
+ "id": "enc_conv3b",
786
+ "durationMs": 2.89999
787
+ },
788
+ {
789
+ "id": "pool3",
790
+ "durationMs": 0.016208
791
+ },
792
+ {
793
+ "id": "enc_conv4a",
794
+ "durationMs": 1.528115
795
+ },
796
+ {
797
+ "id": "enc_conv4b",
798
+ "durationMs": 0.711331
799
+ },
800
+ {
801
+ "id": "pool4",
802
+ "durationMs": 0.035748
803
+ },
804
+ {
805
+ "id": "enc_conv5a",
806
+ "durationMs": 0.191779
807
+ },
808
+ {
809
+ "id": "enc_conv5b",
810
+ "durationMs": 0.233361
811
+ },
812
+ {
813
+ "id": "dec_conv4a",
814
+ "durationMs": 0.99294
815
+ },
816
+ {
817
+ "id": "dec_conv4b",
818
+ "durationMs": 0.536467
819
+ },
820
+ {
821
+ "id": "dec_conv3a",
822
+ "durationMs": 1.701312
823
+ },
824
+ {
825
+ "id": "dec_conv3b",
826
+ "durationMs": 2.605841
827
+ },
828
+ {
829
+ "id": "dec_conv2a",
830
+ "durationMs": 3.679358
831
+ },
832
+ {
833
+ "id": "dec_conv2b",
834
+ "durationMs": 4.351234
835
+ },
836
+ {
837
+ "id": "dec_conv1a",
838
+ "durationMs": 23.607934
839
+ },
840
+ {
841
+ "id": "dec_conv1b",
842
+ "durationMs": 6.006258
843
+ },
844
+ {
845
+ "id": "dec_conv1c",
846
+ "durationMs": 0.368103
847
+ }
848
+ ]
849
+ },
850
+ "runtimeInfo": {
851
+ "configuredEngine": "wgsl",
852
+ "gpuEngine": "wgsl",
853
+ "precision": "fp16",
854
+ "kernel": {
855
+ "configured": "spatial",
856
+ "maxSpatialInputBlocks": 40,
857
+ "subgroupsAvailable": false
858
+ },
859
+ "model": "oidn-unet-large-v1",
860
+ "modelFamily": "oidn-unet-large",
861
+ "inputChannels": 9,
862
+ "dynamicTile": {
863
+ "enabled": false,
864
+ "currentTileSize": 512,
865
+ "minTileSize": 256,
866
+ "maxTileSize": 512,
867
+ "targetTileTimeMs": 16
868
+ },
869
+ "lastExecution": {
870
+ "width": 512,
871
+ "height": 512,
872
+ "tileWidth": 512,
873
+ "tileHeight": 512,
874
+ "tileCount": 1,
875
+ "durationMs": 66.89999999850988,
876
+ "tileTimeMs": {
877
+ "min": 66.89999999850988,
878
+ "median": 66.89999999850988,
879
+ "mean": 66.89999999850988,
880
+ "max": 66.89999999850988
881
+ }
882
+ }
883
+ },
884
+ "supportsFP16": true,
885
+ "adapter": {
886
+ "vendor": "apple",
887
+ "architecture": "metal-3",
888
+ "device": "",
889
+ "description": ""
890
+ },
891
+ "summary": {
892
+ "minMs": 65,
893
+ "medianMs": 65.14999999850988,
894
+ "meanMs": 65.14999999850988,
895
+ "p95Ms": 65.29999999701977,
896
+ "maxMs": 65.29999999701977
897
+ },
898
+ "messages": [],
899
+ "validation": {
900
+ "sampleCount": 6144,
901
+ "meanAbsoluteError": 0.0010210334021394374,
902
+ "rootMeanSquaredError": 0.001609680379854656,
903
+ "maxAbsoluteError": 0.012395620346069336,
904
+ "passed": true,
905
+ "thresholds": {
906
+ "maxMeanError": 0.005,
907
+ "maxAbsoluteError": 0.05
908
+ }
909
+ }
910
+ },
911
+ {
912
+ "label": "WGSL FP16 Subgroup (experimental)",
913
+ "bundle": "current",
914
+ "baseline": false,
915
+ "precision": "fp16",
916
+ "kernel": "subgroup",
917
+ "initializationMs": 115.79999999701977,
918
+ "timesMs": [
919
+ 31.299999997019768,
920
+ 31.399999998509884
921
+ ],
922
+ "executionProfile": {
923
+ "totalMs": 30.665889999999997,
924
+ "layers": [
925
+ {
926
+ "id": "input-pack",
927
+ "durationMs": 0.044704
928
+ },
929
+ {
930
+ "id": "enc_conv1a",
931
+ "durationMs": 0.739671
932
+ },
933
+ {
934
+ "id": "enc_conv1b",
935
+ "durationMs": 4.058816
936
+ },
937
+ {
938
+ "id": "pool1",
939
+ "durationMs": 0.359212
940
+ },
941
+ {
942
+ "id": "enc_conv2a",
943
+ "durationMs": 1.286655
944
+ },
945
+ {
946
+ "id": "enc_conv2b",
947
+ "durationMs": 2.023283
948
+ },
949
+ {
950
+ "id": "pool2",
951
+ "durationMs": 0.05137
952
+ },
953
+ {
954
+ "id": "enc_conv3a",
955
+ "durationMs": 0.713007
956
+ },
957
+ {
958
+ "id": "enc_conv3b",
959
+ "durationMs": 0.923401
960
+ },
961
+ {
962
+ "id": "pool3",
963
+ "durationMs": 0.015207
964
+ },
965
+ {
966
+ "id": "enc_conv4a",
967
+ "durationMs": 0.375293
968
+ },
969
+ {
970
+ "id": "enc_conv4b",
971
+ "durationMs": 0.750378
972
+ },
973
+ {
974
+ "id": "pool4",
975
+ "durationMs": 0.157316
976
+ },
977
+ {
978
+ "id": "enc_conv5a",
979
+ "durationMs": 0.405707
980
+ },
981
+ {
982
+ "id": "enc_conv5b",
983
+ "durationMs": 0.276304
984
+ },
985
+ {
986
+ "id": "dec_conv4a",
987
+ "durationMs": 0.964688
988
+ },
989
+ {
990
+ "id": "dec_conv4b",
991
+ "durationMs": 0.587021
992
+ },
993
+ {
994
+ "id": "dec_conv3a",
995
+ "durationMs": 1.708817
996
+ },
997
+ {
998
+ "id": "dec_conv3b",
999
+ "durationMs": 0.921902
1000
+ },
1001
+ {
1002
+ "id": "dec_conv2a",
1003
+ "durationMs": 3.135749
1004
+ },
1005
+ {
1006
+ "id": "dec_conv2b",
1007
+ "durationMs": 2.4919
1008
+ },
1009
+ {
1010
+ "id": "dec_conv1a",
1011
+ "durationMs": 4.38224
1012
+ },
1013
+ {
1014
+ "id": "dec_conv1b",
1015
+ "durationMs": 4.066899
1016
+ },
1017
+ {
1018
+ "id": "dec_conv1c",
1019
+ "durationMs": 0.22635
1020
+ }
1021
+ ]
1022
+ },
1023
+ "runtimeInfo": {
1024
+ "configuredEngine": "wgsl",
1025
+ "gpuEngine": "wgsl",
1026
+ "precision": "fp16",
1027
+ "kernel": {
1028
+ "configured": "subgroup",
1029
+ "maxSpatialInputBlocks": 40,
1030
+ "subgroupsAvailable": true
1031
+ },
1032
+ "model": "oidn-unet-large-v1",
1033
+ "modelFamily": "oidn-unet-large",
1034
+ "inputChannels": 9,
1035
+ "dynamicTile": {
1036
+ "enabled": false,
1037
+ "currentTileSize": 512,
1038
+ "minTileSize": 256,
1039
+ "maxTileSize": 512,
1040
+ "targetTileTimeMs": 16
1041
+ },
1042
+ "lastExecution": {
1043
+ "width": 512,
1044
+ "height": 512,
1045
+ "tileWidth": 512,
1046
+ "tileHeight": 512,
1047
+ "tileCount": 1,
1048
+ "durationMs": 32.399999998509884,
1049
+ "tileTimeMs": {
1050
+ "min": 32.399999998509884,
1051
+ "median": 32.399999998509884,
1052
+ "mean": 32.399999998509884,
1053
+ "max": 32.399999998509884
1054
+ }
1055
+ }
1056
+ },
1057
+ "supportsFP16": true,
1058
+ "adapter": {
1059
+ "vendor": "apple",
1060
+ "architecture": "metal-3",
1061
+ "device": "",
1062
+ "description": ""
1063
+ },
1064
+ "summary": {
1065
+ "minMs": 31.299999997019768,
1066
+ "medianMs": 31.349999997764826,
1067
+ "meanMs": 31.349999997764826,
1068
+ "p95Ms": 31.399999998509884,
1069
+ "maxMs": 31.399999998509884
1070
+ },
1071
+ "messages": [],
1072
+ "validation": {
1073
+ "sampleCount": 6144,
1074
+ "meanAbsoluteError": 0.0010210334021394374,
1075
+ "rootMeanSquaredError": 0.001609680379854656,
1076
+ "maxAbsoluteError": 0.012395620346069336,
1077
+ "passed": true,
1078
+ "thresholds": {
1079
+ "maxMeanError": 0.005,
1080
+ "maxAbsoluteError": 0.05
1081
+ }
1082
+ }
1083
+ },
1084
+ {
1085
+ "label": "WebNN FP16 (experimental)",
1086
+ "bundle": "current",
1087
+ "baseline": false,
1088
+ "precision": "fp16",
1089
+ "engine": "webnn",
1090
+ "skipped": "Error: WebNN FP16 WebGPU interop failed: NotSupportedError: Failed to execute 'createExportableTensor' on 'MLContext': WebGPU Interop is not supported.",
1091
+ "messages": []
1092
+ }
1093
+ ]
1094
+ }