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,1115 @@
1
+ {
2
+ "generatedAt": "2026-08-20T05:12:10.057Z",
3
+ "currentCommit": "e6b8577b1c69cc8ce979022717984aec5b9ea881",
4
+ "baselineCommit": "136c00c34aa5cf4561b4137034dbd643177f0a5f",
5
+ "settings": {
6
+ "width": 512,
7
+ "height": 512,
8
+ "tileSize": 512,
9
+ "warmup": 1,
10
+ "runs": 5,
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": 9.399999998509884,
27
+ "timesMs": [
28
+ 35.30000000447035,
29
+ 35.399999998509884,
30
+ 35.19999999552965,
31
+ 35,
32
+ 35
33
+ ],
34
+ "supportsFP16": true,
35
+ "adapter": {
36
+ "vendor": "apple",
37
+ "architecture": "metal-3",
38
+ "device": "",
39
+ "description": ""
40
+ },
41
+ "summary": {
42
+ "minMs": 35,
43
+ "medianMs": 35.19999999552965,
44
+ "meanMs": 35.17999999970198,
45
+ "p95Ms": 35.399999998509884,
46
+ "maxMs": 35.399999998509884
47
+ },
48
+ "messages": []
49
+ },
50
+ {
51
+ "label": "WGSL FP32 Auto",
52
+ "bundle": "current",
53
+ "baseline": false,
54
+ "precision": "fp32",
55
+ "initializationMs": 39.20000000298023,
56
+ "timesMs": [
57
+ 36.5,
58
+ 36.399999998509884,
59
+ 36.30000000447035,
60
+ 36.29999999701977,
61
+ 36
62
+ ],
63
+ "executionProfile": {
64
+ "totalMs": 35.239305,
65
+ "layers": [
66
+ {
67
+ "id": "input-pack",
68
+ "durationMs": 0.054914
69
+ },
70
+ {
71
+ "id": "enc_conv1a",
72
+ "durationMs": 0.839739
73
+ },
74
+ {
75
+ "id": "enc_conv1b",
76
+ "durationMs": 3.824684
77
+ },
78
+ {
79
+ "id": "pool1",
80
+ "durationMs": 0.404267
81
+ },
82
+ {
83
+ "id": "enc_conv2a",
84
+ "durationMs": 1.403872
85
+ },
86
+ {
87
+ "id": "enc_conv2b",
88
+ "durationMs": 2.176158
89
+ },
90
+ {
91
+ "id": "pool2",
92
+ "durationMs": 0.055164
93
+ },
94
+ {
95
+ "id": "enc_conv3a",
96
+ "durationMs": 0.764828
97
+ },
98
+ {
99
+ "id": "enc_conv3b",
100
+ "durationMs": 0.992148
101
+ },
102
+ {
103
+ "id": "pool3",
104
+ "durationMs": 0.017874
105
+ },
106
+ {
107
+ "id": "enc_conv4a",
108
+ "durationMs": 0.404475
109
+ },
110
+ {
111
+ "id": "enc_conv4b",
112
+ "durationMs": 0.612962
113
+ },
114
+ {
115
+ "id": "pool4",
116
+ "durationMs": 0.008458
117
+ },
118
+ {
119
+ "id": "enc_conv5a",
120
+ "durationMs": 0.259359
121
+ },
122
+ {
123
+ "id": "enc_conv5b",
124
+ "durationMs": 0.341562
125
+ },
126
+ {
127
+ "id": "dec_conv4a",
128
+ "durationMs": 1.249507
129
+ },
130
+ {
131
+ "id": "dec_conv4b",
132
+ "durationMs": 0.612212
133
+ },
134
+ {
135
+ "id": "dec_conv3a",
136
+ "durationMs": 2.342441
137
+ },
138
+ {
139
+ "id": "dec_conv3b",
140
+ "durationMs": 0.989607
141
+ },
142
+ {
143
+ "id": "dec_conv2a",
144
+ "durationMs": 4.461478
145
+ },
146
+ {
147
+ "id": "dec_conv2b",
148
+ "durationMs": 2.283401
149
+ },
150
+ {
151
+ "id": "dec_conv1a",
152
+ "durationMs": 6.890996
153
+ },
154
+ {
155
+ "id": "dec_conv1b",
156
+ "durationMs": 3.748396
157
+ },
158
+ {
159
+ "id": "dec_conv1c",
160
+ "durationMs": 0.500803
161
+ }
162
+ ]
163
+ },
164
+ "runtimeInfo": {
165
+ "configuredEngine": "wgsl",
166
+ "gpuEngine": "wgsl",
167
+ "precision": "fp32",
168
+ "kernel": {
169
+ "configured": "auto",
170
+ "maxSpatialInputBlocks": 0,
171
+ "subgroupsAvailable": false
172
+ },
173
+ "model": "oidn-unet-large-v1",
174
+ "modelFamily": "oidn-unet-large",
175
+ "inputChannels": 9,
176
+ "dynamicTile": {
177
+ "enabled": false,
178
+ "currentTileSize": 512,
179
+ "minTileSize": 256,
180
+ "maxTileSize": 512,
181
+ "targetTileTimeMs": 16
182
+ },
183
+ "lastExecution": {
184
+ "width": 512,
185
+ "height": 512,
186
+ "tileWidth": 512,
187
+ "tileHeight": 512,
188
+ "tileCount": 1,
189
+ "durationMs": 37.100000001490116,
190
+ "tileTimeMs": {
191
+ "min": 37.100000001490116,
192
+ "median": 37.100000001490116,
193
+ "mean": 37.100000001490116,
194
+ "max": 37.100000001490116
195
+ }
196
+ }
197
+ },
198
+ "supportsFP16": true,
199
+ "adapter": {
200
+ "vendor": "apple",
201
+ "architecture": "metal-3",
202
+ "device": "",
203
+ "description": ""
204
+ },
205
+ "summary": {
206
+ "minMs": 36,
207
+ "medianMs": 36.30000000447035,
208
+ "meanMs": 36.3,
209
+ "p95Ms": 36.5,
210
+ "maxMs": 36.5
211
+ },
212
+ "messages": [],
213
+ "validation": {
214
+ "sampleCount": 6144,
215
+ "meanAbsoluteError": 0.0000011096847932397698,
216
+ "rootMeanSquaredError": 0.0000018071588418628667,
217
+ "maxAbsoluteError": 0.000013589859008789062,
218
+ "passed": true,
219
+ "thresholds": {
220
+ "maxMeanError": 0.0001,
221
+ "maxAbsoluteError": 0.001
222
+ }
223
+ }
224
+ },
225
+ {
226
+ "label": "WGSL FP32 Direct",
227
+ "bundle": "current",
228
+ "baseline": false,
229
+ "precision": "fp32",
230
+ "kernel": "direct",
231
+ "initializationMs": 37.600000001490116,
232
+ "timesMs": [
233
+ 63.29999999701977,
234
+ 63.29999999701977,
235
+ 63.400000005960464,
236
+ 63.29999999701977,
237
+ 63
238
+ ],
239
+ "executionProfile": {
240
+ "totalMs": 62.200309999999995,
241
+ "layers": [
242
+ {
243
+ "id": "input-pack",
244
+ "durationMs": 0.050415
245
+ },
246
+ {
247
+ "id": "enc_conv1a",
248
+ "durationMs": 1.240337
249
+ },
250
+ {
251
+ "id": "enc_conv1b",
252
+ "durationMs": 8.568573
253
+ },
254
+ {
255
+ "id": "pool1",
256
+ "durationMs": 0.48761
257
+ },
258
+ {
259
+ "id": "enc_conv2a",
260
+ "durationMs": 3.126112
261
+ },
262
+ {
263
+ "id": "enc_conv2b",
264
+ "durationMs": 5.391836
265
+ },
266
+ {
267
+ "id": "pool2",
268
+ "durationMs": 0.074414
269
+ },
270
+ {
271
+ "id": "enc_conv3a",
272
+ "durationMs": 1.079676
273
+ },
274
+ {
275
+ "id": "enc_conv3b",
276
+ "durationMs": 1.495954
277
+ },
278
+ {
279
+ "id": "pool3",
280
+ "durationMs": 0.018957
281
+ },
282
+ {
283
+ "id": "enc_conv4a",
284
+ "durationMs": 0.5754
285
+ },
286
+ {
287
+ "id": "enc_conv4b",
288
+ "durationMs": 0.839557
289
+ },
290
+ {
291
+ "id": "pool4",
292
+ "durationMs": 0.012292
293
+ },
294
+ {
295
+ "id": "enc_conv5a",
296
+ "durationMs": 0.321657
297
+ },
298
+ {
299
+ "id": "enc_conv5b",
300
+ "durationMs": 0.434737
301
+ },
302
+ {
303
+ "id": "dec_conv4a",
304
+ "durationMs": 1.667574
305
+ },
306
+ {
307
+ "id": "dec_conv4b",
308
+ "durationMs": 0.900514
309
+ },
310
+ {
311
+ "id": "dec_conv3a",
312
+ "durationMs": 3.457394
313
+ },
314
+ {
315
+ "id": "dec_conv3b",
316
+ "durationMs": 1.449163
317
+ },
318
+ {
319
+ "id": "dec_conv2a",
320
+ "durationMs": 6.764835
321
+ },
322
+ {
323
+ "id": "dec_conv2b",
324
+ "durationMs": 5.496249
325
+ },
326
+ {
327
+ "id": "dec_conv1a",
328
+ "durationMs": 9.602999
329
+ },
330
+ {
331
+ "id": "dec_conv1b",
332
+ "durationMs": 8.662778
333
+ },
334
+ {
335
+ "id": "dec_conv1c",
336
+ "durationMs": 0.481277
337
+ }
338
+ ]
339
+ },
340
+ "runtimeInfo": {
341
+ "configuredEngine": "wgsl",
342
+ "gpuEngine": "wgsl",
343
+ "precision": "fp32",
344
+ "kernel": {
345
+ "configured": "direct",
346
+ "maxSpatialInputBlocks": 0,
347
+ "subgroupsAvailable": false
348
+ },
349
+ "model": "oidn-unet-large-v1",
350
+ "modelFamily": "oidn-unet-large",
351
+ "inputChannels": 9,
352
+ "dynamicTile": {
353
+ "enabled": false,
354
+ "currentTileSize": 512,
355
+ "minTileSize": 256,
356
+ "maxTileSize": 512,
357
+ "targetTileTimeMs": 16
358
+ },
359
+ "lastExecution": {
360
+ "width": 512,
361
+ "height": 512,
362
+ "tileWidth": 512,
363
+ "tileHeight": 512,
364
+ "tileCount": 1,
365
+ "durationMs": 64,
366
+ "tileTimeMs": {
367
+ "min": 64,
368
+ "median": 64,
369
+ "mean": 64,
370
+ "max": 64
371
+ }
372
+ }
373
+ },
374
+ "supportsFP16": true,
375
+ "adapter": {
376
+ "vendor": "apple",
377
+ "architecture": "metal-3",
378
+ "device": "",
379
+ "description": ""
380
+ },
381
+ "summary": {
382
+ "minMs": 63,
383
+ "medianMs": 63.29999999701977,
384
+ "meanMs": 63.25999999940395,
385
+ "p95Ms": 63.400000005960464,
386
+ "maxMs": 63.400000005960464
387
+ },
388
+ "messages": [],
389
+ "validation": {
390
+ "sampleCount": 6144,
391
+ "meanAbsoluteError": 0.0000011096847932397698,
392
+ "rootMeanSquaredError": 0.0000018071588418628667,
393
+ "maxAbsoluteError": 0.000013589859008789062,
394
+ "passed": true,
395
+ "thresholds": {
396
+ "maxMeanError": 0.0001,
397
+ "maxAbsoluteError": 0.001
398
+ }
399
+ }
400
+ },
401
+ {
402
+ "label": "WGSL FP16 Direct",
403
+ "bundle": "current",
404
+ "baseline": false,
405
+ "precision": "fp16",
406
+ "kernel": "direct",
407
+ "initializationMs": 27.600000001490116,
408
+ "timesMs": [
409
+ 27.899999998509884,
410
+ 27.799999997019768,
411
+ 27.700000002980232,
412
+ 28,
413
+ 27.700000002980232
414
+ ],
415
+ "executionProfile": {
416
+ "totalMs": 27.068057,
417
+ "layers": [
418
+ {
419
+ "id": "input-pack",
420
+ "durationMs": 0.044164
421
+ },
422
+ {
423
+ "id": "enc_conv1a",
424
+ "durationMs": 0.621504
425
+ },
426
+ {
427
+ "id": "enc_conv1b",
428
+ "durationMs": 3.194639
429
+ },
430
+ {
431
+ "id": "pool1",
432
+ "durationMs": 0.344979
433
+ },
434
+ {
435
+ "id": "enc_conv2a",
436
+ "durationMs": 1.161679
437
+ },
438
+ {
439
+ "id": "enc_conv2b",
440
+ "durationMs": 2.002586
441
+ },
442
+ {
443
+ "id": "pool2",
444
+ "durationMs": 0.050497
445
+ },
446
+ {
447
+ "id": "enc_conv3a",
448
+ "durationMs": 0.677999
449
+ },
450
+ {
451
+ "id": "enc_conv3b",
452
+ "durationMs": 0.843074
453
+ },
454
+ {
455
+ "id": "pool3",
456
+ "durationMs": 0.017041
457
+ },
458
+ {
459
+ "id": "enc_conv4a",
460
+ "durationMs": 0.344396
461
+ },
462
+ {
463
+ "id": "enc_conv4b",
464
+ "durationMs": 0.535425
465
+ },
466
+ {
467
+ "id": "pool4",
468
+ "durationMs": 0.011332
469
+ },
470
+ {
471
+ "id": "enc_conv5a",
472
+ "durationMs": 0.183989
473
+ },
474
+ {
475
+ "id": "enc_conv5b",
476
+ "durationMs": 0.230278
477
+ },
478
+ {
479
+ "id": "dec_conv4a",
480
+ "durationMs": 0.947609
481
+ },
482
+ {
483
+ "id": "dec_conv4b",
484
+ "durationMs": 0.571924
485
+ },
486
+ {
487
+ "id": "dec_conv3a",
488
+ "durationMs": 1.697731
489
+ },
490
+ {
491
+ "id": "dec_conv3b",
492
+ "durationMs": 0.850823
493
+ },
494
+ {
495
+ "id": "dec_conv2a",
496
+ "durationMs": 2.973776
497
+ },
498
+ {
499
+ "id": "dec_conv2b",
500
+ "durationMs": 1.961422
501
+ },
502
+ {
503
+ "id": "dec_conv1a",
504
+ "durationMs": 4.508641
505
+ },
506
+ {
507
+ "id": "dec_conv1b",
508
+ "durationMs": 3.097936
509
+ },
510
+ {
511
+ "id": "dec_conv1c",
512
+ "durationMs": 0.194613
513
+ }
514
+ ]
515
+ },
516
+ "runtimeInfo": {
517
+ "configuredEngine": "wgsl",
518
+ "gpuEngine": "wgsl",
519
+ "precision": "fp16",
520
+ "kernel": {
521
+ "configured": "direct",
522
+ "maxSpatialInputBlocks": 40,
523
+ "subgroupsAvailable": false
524
+ },
525
+ "model": "oidn-unet-large-v1",
526
+ "modelFamily": "oidn-unet-large",
527
+ "inputChannels": 9,
528
+ "dynamicTile": {
529
+ "enabled": false,
530
+ "currentTileSize": 512,
531
+ "minTileSize": 256,
532
+ "maxTileSize": 512,
533
+ "targetTileTimeMs": 16
534
+ },
535
+ "lastExecution": {
536
+ "width": 512,
537
+ "height": 512,
538
+ "tileWidth": 512,
539
+ "tileHeight": 512,
540
+ "tileCount": 1,
541
+ "durationMs": 28.700000002980232,
542
+ "tileTimeMs": {
543
+ "min": 28.600000001490116,
544
+ "median": 28.600000001490116,
545
+ "mean": 28.600000001490116,
546
+ "max": 28.600000001490116
547
+ }
548
+ }
549
+ },
550
+ "supportsFP16": true,
551
+ "adapter": {
552
+ "vendor": "apple",
553
+ "architecture": "metal-3",
554
+ "device": "",
555
+ "description": ""
556
+ },
557
+ "summary": {
558
+ "minMs": 27.700000002980232,
559
+ "medianMs": 27.799999997019768,
560
+ "meanMs": 27.820000000298023,
561
+ "p95Ms": 28,
562
+ "maxMs": 28
563
+ },
564
+ "messages": [],
565
+ "validation": {
566
+ "sampleCount": 6144,
567
+ "meanAbsoluteError": 0.0010210334021394374,
568
+ "rootMeanSquaredError": 0.001609680379854656,
569
+ "maxAbsoluteError": 0.012395620346069336,
570
+ "passed": true,
571
+ "thresholds": {
572
+ "maxMeanError": 0.005,
573
+ "maxAbsoluteError": 0.05
574
+ }
575
+ }
576
+ },
577
+ {
578
+ "label": "WGSL FP16 Implicit GEMM",
579
+ "bundle": "current",
580
+ "baseline": false,
581
+ "precision": "fp16",
582
+ "kernel": "implicit-gemm",
583
+ "initializationMs": 30.299999997019768,
584
+ "timesMs": [
585
+ 29.200000002980232,
586
+ 29.19999999552965,
587
+ 29.200000002980232,
588
+ 29.19999999552965,
589
+ 29.30000000447035
590
+ ],
591
+ "executionProfile": {
592
+ "totalMs": 28.770743999999997,
593
+ "layers": [
594
+ {
595
+ "id": "input-pack",
596
+ "durationMs": 0.043997
597
+ },
598
+ {
599
+ "id": "enc_conv1a",
600
+ "durationMs": 0.6835
601
+ },
602
+ {
603
+ "id": "enc_conv1b",
604
+ "durationMs": 2.931029
605
+ },
606
+ {
607
+ "id": "pool1",
608
+ "durationMs": 0.348604
609
+ },
610
+ {
611
+ "id": "enc_conv2a",
612
+ "durationMs": 1.232384
613
+ },
614
+ {
615
+ "id": "enc_conv2b",
616
+ "durationMs": 1.765017
617
+ },
618
+ {
619
+ "id": "pool2",
620
+ "durationMs": 0.050122
621
+ },
622
+ {
623
+ "id": "enc_conv3a",
624
+ "durationMs": 0.617837
625
+ },
626
+ {
627
+ "id": "enc_conv3b",
628
+ "durationMs": 0.794452
629
+ },
630
+ {
631
+ "id": "pool3",
632
+ "durationMs": 0.017249
633
+ },
634
+ {
635
+ "id": "enc_conv4a",
636
+ "durationMs": 0.326021
637
+ },
638
+ {
639
+ "id": "enc_conv4b",
640
+ "durationMs": 0.509677
641
+ },
642
+ {
643
+ "id": "pool4",
644
+ "durationMs": 0.008416
645
+ },
646
+ {
647
+ "id": "enc_conv5a",
648
+ "durationMs": 0.231527
649
+ },
650
+ {
651
+ "id": "enc_conv5b",
652
+ "durationMs": 0.298648
653
+ },
654
+ {
655
+ "id": "dec_conv4a",
656
+ "durationMs": 1.043728
657
+ },
658
+ {
659
+ "id": "dec_conv4b",
660
+ "durationMs": 0.507969
661
+ },
662
+ {
663
+ "id": "dec_conv3a",
664
+ "durationMs": 1.904218
665
+ },
666
+ {
667
+ "id": "dec_conv3b",
668
+ "durationMs": 0.935235
669
+ },
670
+ {
671
+ "id": "dec_conv2a",
672
+ "durationMs": 3.660818
673
+ },
674
+ {
675
+ "id": "dec_conv2b",
676
+ "durationMs": 1.883677
677
+ },
678
+ {
679
+ "id": "dec_conv1a",
680
+ "durationMs": 5.852393
681
+ },
682
+ {
683
+ "id": "dec_conv1b",
684
+ "durationMs": 2.931988
685
+ },
686
+ {
687
+ "id": "dec_conv1c",
688
+ "durationMs": 0.192238
689
+ }
690
+ ]
691
+ },
692
+ "runtimeInfo": {
693
+ "configuredEngine": "wgsl",
694
+ "gpuEngine": "wgsl",
695
+ "precision": "fp16",
696
+ "kernel": {
697
+ "configured": "implicit-gemm",
698
+ "maxSpatialInputBlocks": 40,
699
+ "subgroupsAvailable": false
700
+ },
701
+ "model": "oidn-unet-large-v1",
702
+ "modelFamily": "oidn-unet-large",
703
+ "inputChannels": 9,
704
+ "dynamicTile": {
705
+ "enabled": false,
706
+ "currentTileSize": 512,
707
+ "minTileSize": 256,
708
+ "maxTileSize": 512,
709
+ "targetTileTimeMs": 16
710
+ },
711
+ "lastExecution": {
712
+ "width": 512,
713
+ "height": 512,
714
+ "tileWidth": 512,
715
+ "tileHeight": 512,
716
+ "tileCount": 1,
717
+ "durationMs": 30.399999998509884,
718
+ "tileTimeMs": {
719
+ "min": 30.399999998509884,
720
+ "median": 30.399999998509884,
721
+ "mean": 30.399999998509884,
722
+ "max": 30.399999998509884
723
+ }
724
+ }
725
+ },
726
+ "supportsFP16": true,
727
+ "adapter": {
728
+ "vendor": "apple",
729
+ "architecture": "metal-3",
730
+ "device": "",
731
+ "description": ""
732
+ },
733
+ "summary": {
734
+ "minMs": 29.19999999552965,
735
+ "medianMs": 29.200000002980232,
736
+ "meanMs": 29.220000000298022,
737
+ "p95Ms": 29.30000000447035,
738
+ "maxMs": 29.30000000447035
739
+ },
740
+ "messages": [],
741
+ "validation": {
742
+ "sampleCount": 6144,
743
+ "meanAbsoluteError": 0.001559715069864372,
744
+ "rootMeanSquaredError": 0.0025477948380839928,
745
+ "maxAbsoluteError": 0.04479837417602539,
746
+ "passed": true,
747
+ "thresholds": {
748
+ "maxMeanError": 0.005,
749
+ "maxAbsoluteError": 0.05
750
+ }
751
+ }
752
+ },
753
+ {
754
+ "label": "WGSL FP16 Spatial (experimental)",
755
+ "bundle": "current",
756
+ "baseline": false,
757
+ "precision": "fp16",
758
+ "kernel": "spatial",
759
+ "initializationMs": 28.30000000447035,
760
+ "timesMs": [
761
+ 61.399999998509884,
762
+ 62.100000001490116,
763
+ 61.69999999552965,
764
+ 61.600000001490116,
765
+ 62
766
+ ],
767
+ "executionProfile": {
768
+ "totalMs": 61.423213000000004,
769
+ "layers": [
770
+ {
771
+ "id": "input-pack",
772
+ "durationMs": 0.043832
773
+ },
774
+ {
775
+ "id": "enc_conv1a",
776
+ "durationMs": 0.717853
777
+ },
778
+ {
779
+ "id": "enc_conv1b",
780
+ "durationMs": 5.429292
781
+ },
782
+ {
783
+ "id": "pool1",
784
+ "durationMs": 0.355989
785
+ },
786
+ {
787
+ "id": "enc_conv2a",
788
+ "durationMs": 2.117644
789
+ },
790
+ {
791
+ "id": "enc_conv2b",
792
+ "durationMs": 4.407325
793
+ },
794
+ {
795
+ "id": "pool2",
796
+ "durationMs": 0.050124
797
+ },
798
+ {
799
+ "id": "enc_conv3a",
800
+ "durationMs": 1.542328
801
+ },
802
+ {
803
+ "id": "enc_conv3b",
804
+ "durationMs": 2.957327
805
+ },
806
+ {
807
+ "id": "pool3",
808
+ "durationMs": 0.017
809
+ },
810
+ {
811
+ "id": "enc_conv4a",
812
+ "durationMs": 1.363166
813
+ },
814
+ {
815
+ "id": "enc_conv4b",
816
+ "durationMs": 0.526526
817
+ },
818
+ {
819
+ "id": "pool4",
820
+ "durationMs": 0.010708
821
+ },
822
+ {
823
+ "id": "enc_conv5a",
824
+ "durationMs": 0.179577
825
+ },
826
+ {
827
+ "id": "enc_conv5b",
828
+ "durationMs": 0.237493
829
+ },
830
+ {
831
+ "id": "dec_conv4a",
832
+ "durationMs": 0.946013
833
+ },
834
+ {
835
+ "id": "dec_conv4b",
836
+ "durationMs": 0.531443
837
+ },
838
+ {
839
+ "id": "dec_conv3a",
840
+ "durationMs": 1.699656
841
+ },
842
+ {
843
+ "id": "dec_conv3b",
844
+ "durationMs": 2.860622
845
+ },
846
+ {
847
+ "id": "dec_conv2a",
848
+ "durationMs": 2.973368
849
+ },
850
+ {
851
+ "id": "dec_conv2b",
852
+ "durationMs": 4.408491
853
+ },
854
+ {
855
+ "id": "dec_conv1a",
856
+ "durationMs": 22.280279
857
+ },
858
+ {
859
+ "id": "dec_conv1b",
860
+ "durationMs": 5.407085
861
+ },
862
+ {
863
+ "id": "dec_conv1c",
864
+ "durationMs": 0.360072
865
+ }
866
+ ]
867
+ },
868
+ "runtimeInfo": {
869
+ "configuredEngine": "wgsl",
870
+ "gpuEngine": "wgsl",
871
+ "precision": "fp16",
872
+ "kernel": {
873
+ "configured": "spatial",
874
+ "maxSpatialInputBlocks": 40,
875
+ "subgroupsAvailable": false
876
+ },
877
+ "model": "oidn-unet-large-v1",
878
+ "modelFamily": "oidn-unet-large",
879
+ "inputChannels": 9,
880
+ "dynamicTile": {
881
+ "enabled": false,
882
+ "currentTileSize": 512,
883
+ "minTileSize": 256,
884
+ "maxTileSize": 512,
885
+ "targetTileTimeMs": 16
886
+ },
887
+ "lastExecution": {
888
+ "width": 512,
889
+ "height": 512,
890
+ "tileWidth": 512,
891
+ "tileHeight": 512,
892
+ "tileCount": 1,
893
+ "durationMs": 63.100000001490116,
894
+ "tileTimeMs": {
895
+ "min": 63.100000001490116,
896
+ "median": 63.100000001490116,
897
+ "mean": 63.100000001490116,
898
+ "max": 63.100000001490116
899
+ }
900
+ }
901
+ },
902
+ "supportsFP16": true,
903
+ "adapter": {
904
+ "vendor": "apple",
905
+ "architecture": "metal-3",
906
+ "device": "",
907
+ "description": ""
908
+ },
909
+ "summary": {
910
+ "minMs": 61.399999998509884,
911
+ "medianMs": 61.69999999552965,
912
+ "meanMs": 61.75999999940395,
913
+ "p95Ms": 62.100000001490116,
914
+ "maxMs": 62.100000001490116
915
+ },
916
+ "messages": [],
917
+ "validation": {
918
+ "sampleCount": 6144,
919
+ "meanAbsoluteError": 0.0010210334021394374,
920
+ "rootMeanSquaredError": 0.001609680379854656,
921
+ "maxAbsoluteError": 0.012395620346069336,
922
+ "passed": true,
923
+ "thresholds": {
924
+ "maxMeanError": 0.005,
925
+ "maxAbsoluteError": 0.05
926
+ }
927
+ }
928
+ },
929
+ {
930
+ "label": "WGSL FP16 Subgroup (experimental)",
931
+ "bundle": "current",
932
+ "baseline": false,
933
+ "precision": "fp16",
934
+ "kernel": "subgroup",
935
+ "initializationMs": 29.19999999552965,
936
+ "timesMs": [
937
+ 29.299999997019768,
938
+ 29.600000001490116,
939
+ 29.299999997019768,
940
+ 29.600000001490116,
941
+ 29.5
942
+ ],
943
+ "executionProfile": {
944
+ "totalMs": 29.052977,
945
+ "layers": [
946
+ {
947
+ "id": "input-pack",
948
+ "durationMs": 0.044914
949
+ },
950
+ {
951
+ "id": "enc_conv1a",
952
+ "durationMs": 0.773328
953
+ },
954
+ {
955
+ "id": "enc_conv1b",
956
+ "durationMs": 3.474454
957
+ },
958
+ {
959
+ "id": "pool1",
960
+ "durationMs": 0.341979
961
+ },
962
+ {
963
+ "id": "enc_conv2a",
964
+ "durationMs": 1.435662
965
+ },
966
+ {
967
+ "id": "enc_conv2b",
968
+ "durationMs": 2.159119
969
+ },
970
+ {
971
+ "id": "pool2",
972
+ "durationMs": 0.050206
973
+ },
974
+ {
975
+ "id": "enc_conv3a",
976
+ "durationMs": 0.740205
977
+ },
978
+ {
979
+ "id": "enc_conv3b",
980
+ "durationMs": 0.92936
981
+ },
982
+ {
983
+ "id": "pool3",
984
+ "durationMs": 0.017666
985
+ },
986
+ {
987
+ "id": "enc_conv4a",
988
+ "durationMs": 0.385185
989
+ },
990
+ {
991
+ "id": "enc_conv4b",
992
+ "durationMs": 0.567091
993
+ },
994
+ {
995
+ "id": "pool4",
996
+ "durationMs": 0.010541
997
+ },
998
+ {
999
+ "id": "enc_conv5a",
1000
+ "durationMs": 0.201072
1001
+ },
1002
+ {
1003
+ "id": "enc_conv5b",
1004
+ "durationMs": 0.261109
1005
+ },
1006
+ {
1007
+ "id": "dec_conv4a",
1008
+ "durationMs": 0.957524
1009
+ },
1010
+ {
1011
+ "id": "dec_conv4b",
1012
+ "durationMs": 0.568756
1013
+ },
1014
+ {
1015
+ "id": "dec_conv3a",
1016
+ "durationMs": 1.85472
1017
+ },
1018
+ {
1019
+ "id": "dec_conv3b",
1020
+ "durationMs": 0.926777
1021
+ },
1022
+ {
1023
+ "id": "dec_conv2a",
1024
+ "durationMs": 3.110852
1025
+ },
1026
+ {
1027
+ "id": "dec_conv2b",
1028
+ "durationMs": 2.087373
1029
+ },
1030
+ {
1031
+ "id": "dec_conv1a",
1032
+ "durationMs": 4.57872
1033
+ },
1034
+ {
1035
+ "id": "dec_conv1b",
1036
+ "durationMs": 3.350295
1037
+ },
1038
+ {
1039
+ "id": "dec_conv1c",
1040
+ "durationMs": 0.226069
1041
+ }
1042
+ ]
1043
+ },
1044
+ "runtimeInfo": {
1045
+ "configuredEngine": "wgsl",
1046
+ "gpuEngine": "wgsl",
1047
+ "precision": "fp16",
1048
+ "kernel": {
1049
+ "configured": "subgroup",
1050
+ "maxSpatialInputBlocks": 40,
1051
+ "subgroupsAvailable": true
1052
+ },
1053
+ "model": "oidn-unet-large-v1",
1054
+ "modelFamily": "oidn-unet-large",
1055
+ "inputChannels": 9,
1056
+ "dynamicTile": {
1057
+ "enabled": false,
1058
+ "currentTileSize": 512,
1059
+ "minTileSize": 256,
1060
+ "maxTileSize": 512,
1061
+ "targetTileTimeMs": 16
1062
+ },
1063
+ "lastExecution": {
1064
+ "width": 512,
1065
+ "height": 512,
1066
+ "tileWidth": 512,
1067
+ "tileHeight": 512,
1068
+ "tileCount": 1,
1069
+ "durationMs": 31,
1070
+ "tileTimeMs": {
1071
+ "min": 31,
1072
+ "median": 31,
1073
+ "mean": 31,
1074
+ "max": 31
1075
+ }
1076
+ }
1077
+ },
1078
+ "supportsFP16": true,
1079
+ "adapter": {
1080
+ "vendor": "apple",
1081
+ "architecture": "metal-3",
1082
+ "device": "",
1083
+ "description": ""
1084
+ },
1085
+ "summary": {
1086
+ "minMs": 29.299999997019768,
1087
+ "medianMs": 29.5,
1088
+ "meanMs": 29.459999999403955,
1089
+ "p95Ms": 29.600000001490116,
1090
+ "maxMs": 29.600000001490116
1091
+ },
1092
+ "messages": [],
1093
+ "validation": {
1094
+ "sampleCount": 6144,
1095
+ "meanAbsoluteError": 0.0010210334021394374,
1096
+ "rootMeanSquaredError": 0.001609680379854656,
1097
+ "maxAbsoluteError": 0.012395620346069336,
1098
+ "passed": true,
1099
+ "thresholds": {
1100
+ "maxMeanError": 0.005,
1101
+ "maxAbsoluteError": 0.05
1102
+ }
1103
+ }
1104
+ },
1105
+ {
1106
+ "label": "WebNN FP16 (experimental)",
1107
+ "bundle": "current",
1108
+ "baseline": false,
1109
+ "precision": "fp16",
1110
+ "engine": "webnn",
1111
+ "skipped": "Error: WebNN FP16 WebGPU interop failed: NotSupportedError: Failed to execute 'createExportableTensor' on 'MLContext': WebGPU Interop is not supported.",
1112
+ "messages": []
1113
+ }
1114
+ ]
1115
+ }