File size: 24,710 Bytes
4cb21c5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
{
  "op": "ai.onnx.Col2Im",
  "fixtureArrays": {
    "ort_simple4d_nchw_input_input": [1, 6, 11, 16, 21, 2, 7, 12, 17, 22, 3, 8, 13, 18, 23, 4, 9, 14, 19, 24, 5, 10, 15, 20, 25]
  },
  "cases": [
    {
      "name": "nchw_k1_fast_copy_multichannel",
      "attrs": {},
      "inputs": {
        "input": { "dtype": "float32", "shape": [1, 2, 12], "data": { "kind": "linspace", "start": -3.0, "end": 8.5 } },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 4] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [1, 1] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 2, 3, 4], "tolerance": 0 } }
    },
    {
      "name": "f32_overlapping_subnormal_accumulation_2d_gpu_gap",
      "provenance": {
        "source": "onnxruntime/test/providers/cpu/tensor/col2im_test.cc",
        "test": "Col2ImTest.TwoDimensional",
        "notes": "Overlapping Col2Im windows sum finite positive subnormal column values; the accumulated image pixels should remain nonzero."
      },
      "attrs": {},
      "inputs": {
        "input": { "dtype": "float32", "shape": [1, 4, 4], "data": { "kind": "constant", "value": 1e-40 } },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 3] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 2] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 3, 3], "tolerance": 0 } },
      "skipGpu": {
        "category": "permanent",
        "reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes f32 subnormals to zero (FTZ); subnormal-magnitude values cannot survive the GPU arithmetic path."
      }
    },
    {
      "name": "f32_overlapping_subnormal_accumulation_3d_gpu_gap",
      "provenance": {
        "source": "onnxruntime/test/providers/cpu/tensor/col2im_test.cc",
        "test": "Col2ImTest.ThreeDimensional",
        "notes": "3D companion for overlapping Col2Im accumulation of finite positive subnormal column values."
      },
      "attrs": {},
      "inputs": {
        "input": { "dtype": "float32", "shape": [1, 8, 8], "data": { "kind": "constant", "value": 1e-40 } },
        "image_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [3, 3, 3] } },
        "block_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [2, 2, 2] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 3, 3, 3], "tolerance": 0 } },
      "skipGpu": {
        "category": "permanent",
        "reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes f32 subnormals to zero (FTZ); subnormal-magnitude values cannot survive the GPU arithmetic path."
      }
    },
    {
      "name": "dispatch_cliff_nchw_over_8m_elements",
      "attrs": {},
      "inputs": {
        "input": { "dtype": "float32", "shape": [1, 128, 65792] },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [256, 257] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [1, 1] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 128, 256, 257], "tolerance": 0.0001 } }
    },
    {
      "name": "dispatch_cliff_ncdhw_over_8m_elements",
      "attrs": {},
      "inputs": {
        "input": { "dtype": "float32", "shape": [1, 128, 65536] },
        "image_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [64, 64, 16] } },
        "block_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [1, 1, 1] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 128, 64, 64, 16], "tolerance": 0.0001 } }
    },
    {
      "name": "overlapping_2x2_stride1",
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 4, 4],
          "data": {
            "kind": "values",
            "values": [1.0, 2.0, 3.0, 4.0, 10.0, 20.0, 30.0, 40.0, 100.0, 200.0, 300.0, 400.0, 1000.0, 2000.0, 3000.0, 4000.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 3] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 2] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 3, 3], "tolerance": 0.00001 } }
    },
    {
      "name": "stride2_no_overlap",
      "attrs": { "strides": [2, 2] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 4, 4],
          "data": {
            "kind": "values",
            "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [4, 4] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 2] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 4, 4], "tolerance": 0.00001 } }
    },
    {
      "name": "dilated_padded",
      "attrs": { "pads": [1, 1, 1, 1], "dilations": [2, 2] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 4, 9],
          "data": { "kind": "fillFloat32", "scale": 0.5, "sinStep": 0.19, "cosStep": 0.07 }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 3] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 2] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 3, 3], "tolerance": 0.00001 } }
    },
    {
      "name": "block_1x5_onnx_backend",
      "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_col2im" },
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 5, 5],
          "data": {
            "kind": "values",
            "values": [1.0, 6.0, 11.0, 16.0, 21.0, 2.0, 7.0, 12.0, 17.0, 22.0, 3.0, 8.0, 13.0, 18.0, 23.0, 4.0, 9.0, 14.0, 19.0, 24.0, 5.0, 0.0, 15.0, 20.0, 25.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [5, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [1, 5] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 5, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "stride2_3x3_onnx_backend",
      "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_col2im_strides" },
      "attrs": { "strides": [2, 2] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 9, 4],
          "data": {
            "kind": "values",
            "values": [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [5, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 3] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 5, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "pads_width1_onnx_backend",
      "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_col2im_pads" },
      "attrs": { "pads": [0, 1, 0, 1] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 5, 15],
          "data": {
            "kind": "values",
            "values": [1.0, 6.0, 11.0, 16.0, 21.0, 26.0, 31.0, 36.0, 41.0, 46.0, 51.0, 56.0, 61.0, 66.0, 71.0, 2.0, 7.0, 12.0, 17.0, 22.0, 27.0, 32.0, 37.0, 42.0, 47.0, 52.0, 57.0, 62.0, 67.0, 72.0, 3.0, 8.0, 13.0, 18.0, 23.0, 28.0, 33.0, 38.0, 43.0, 48.0, 53.0, 58.0, 63.0, 68.0, 73.0, 4.0, 9.0, 14.0, 19.0, 24.0, 29.0, 34.0, 39.0, 44.0, 49.0, 54.0, 59.0, 64.0, 69.0, 74.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [5, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [1, 5] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 5, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "dilation_width5_onnx_backend",
      "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_col2im_dilations" },
      "attrs": { "dilations": [1, 5] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 4, 5],
          "data": {
            "kind": "values",
            "values": [1.0, 5.0, 9.0, 13.0, 17.0, 2.0, 6.0, 10.0, 14.0, 18.0, 3.0, 7.0, 11.0, 15.0, 19.0, 4.0, 8.0, 12.0, 16.0, 20.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [6, 6] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 2] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 6, 6], "tolerance": 0.00001 } }
    },
    {
      "name": "two_channels_stride2_no_overlap",
      "attrs": { "strides": [2, 2] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 8, 4],
          "data": {
            "kind": "values",
            "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [4, 4] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 2] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 2, 4, 4], "tolerance": 0.00001 } }
    },
    {
      "name": "two_images_three_channels_non_square_ort",
      "provenance": {
        "source": "onnxruntime/test/providers/cpu/tensor/col2im_test.cc",
        "test": "Col2ImOpTest.With2Images3channelsNonSquare4dNCHW"
      },
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [2, 15, 4],
          "data": { "kind": "fillFloat32", "scale": 0.25, "sinStep": 0.17, "cosStep": 0.11 }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [4, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [1, 5] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [2, 3, 4, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "two_images_two_channels_dilated_padded_stride_ort",
      "provenance": {
        "source": "onnxruntime/test/providers/cpu/tensor/col2im_test.cc",
        "test": "Col2ImOpTest.With2Images2channelsNonSquareDilationPadStride4dNCHW"
      },
      "attrs": { "strides": [2, 2], "pads": [2, 2, 2, 2], "dilations": [2, 2] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [2, 4, 16],
          "data": {
            "kind": "values",
            "values": [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 3.0, 5.0, 0.0, 11.0, 13.0, 15.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 3.0, 5.0, 0.0, 11.0, 13.0, 15.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 21.0, 23.0, 25.0, 0.0, 31.0, 33.0, 35.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 21.0, 23.0, 25.0, 0.0, 31.0, 33.0, 35.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 41.0, 43.0, 45.0, 0.0, 51.0, 53.0, 55.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 41.0, 43.0, 45.0, 0.0, 51.0, 53.0, 55.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 61.0, 63.0, 65.0, 0.0, 71.0, 73.0, 75.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 61.0, 63.0, 65.0, 0.0, 71.0, 73.0, 75.0, 0.0, 0.0, 0.0, 0.0, 0.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [4, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [1, 2] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [2, 2, 4, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "ort_simple4d_nchw",
      "provenance": {
        "source": "onnxruntime/test/providers/cpu/tensor/col2im_test.cc",
        "test": "Col2ImOpTest.Simple4dNCHW"
      },
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 5, 5],
          "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_simple4d_nchw_input_input" } }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [5, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [1, 5] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 5, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "ort_three_channels4d_nchw",
      "provenance": {
        "source": "onnxruntime/test/providers/cpu/tensor/col2im_test.cc",
        "test": "Col2ImOpTest.With3channels4dNCHW"
      },
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 15, 5],
          "data": {
            "kind": "values",
            "values": [1.0, 6.0, 11.0, 16.0, 21.0, 2.0, 7.0, 12.0, 17.0, 22.0, 3.0, 8.0, 13.0, 18.0, 23.0, 4.0, 9.0, 14.0, 19.0, 24.0, 5.0, 10.0, 15.0, 20.0, 25.0, 26.0, 31.0, 36.0, 41.0, 46.0, 27.0, 32.0, 37.0, 42.0, 47.0, 28.0, 33.0, 38.0, 43.0, 48.0, 29.0, 34.0, 39.0, 44.0, 49.0, 30.0, 35.0, 40.0, 45.0, 50.0, 51.0, 56.0, 61.0, 66.0, 71.0, 52.0, 57.0, 62.0, 67.0, 72.0, 53.0, 58.0, 63.0, 68.0, 73.0, 54.0, 59.0, 64.0, 69.0, 74.0, 55.0, 60.0, 65.0, 70.0, 75.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [5, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [1, 5] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 3, 5, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "ort_two_images_three_channels4d_nchw",
      "provenance": {
        "source": "onnxruntime/test/providers/cpu/tensor/col2im_test.cc",
        "test": "Col2ImOpTest.With2Images3channels4dNCHW"
      },
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [2, 15, 5],
          "data": {
            "kind": "values",
            "values": [1.0, 6.0, 11.0, 16.0, 21.0, 2.0, 7.0, 12.0, 17.0, 22.0, 3.0, 8.0, 13.0, 18.0, 23.0, 4.0, 9.0, 14.0, 19.0, 24.0, 5.0, 10.0, 15.0, 20.0, 25.0, 26.0, 31.0, 36.0, 41.0, 46.0, 27.0, 32.0, 37.0, 42.0, 47.0, 28.0, 33.0, 38.0, 43.0, 48.0, 29.0, 34.0, 39.0, 44.0, 49.0, 30.0, 35.0, 40.0, 45.0, 50.0, 51.0, 56.0, 61.0, 66.0, 71.0, 52.0, 57.0, 62.0, 67.0, 72.0, 53.0, 58.0, 63.0, 68.0, 73.0, 54.0, 59.0, 64.0, 69.0, 74.0, 55.0, 60.0, 65.0, 70.0, 75.0, 76.0, 81.0, 86.0, 91.0, 96.0, 77.0, 82.0, 87.0, 92.0, 97.0, 78.0, 83.0, 88.0, 93.0, 98.0, 79.0, 84.0, 89.0, 94.0, 99.0, 80.0, 85.0, 90.0, 95.0, 100.0, 101.0, 106.0, 111.0, 116.0, 121.0, 102.0, 107.0, 112.0, 117.0, 122.0, 103.0, 108.0, 113.0, 118.0, 123.0, 104.0, 109.0, 114.0, 119.0, 124.0, 105.0, 110.0, 115.0, 120.0, 125.0, 126.0, 131.0, 136.0, 141.0, 146.0, 127.0, 132.0, 137.0, 142.0, 147.0, 128.0, 133.0, 138.0, 143.0, 148.0, 129.0, 134.0, 139.0, 144.0, 149.0, 130.0, 135.0, 140.0, 145.0, 150.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [5, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [1, 5] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [2, 3, 5, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "onnx_backend_5d_ncdhw",
      "provenance": {
        "source": "cmake/external/onnx/onnx/backend/test/data/node/test_col2im_5d",
        "notes": "Official image_shape and block_shape tensors are int64; this framework stores their checked nonnegative values as uint32."
      },
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 10, 12],
          "data": {
            "kind": "values",
            "values": [1.0, 6.0, 11.0, 16.0, 21.0, 26.0, 31.0, 36.0, 41.0, 46.0, 51.0, 56.0, 2.0, 7.0, 12.0, 17.0, 22.0, 27.0, 32.0, 37.0, 42.0, 47.0, 52.0, 57.0, 3.0, 8.0, 13.0, 18.0, 23.0, 28.0, 33.0, 38.0, 43.0, 48.0, 53.0, 58.0, 4.0, 9.0, 14.0, 19.0, 24.0, 29.0, 34.0, 39.0, 44.0, 49.0, 54.0, 59.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 61.0, 66.0, 71.0, 76.0, 81.0, 86.0, 91.0, 96.0, 101.0, 106.0, 111.0, 116.0, 62.0, 67.0, 72.0, 77.0, 82.0, 87.0, 92.0, 97.0, 102.0, 107.0, 112.0, 117.0, 63.0, 68.0, 73.0, 78.0, 83.0, 88.0, 93.0, 98.0, 103.0, 108.0, 113.0, 118.0, 64.0, 69.0, 74.0, 79.0, 84.0, 89.0, 94.0, 99.0, 104.0, 109.0, 114.0, 119.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 105.0, 110.0, 115.0, 120.0]
          }
        },
        "image_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [3, 4, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [1, 1, 5] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 2, 3, 4, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "ort_simple5d_ncdhw",
      "provenance": {
        "source": "onnxruntime/test/providers/cpu/tensor/col2im_test.cc",
        "test": "Col2ImOpTest.Simple5dNCHWD",
        "notes": "ORT's int64 image_shape and block_shape inputs are represented as checked uint32 metadata tensors in this framework."
      },
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 5, 5],
          "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_simple4d_nchw_input_input" } }
        },
        "image_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [1, 5, 5] } },
        "block_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [1, 1, 5] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 1, 5, 5], "tolerance": 0.00001 } }
    },
    {
      "name": "ort_strides5d_ncdhw",
      "provenance": {
        "source": "onnxruntime/test/providers/cpu/tensor/col2im_test.cc",
        "test": "Col2ImOpTest.WithStrides5dNCHWD",
        "notes": "ORT's int64 image_shape and block_shape inputs are represented as checked uint32 metadata tensors in this framework."
      },
      "attrs": { "strides": [2, 2, 2] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 1, 8],
          "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
        },
        "image_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [4, 4, 4] } },
        "block_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [1, 1, 1] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 4, 4, 4], "tolerance": 0.00001 } }
    },
    {
      "name": "empty_zero_dim",
      "attrs": {},
      "inputs": {
        "input": { "dtype": "float32", "shape": [0, 4, 4], "data": { "kind": "values", "values": [] } },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 3] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [2, 2] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [0, 1, 3, 3], "tolerance": 0 } }
    },
    {
      "name": "depth_pad1_5d_ncdhw",
      "attrs": { "pads": [1, 0, 0, 1, 0, 0] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 2, 80],
          "data": { "kind": "fillFloat32", "scale": 0.5, "sinStep": 0.21, "cosStep": 0.09 }
        },
        "image_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [4, 4, 4] } },
        "block_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [2, 1, 1] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 4, 4, 4], "tolerance": 0.00001 } }
    },
    {
      "name": "depth_dilation2_5d_ncdhw",
      "attrs": { "dilations": [2, 1, 1] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 2, 48],
          "data": { "kind": "fillFloat32", "scale": 0.5, "sinStep": 0.23, "cosStep": 0.13 }
        },
        "image_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [5, 4, 4] } },
        "block_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [2, 1, 1] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 5, 4, 4], "tolerance": 0.00001 } }
    },
    {
      "name": "overlapping_3x3_two_channels",
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 18, 16],
          "data": { "kind": "fillFloat32", "scale": 0.25, "sinStep": 0.17, "cosStep": 0.11 }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [6, 6] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 3] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 2, 6, 6], "tolerance": 0.00001 } }
    },
    {
      "name": "depth_pad1_dilation2_5d_ncdhw",
      "attrs": { "pads": [1, 0, 0, 1, 0, 0], "dilations": [2, 1, 1] },
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 3, 32],
          "data": { "kind": "fillFloat32", "scale": 0.4, "sinStep": 0.19, "cosStep": 0.07 }
        },
        "image_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [4, 4, 4] } },
        "block_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [3, 1, 1] } }
      },
      "outputs": { "output": { "dtype": "float32", "shape": [1, 1, 4, 4, 4], "tolerance": 0.00001 } }
    },
    {
      "name": "nchw2d_3x3block_3x3image_single_contribution",
      "attrs": {},
      "inputs": {
        "input": {
          "dtype": "float32",
          "shape": [1, 9, 1],
          "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0] }
        },
        "image_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 3] } },
        "block_shape": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 3] } }
      },
      "outputs": {
        "output": {
          "dtype": "float32",
          "shape": [1, 1, 3, 3],
          "tolerance": 0,
          "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0] }
        }
      }
    },
    {
      "name": "ncdhw3d_dilationD3_zero_contribution_depth_slice",
      "attrs": { "dilations": [3, 1, 1] },
      "inputs": {
        "input": { "dtype": "float32", "shape": [1, 2, 18], "data": { "kind": "constant", "value": 1.0 } },
        "image_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [5, 3, 3] } },
        "block_shape": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [2, 1, 1] } }
      },
      "outputs": {
        "output": {
          "dtype": "float32",
          "shape": [1, 1, 5, 3, 3],
          "tolerance": 0,
          "data": {
            "kind": "values",
            "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
          }
        }
      }
    }
  ]
}