Xenova HF Staff commited on
Commit
28230ca
·
verified ·
1 Parent(s): fcc4309

sync 91d990483a17

Browse files
README.md CHANGED
@@ -18,15 +18,15 @@ See the [ONNX `LpPool` spec](https://onnx.ai/onnx/operators/onnx__LpPool.html) f
18
 
19
  ## Inputs
20
 
21
- | Name | Bind key | Logical dtype | Rank | Shape | Description | Presence |
22
  | --- | --- | --- | --- | --- | --- | --- |
23
- | `X` | `x` | `T` | — | — | Input tensor of shape `(N x C x D1 x ... x Dn)`; for images the spatial axes are `H` and `W`. | required |
24
 
25
  ## Outputs
26
 
27
- | Name | Bind key | Logical dtype | Rank | Shape | Description | Presence |
28
  | --- | --- | --- | --- | --- | --- | --- |
29
- | `Y` | `y` | `T` | same as `X` | derived; see description | Output tensor after Lp pooling; spatial dimensions vary with kernel, stride, and pad settings. | required |
30
 
31
  ## Attributes
32
 
@@ -34,13 +34,13 @@ Attributes and default values (overridable per request):
34
 
35
  | Attribute | Default | Description |
36
  | --- | --- | --- |
37
- | `p` | `2` | The exponent of the Lp norm used for pooling; default `2` gives Euclidean (L2) pooling. |
38
  | `auto_pad` | `"NOTSET"` | Deprecated auto-padding mode (`NOTSET`, `SAME_UPPER`, `SAME_LOWER`, or `VALID`). It cannot be used together with `pads`. |
39
  | `ceil_mode` | `0` | When non-zero, uses `ceil` instead of `floor` to compute output spatial dimensions. |
 
40
  | `kernel_shape` | — | Required kernel shape, with one positive value per spatial axis. |
41
- | `strides` | — | Stride along each spatial axis. When omitted, every stride is 1. |
42
  | `pads` | — | Padding at the beginning and end of each spatial axis, ordered as `[begin_0, ..., begin_n, end_0, ..., end_n]`. When omitted, every pad is 0. |
43
- | `dilations` | — | Dilation along each spatial axis. When omitted, every dilation is 1. |
44
 
45
  ## Type constraints
46
 
@@ -50,7 +50,7 @@ Attributes and default values (overridable per request):
50
 
51
  ## Files
52
 
53
- - [`metadata.json`](build/webgpu/metadata.json) — kernel metadata (id, digests, provenance)
54
  - [`manifest.json`](build/webgpu/manifest.json) — the op contract (source of truth)
55
  - [`test.json`](build/webgpu/test.json) — correctness cases
56
  - [`bench.json`](build/webgpu/bench.json) — benchmark + tuning cases
@@ -63,10 +63,14 @@ Attributes and default values (overridable per request):
63
 
64
  ## Use with `@huggingface/kernels`
65
 
66
- The loader derives every required output's shape and logical dtype from the manifest contract and this call.
67
- It then allocates the result tensors automatically.
 
 
 
68
 
69
  The `version: 1` option selects the published kernel contract; it is independent of any operator opset, contrib `since_version`, or model version.
 
70
 
71
  Replace each `*Data` placeholder with a typed array containing the corresponding input data.
72
 
 
18
 
19
  ## Inputs
20
 
21
+ | Name | Upstream name | Logical dtype | Rank | Shape | Description | Presence |
22
  | --- | --- | --- | --- | --- | --- | --- |
23
+ | `x` | `X` | `T` | — | — | Input tensor of shape `(N x C x D1 x ... x Dn)`; for images the spatial axes are `H` and `W`. | required |
24
 
25
  ## Outputs
26
 
27
+ | Name | Upstream name | Logical dtype | Rank | Shape | Description | Presence |
28
  | --- | --- | --- | --- | --- | --- | --- |
29
+ | `y` | `Y` | `T` | same as `x` | derived | Output tensor after Lp pooling; spatial dimensions vary with kernel, stride, and pad settings. | required |
30
 
31
  ## Attributes
32
 
 
34
 
35
  | Attribute | Default | Description |
36
  | --- | --- | --- |
 
37
  | `auto_pad` | `"NOTSET"` | Deprecated auto-padding mode (`NOTSET`, `SAME_UPPER`, `SAME_LOWER`, or `VALID`). It cannot be used together with `pads`. |
38
  | `ceil_mode` | `0` | When non-zero, uses `ceil` instead of `floor` to compute output spatial dimensions. |
39
+ | `dilations` | — | Dilation along each spatial axis. When omitted, every dilation is 1. |
40
  | `kernel_shape` | — | Required kernel shape, with one positive value per spatial axis. |
41
+ | `p` | `2` | The exponent of the Lp norm used for pooling; default `2` gives Euclidean (L2) pooling. |
42
  | `pads` | — | Padding at the beginning and end of each spatial axis, ordered as `[begin_0, ..., begin_n, end_0, ..., end_n]`. When omitted, every pad is 0. |
43
+ | `strides` | — | Stride along each spatial axis. When omitted, every stride is 1. |
44
 
45
  ## Type constraints
46
 
 
50
 
51
  ## Files
52
 
53
+ - [`metadata.json`](build/webgpu/metadata.json) — kernel metadata (id, digests, per-variant templates, provenance)
54
  - [`manifest.json`](build/webgpu/manifest.json) — the op contract (source of truth)
55
  - [`test.json`](build/webgpu/test.json) — correctness cases
56
  - [`bench.json`](build/webgpu/bench.json) — benchmark + tuning cases
 
63
 
64
  ## Use with `@huggingface/kernels`
65
 
66
+ ```sh
67
+ npm install --save-exact @huggingface/kernels@0.0.1-preview.2
68
+ ```
69
+
70
+ Required output shapes and logical data types are inferred from the supplied inputs and attributes; result tensors are allocated automatically.
71
 
72
  The `version: 1` option selects the published kernel contract; it is independent of any operator opset, contrib `since_version`, or model version.
73
+ It follows the `v1` branch as fixes land. To pin exact artifact bytes, pass a 40-character commit `revision` instead of `version`.
74
 
75
  Replace each `*Data` placeholder with a typed array containing the corresponding input data.
76
 
build/webgpu/bench.json CHANGED
@@ -1,5 +1,4 @@
1
  {
2
- "op": "ai.onnx.LpPool",
3
  "cases": [
4
  {
5
  "name": "nchw_8_32_64_64_k3",
@@ -103,8 +102,8 @@
103
  "name": "global-lppool-p2-rank5-serial-reduction-pathology",
104
  "preset": "stress",
105
  "provenance": {
106
- "source": "authored for variant coverage",
107
- "notes": "Realistic rank-5 global L2 pool that verifies global_window_parallel coverage and its feature-tier fallbacks."
108
  },
109
  "vars": { "batch": 1, "channels": 32, "inD": 32, "inH": 64, "inW": 64 },
110
  "attrs": { "p": 2, "kernel_shape": [32, 64, 64] },
@@ -131,6 +130,15 @@
131
  "inputs": { "x": { "dtype": "float32", "shape": [1, 64, 224, 224], "dist": "normal", "seed": 409, "scale": 2 } },
132
  "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 112, 112], "dist": "empty" } },
133
  "bench": { "metrics": [{ "type": "bandwidth", "value": "numel(shapes.x) * 4" }] }
 
 
 
 
 
 
 
 
 
134
  }
135
  ],
136
  "tunableSpace": { "WORKGROUP_SIZE": [64, 128, 256] }
 
1
  {
 
2
  "cases": [
3
  {
4
  "name": "nchw_8_32_64_64_k3",
 
102
  "name": "global-lppool-p2-rank5-serial-reduction-pathology",
103
  "preset": "stress",
104
  "provenance": {
105
+ "source": "synthetic benchmark",
106
+ "notes": "A realistic rank-5 global L2 pool measures the parallel global-window reduction across feature tiers."
107
  },
108
  "vars": { "batch": 1, "channels": 32, "inD": 32, "inH": 64, "inW": 64 },
109
  "attrs": { "p": 2, "kernel_shape": [32, 64, 64] },
 
130
  "inputs": { "x": { "dtype": "float32", "shape": [1, 64, 224, 224], "dist": "normal", "seed": 409, "scale": 2 } },
131
  "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 112, 112], "dist": "empty" } },
132
  "bench": { "metrics": [{ "type": "bandwidth", "value": "numel(shapes.x) * 4" }] }
133
+ },
134
+ {
135
+ "name": "lppool-f32-b1c512-20x20-k5s1p2-separable-floor",
136
+ "provenance": {
137
+ "notes": "A 5x5 window contains 25 elements, the minimum window size admitted by the separable route for this operator."
138
+ },
139
+ "attrs": { "p": 2, "kernel_shape": [5, 5], "strides": [1, 1], "pads": [2, 2, 2, 2] },
140
+ "inputs": { "x": { "dtype": "float32", "shape": [1, 512, 20, 20], "dist": "uniform" } },
141
+ "outputs": { "y": { "dtype": "float32", "shape": [1, 512, 20, 20], "dist": "empty" } }
142
  }
143
  ],
144
  "tunableSpace": { "WORKGROUP_SIZE": [64, 128, 256] }
build/webgpu/manifest.json CHANGED
@@ -2,32 +2,16 @@
2
  "domain": "ai.onnx",
3
  "name": "LpPool",
4
  "sinceVersion": 18,
5
- "description": "Applies Lp pooling over a spatial input tensor by computing the Lp norm within each kernel window and writing the result to the output. Output spatial dimensions are determined by the kernel size, strides, padding, and `ceil_mode`; `p` controls which norm is used (e.g. `p=1` for sum-of-absolutes, `p=2` for Euclidean).",
6
- "inputs": [
7
- {
8
- "role": "X",
9
- "dtype": "T",
10
- "description": "Input tensor of shape `(N x C x D1 x ... x Dn)`; for images the spatial axes are `H` and `W`."
11
- }
12
- ],
13
- "outputs": [
14
- {
15
- "role": "Y",
16
- "dtype": "T",
17
- "description": "Output tensor after Lp pooling; spatial dimensions vary with kernel, stride, and pad settings.",
18
- "rank": "ranks.X",
19
- "shape": "poolOutputShape"
20
- }
21
- ],
22
- "attributes": { "p": 2, "auto_pad": "NOTSET", "ceil_mode": 0 },
23
- "attributeDescriptions": {
24
- "p": "The exponent of the Lp norm used for pooling; default `2` gives Euclidean (L2) pooling.",
25
- "auto_pad": "Deprecated auto-padding mode (`NOTSET`, `SAME_UPPER`, `SAME_LOWER`, or `VALID`). It cannot be used together with `pads`.",
26
- "kernel_shape": "Required kernel shape, with one positive value per spatial axis.",
27
- "strides": "Stride along each spatial axis. When omitted, every stride is 1.",
28
- "pads": "Padding at the beginning and end of each spatial axis, ordered as `[begin_0, ..., begin_n, end_0, ..., end_n]`. When omitted, every pad is 0.",
29
- "dilations": "Dilation along each spatial axis. When omitted, every dilation is 1.",
30
- "ceil_mode": "When non-zero, uses `ceil` instead of `floor` to compute output spatial dimensions."
31
  },
32
  "attributeConstraints": {
33
  "auto_pad": { "values": ["NOTSET", "SAME_UPPER", "SAME_LOWER", "VALID"] },
@@ -35,12 +19,9 @@
35
  "kernel_shape": { "required": true }
36
  },
37
  "typeConstraints": { "T": ["float32", "float16"] },
38
- "args": {
39
- "x": { "kind": "tensor", "semantic": "X", "role": "x" },
40
- "y": { "kind": "tensor", "semantic": "Y", "role": "y" }
41
- },
42
  "derive": {
43
- "spatialRank": "ranks.X - 2",
44
  "kernelShapeLengthOk": "not has(attrs, \"kernel_shape\") or (attrs.kernel_shape | length) == spatialRank",
45
  "stridesLengthOk": "not has(attrs, \"strides\") or (attrs.strides | length) == spatialRank",
46
  "dilationsLengthOk": "not has(attrs, \"dilations\") or (attrs.dilations | length) == spatialRank",
@@ -60,317 +41,177 @@
60
  "padBack": "attrs.pads[spatialRank] if padsLengthOk and has(attrs, \"pads\") and spatialRank == 3 else 0",
61
  "padBottom": "attrs.pads[2 * spatialRank - 2] if padsLengthOk and has(attrs, \"pads\") and spatialRank >= 2 else 0",
62
  "padRight": "attrs.pads[2 * spatialRank - 1] if padsLengthOk and has(attrs, \"pads\") and spatialRank >= 1 else 0",
63
- "poolBaseOk": "f16Ok(dtypes.T) and attrs.p > 0 and ranks.X >= 3 and ranks.X <= 5 and ranks.Y == ranks.X and has(attrs, \"kernel_shape\") and kernelShapeLengthOk and stridesLengthOk and dilationsLengthOk and padsLengthOk and kernelD > 0 and kernelH > 0 and kernelW > 0 and strideD > 0 and strideH > 0 and strideW > 0 and dilationD > 0 and dilationH > 0 and dilationW > 0 and padFront >= 0 and padTop >= 0 and padLeft >= 0 and padBack >= 0 and padBottom >= 0 and padRight >= 0 and (attrs.auto_pad == \"NOTSET\" or not has(attrs, \"pads\")) and dim(shapes.Y, 0) == dim(shapes.X, 0) and dim(shapes.Y, 1) == dim(shapes.X, 1)",
64
- "explicitOutW": "min(ceil((dim(shapes.X, ranks.X - 1) + padLeft + padRight - ((kernelW - 1) * dilationW + 1)) / strideW) + 1, ceil((dim(shapes.X, ranks.X - 1) + padLeft) / strideW)) if attrs.ceil_mode != 0 else floor((dim(shapes.X, ranks.X - 1) + padLeft + padRight - ((kernelW - 1) * dilationW + 1)) / strideW) + 1",
65
- "explicitOutH": "min(ceil((dim(shapes.X, ranks.X - 2) + padTop + padBottom - ((kernelH - 1) * dilationH + 1)) / strideH) + 1, ceil((dim(shapes.X, ranks.X - 2) + padTop) / strideH)) if attrs.ceil_mode != 0 else floor((dim(shapes.X, ranks.X - 2) + padTop + padBottom - ((kernelH - 1) * dilationH + 1)) / strideH) + 1",
66
- "explicitOutD": "(min(ceil((dim(shapes.X, 2) + padFront + padBack - ((kernelD - 1) * dilationD + 1)) / strideD) + 1, ceil((dim(shapes.X, 2) + padFront) / strideD)) if attrs.ceil_mode != 0 else floor((dim(shapes.X, 2) + padFront + padBack - ((kernelD - 1) * dilationD + 1)) / strideD) + 1) if ranks.X == 5 else 0",
67
- "inferredOutW": "ceil(dim(shapes.X, ranks.X - 1) / strideW) if attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\" else explicitOutW",
68
- "inferredOutH": "ceil(dim(shapes.X, ranks.X - 2) / strideH) if attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\" else explicitOutH",
69
- "inferredOutD": "ceil(dim(shapes.X, 2) / strideD) if attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\" else explicitOutD",
70
- "poolOutputShape": "[dim(shapes.X, 0), dim(shapes.X, 1), inferredOutW] if ranks.X == 3 else ([dim(shapes.X, 0), dim(shapes.X, 1), inferredOutH, inferredOutW] if ranks.X == 4 else [dim(shapes.X, 0), dim(shapes.X, 1), inferredOutD, inferredOutH, inferredOutW])",
71
- "autoPadTotalH": "max(0, (dim(shapes.Y, 2) - 1) * strideH + ((kernelH - 1) * dilationH + 1) - dim(shapes.X, 2)) if ranks.X == 4 else 0",
72
- "autoPadTotalW": "max(0, (dim(shapes.Y, 3) - 1) * strideW + ((kernelW - 1) * dilationW + 1) - dim(shapes.X, 3)) if ranks.X == 4 else 0",
73
- "effectivePadH": "(floor(autoPadTotalH / 2) if attrs.auto_pad == \"SAME_UPPER\" else autoPadTotalH - floor(autoPadTotalH / 2)) if ranks.X == 4 and (attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\") else padTop",
74
- "effectivePadW": "(floor(autoPadTotalW / 2) if attrs.auto_pad == \"SAME_UPPER\" else autoPadTotalW - floor(autoPadTotalW / 2)) if ranks.X == 4 and (attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\") else padLeft",
75
- "globalWindowParallelCovered": "poolBaseOk and numel(shapes.Y) == dim(shapes.X, 0) * dim(shapes.X, 1) and numel(shapes.Y) <= device.limits.maxComputeWorkgroupsPerDimension and attrs.auto_pad == \"NOTSET\" and strideD == 1 and strideH == 1 and strideW == 1 and dilationD == 1 and dilationH == 1 and dilationW == 1 and padFront == 0 and padTop == 0 and padLeft == 0 and padBack == 0 and padBottom == 0 and padRight == 0 and ((ranks.X == 3 and kernelW == dim(shapes.X, 2)) or (ranks.X == 4 and kernelH == dim(shapes.X, 2) and kernelW == dim(shapes.X, 3)) or (ranks.X == 5 and kernelD == dim(shapes.X, 2) and kernelH == dim(shapes.X, 3) and kernelW == dim(shapes.X, 4)))",
76
- "separableTmpElements": "dim(shapes.X, 0) * dim(shapes.X, 1) * dim(shapes.X, 2) * dim(shapes.Y, 3)",
77
- "separableFits": "separableTmpElements * 4 <= min(device.limits.maxStorageBufferBindingSize, device.limits.maxBufferSize) and ceilDiv(separableTmpElements, tunables.WORKGROUP_SIZE) <= device.limits.maxComputeWorkgroupsPerDimension * device.limits.maxComputeWorkgroupsPerDimension"
 
 
 
78
  },
79
- "constants": { "usesF16": "dtypes.T == \"f16\"", "scalar": "dtypes.T" },
80
- "bindingSets": {
81
- "globalReduction": [
82
- { "name": "x", "arg": "x", "semantic": "X", "buffer": { "type": "read-only-storage" }, "elementType": "$xElem" },
83
- { "name": "y", "arg": "y", "semantic": "Y", "buffer": { "type": "storage" }, "elementType": "$scalar" },
84
- {
85
- "name": "params",
86
- "semantic": "kernel.params",
87
- "buffer": { "type": "uniform" },
88
- "struct": { "name": "Params", "fields": [{ "name": "spatial", "type": "u32", "value": "inner(shapes.X, 1)" }] }
89
- }
90
- ],
91
- "rank2Vec4": [
92
- { "name": "x", "arg": "x", "semantic": "X", "buffer": { "type": "read-only-storage" }, "elementType": "$xVec4" },
93
- { "name": "y", "arg": "y", "semantic": "Y", "buffer": { "type": "storage" }, "elementType": "$scalar" },
94
- {
95
- "name": "params",
96
- "semantic": "kernel.params",
97
- "buffer": { "type": "uniform" },
98
- "struct": {
99
- "name": "Params",
100
- "fields": [{ "name": "tileCount", "type": "u32", "value": "numel(shapes.Y) / 2" }]
101
- }
102
- }
103
- ],
104
- "flatDirect": [
105
- { "name": "x", "arg": "x", "semantic": "X", "buffer": { "type": "read-only-storage" }, "elementType": "$scalar" },
106
- { "name": "y", "arg": "y", "semantic": "Y", "buffer": { "type": "storage" }, "elementType": "$scalar" },
107
- {
108
- "name": "params",
109
- "semantic": "kernel.params",
110
- "buffer": { "type": "uniform" },
111
- "struct": { "name": "Params", "fields": [{ "name": "count", "type": "u32", "value": "numel(shapes.Y)" }] }
112
- }
113
- ],
114
- "rank1X4": [
115
- { "name": "x", "arg": "x", "semantic": "X", "buffer": { "type": "read-only-storage" }, "elementType": "$xVec4" },
116
- { "name": "y", "arg": "y", "semantic": "Y", "buffer": { "type": "storage" }, "elementType": "$scalar" },
117
- {
118
- "name": "params",
119
- "semantic": "kernel.params",
120
- "buffer": { "type": "uniform" },
121
- "struct": {
122
- "name": "Params",
123
- "fields": [
124
- {
125
- "name": "blockCount",
126
- "type": "u32",
127
- "value": "dim(shapes.X, 0) * dim(shapes.X, 1) * ceilDiv(dim(shapes.Y, 2), 4)"
128
- }
129
- ]
130
- }
131
- }
132
- ],
133
- "rank1Direct": [
134
- { "name": "x", "arg": "x", "semantic": "X", "buffer": { "type": "read-only-storage" }, "elementType": "$scalar" },
135
- { "name": "y", "arg": "y", "semantic": "Y", "buffer": { "type": "storage" }, "elementType": "$scalar" },
136
- {
137
- "name": "params",
138
- "semantic": "kernel.params",
139
- "buffer": { "type": "uniform" },
140
- "struct": {
141
- "name": "Params",
142
- "fields": [
143
- { "name": "channels", "type": "u32", "value": "dim(shapes.X, 1)" },
144
- { "name": "inW", "type": "u32", "value": "dim(shapes.X, 2)" },
145
- { "name": "outW", "type": "u32", "value": "dim(shapes.Y, 2)" },
146
- { "name": "kernelW", "type": "u32", "value": "kernelW" },
147
- { "name": "strideW", "type": "u32", "value": "strideW" },
148
- { "name": "dilationW", "type": "u32", "value": "dilationW" },
149
- { "name": "padW", "type": "i32", "value": "padLeft" },
150
- { "name": "p", "type": "f32", "value": "attrs.p" },
151
- { "name": "count", "type": "u32", "value": "numel(shapes.Y)" }
152
- ]
153
- }
154
- }
155
- ],
156
- "rank3Direct": [
157
- { "name": "x", "arg": "x", "semantic": "X", "buffer": { "type": "read-only-storage" }, "elementType": "$scalar" },
158
- { "name": "y", "arg": "y", "semantic": "Y", "buffer": { "type": "storage" }, "elementType": "$scalar" },
159
- {
160
- "name": "params",
161
- "semantic": "kernel.params",
162
- "buffer": { "type": "uniform" },
163
- "struct": {
164
- "name": "Params",
165
- "fields": [
166
- { "name": "channels", "type": "u32", "value": "dim(shapes.X, 1)" },
167
- { "name": "inD", "type": "u32", "value": "dim(shapes.X, 2)" },
168
- { "name": "inH", "type": "u32", "value": "dim(shapes.X, 3)" },
169
- { "name": "inW", "type": "u32", "value": "dim(shapes.X, 4)" },
170
- { "name": "outD", "type": "u32", "value": "dim(shapes.Y, 2)" },
171
- { "name": "outH", "type": "u32", "value": "dim(shapes.Y, 3)" },
172
- { "name": "outW", "type": "u32", "value": "dim(shapes.Y, 4)" },
173
- { "name": "kernelD", "type": "u32", "value": "kernelD" },
174
- { "name": "kernelH", "type": "u32", "value": "kernelH" },
175
- { "name": "kernelW", "type": "u32", "value": "kernelW" },
176
- { "name": "strideD", "type": "u32", "value": "strideD" },
177
- { "name": "strideH", "type": "u32", "value": "strideH" },
178
- { "name": "strideW", "type": "u32", "value": "strideW" },
179
- { "name": "dilationD", "type": "u32", "value": "dilationD" },
180
- { "name": "dilationH", "type": "u32", "value": "dilationH" },
181
- { "name": "dilationW", "type": "u32", "value": "dilationW" },
182
- { "name": "padD", "type": "i32", "value": "padFront" },
183
- { "name": "padH", "type": "i32", "value": "padTop" },
184
- { "name": "padW", "type": "i32", "value": "padLeft" },
185
- { "name": "p", "type": "f32", "value": "attrs.p" },
186
- { "name": "count", "type": "u32", "value": "numel(shapes.Y)" }
187
- ]
188
- }
189
- }
190
- ],
191
- "rank2Direct": [
192
- { "name": "x", "arg": "x", "semantic": "X", "buffer": { "type": "read-only-storage" }, "elementType": "$scalar" },
193
- { "name": "y", "arg": "y", "semantic": "Y", "buffer": { "type": "storage" }, "elementType": "$scalar" },
194
- {
195
- "name": "params",
196
- "semantic": "kernel.params",
197
- "buffer": { "type": "uniform" },
198
- "struct": {
199
- "name": "Params",
200
- "fields": [
201
- { "name": "channels", "type": "u32", "value": "dim(shapes.X, 1)" },
202
- { "name": "inH", "type": "u32", "value": "dim(shapes.X, 2)" },
203
- { "name": "inW", "type": "u32", "value": "dim(shapes.X, 3)" },
204
- { "name": "outH", "type": "u32", "value": "dim(shapes.Y, 2)" },
205
- { "name": "outW", "type": "u32", "value": "dim(shapes.Y, 3)" },
206
- { "name": "kernelH", "type": "u32", "value": "kernelH" },
207
- { "name": "kernelW", "type": "u32", "value": "kernelW" },
208
- { "name": "strideH", "type": "u32", "value": "strideH" },
209
- { "name": "strideW", "type": "u32", "value": "strideW" },
210
- { "name": "dilationH", "type": "u32", "value": "dilationH" },
211
- { "name": "dilationW", "type": "u32", "value": "dilationW" },
212
- { "name": "padH", "type": "i32", "value": "effectivePadH" },
213
- { "name": "padW", "type": "i32", "value": "effectivePadW" },
214
- { "name": "p", "type": "f32", "value": "attrs.p" },
215
- { "name": "count", "type": "u32", "value": "numel(shapes.Y)" }
216
- ]
217
- }
218
- }
219
- ],
220
- "rank2SeparableW": [
221
- { "name": "x", "arg": "x", "semantic": "X", "buffer": { "type": "read-only-storage" }, "elementType": "$scalar" },
222
- { "name": "tmp", "semantic": "tmp", "buffer": { "type": "storage" }, "elementType": "f32" },
223
- {
224
- "name": "params",
225
- "semantic": "kernel.params",
226
- "buffer": { "type": "uniform" },
227
- "struct": {
228
- "name": "Params",
229
- "fields": [
230
- { "name": "inH", "type": "u32", "value": "dim(shapes.X, 2)" },
231
- { "name": "inW", "type": "u32", "value": "dim(shapes.X, 3)" },
232
- { "name": "outW", "type": "u32", "value": "dim(shapes.Y, 3)" },
233
- { "name": "kernelW", "type": "u32", "value": "kernelW" },
234
- { "name": "strideW", "type": "u32", "value": "strideW" },
235
- { "name": "dilationW", "type": "u32", "value": "dilationW" },
236
- { "name": "padW", "type": "i32", "value": "effectivePadW" },
237
- { "name": "p", "type": "f32", "value": "attrs.p" },
238
- {
239
- "name": "tmpCount",
240
- "type": "u32",
241
- "value": "dim(shapes.X, 0) * dim(shapes.X, 1) * dim(shapes.X, 2) * dim(shapes.Y, 3)"
242
- }
243
- ]
244
- }
245
- }
246
- ],
247
- "rank2SeparableH": [
248
- { "name": "tmp", "semantic": "tmp", "buffer": { "type": "read-only-storage" }, "elementType": "f32" },
249
- { "name": "y", "arg": "y", "semantic": "Y", "buffer": { "type": "storage" }, "elementType": "$scalar" },
250
- {
251
- "name": "params",
252
- "semantic": "kernel.params",
253
- "buffer": { "type": "uniform" },
254
- "struct": {
255
- "name": "Params",
256
- "fields": [
257
- { "name": "inH", "type": "u32", "value": "dim(shapes.X, 2)" },
258
- { "name": "outH", "type": "u32", "value": "dim(shapes.Y, 2)" },
259
- { "name": "outW", "type": "u32", "value": "dim(shapes.Y, 3)" },
260
- { "name": "kernelH", "type": "u32", "value": "kernelH" },
261
- { "name": "strideH", "type": "u32", "value": "strideH" },
262
- { "name": "dilationH", "type": "u32", "value": "dilationH" },
263
- { "name": "padH", "type": "i32", "value": "effectivePadH" },
264
- { "name": "p", "type": "f32", "value": "attrs.p" },
265
- { "name": "count", "type": "u32", "value": "numel(shapes.Y)" }
266
- ]
267
- }
268
- }
269
- ]
270
  },
271
- "tunables": { "WORKGROUP_SIZE": 256, "SEPARABLE_MIN_WINDOW": 42 },
272
  "variants": [
273
  {
274
  "id": "global_window_parallel",
275
  "priority": 50,
276
  "when": ["globalWindowParallelCovered"],
277
- "constants": {
278
- "xElem": "(\"vec4<f16>\" if dtypes.T == \"f16\" else \"vec4<f32>\") if inner(shapes.X, 1) % 4 == 0 else dtypes.T"
279
  },
280
  "passes": [
281
  {
282
  "id": "main",
283
  "name": "LpPool.GlobalWindowParallel",
284
- "source": {
285
- "shader": "pool-global-reduction.wgsl.jinja",
286
- "inputs": {
287
- "op": "\"lp\"",
288
- "vec4": "inner(shapes.X, 1) % 4 == 0",
289
- "p": "attrs.p",
290
- "workgroupSize": "tunables.WORKGROUP_SIZE",
291
- "useSubgroups": "device.features.has(\"subgroups\")"
292
- }
293
  },
294
- "bindings": "globalReduction",
295
- "dispatch": { "x": "numel(shapes.Y)" }
 
 
 
 
296
  }
297
  ]
298
  },
299
  {
300
  "id": "nchw2d_k2s2_vec4",
301
  "priority": 30,
302
- "when": ["(attrs.auto_pad != \"SAME_UPPER\" and attrs.auto_pad != \"SAME_LOWER\")", "poolBaseOk", "ranks.X == 4", "kernelH == 2", "kernelW == 2", "strideH == 2", "strideW == 2", "dilationH == 1", "dilationW == 1", "padTop == 0", "padLeft == 0", "padBottom == 0", "padRight == 0", "attrs.ceil_mode == 0", "dim(shapes.X, 3) % 4 == 0", "dim(shapes.Y, 2) == floor(dim(shapes.X, 2) / 2)", "dim(shapes.Y, 3) == floor(dim(shapes.X, 3) / 2)", "dim(shapes.Y, 2) > 0", "dim(shapes.Y, 3) > 0"],
303
- "constants": { "xVec4": "\"vec4<f16>\" if dtypes.T == \"f16\" else \"vec4<f32>\"" },
304
  "passes": [
305
  {
306
  "id": "main",
307
  "name": "LpPool.Nchw2dK2s2Vec4",
308
- "source": {
309
- "shader": "pool2d-nchw-k2s2-vec4.wgsl.jinja",
310
- "inputs": {
311
- "op": "\"lp\"",
312
- "outH": "dim(shapes.Y, 2)",
313
- "outW": "dim(shapes.Y, 3)",
314
- "outWHalf": "floor(dim(shapes.Y, 3) / 2)",
315
- "inWVec4": "floor(dim(shapes.X, 3) / 4)",
316
- "inPlaneVec4": "floor(dim(shapes.X, 2) * dim(shapes.X, 3) / 4)",
317
- "p": "attrs.p"
318
- }
319
  },
320
- "bindings": "rank2Vec4",
321
- "dispatch": { "threads": "numel(shapes.Y) / 2", "workgroupSize": "tunables.WORKGROUP_SIZE" }
 
 
 
 
 
 
 
 
322
  }
323
  ]
324
  },
325
  {
326
  "id": "nchw2d_unrolled",
327
  "priority": 25,
328
- "when": ["(attrs.auto_pad != \"SAME_UPPER\" and attrs.auto_pad != \"SAME_LOWER\")", "poolBaseOk", "ranks.X == 4", "kernelH > 0", "kernelW > 0", "strideH > 0", "strideW > 0", "kernelH <= 3", "kernelW <= 3", "dilationH >= 1", "dilationW >= 1", "dim(shapes.Y, 2) > 0", "dim(shapes.Y, 3) > 0"],
329
  "passes": [
330
  {
331
  "id": "main",
332
  "name": "LpPool.Nchw2dUnrolled",
333
- "source": {
334
- "shader": "pool-window-unroll.wgsl.jinja",
335
- "inputs": {
336
- "op": "\"lp\"",
337
- "kernelH": "kernelH",
338
- "kernelW": "kernelW",
339
- "strideH": "strideH",
340
- "strideW": "strideW",
341
- "dilationH": "dilationH",
342
- "dilationW": "dilationW",
343
- "padTop": "padTop",
344
- "padLeft": "padLeft",
345
- "inH": "dim(shapes.X, 2)",
346
- "inW": "dim(shapes.X, 3)",
347
- "outH": "dim(shapes.Y, 2)",
348
- "outW": "dim(shapes.Y, 3)",
349
- "p": "attrs.p"
350
- }
351
  },
352
- "bindings": "flatDirect",
353
- "dispatch": { "threads": "numel(shapes.Y)", "workgroupSize": "tunables.WORKGROUP_SIZE" }
 
 
 
 
 
 
 
 
354
  }
355
  ]
356
  },
357
  {
358
  "id": "ncl1d_k4s2_p2_x4",
359
  "priority": 30,
360
- "when": ["poolBaseOk", "ranks.X == 3", "attrs.auto_pad == \"NOTSET\"", "attrs.p == 2", "kernelW == 4", "strideW == 2", "dilationW == 1", "padLeft == 0", "padRight == 0", "attrs.ceil_mode == 0", "dim(shapes.X, 2) % 4 == 0", "dim(shapes.Y, 2) == floor((dim(shapes.X, 2) - 4) / 2) + 1"],
361
- "constants": { "xVec4": "\"vec4<f16>\" if dtypes.T == \"f16\" else \"vec4<f32>\"" },
362
  "passes": [
363
  {
364
  "id": "main",
365
  "name": "LpPool.Ncl1dK4s2P2X4",
366
- "source": {
367
- "shader": "pool-ncl1d-x4.wgsl.jinja",
368
- "inputs": { "op": "\"lp\"", "inW": "dim(shapes.X, 2)", "outW": "dim(shapes.Y, 2)" }
369
- },
370
- "bindings": "rank1X4",
 
 
 
 
 
 
 
 
 
 
 
371
  "dispatch": {
372
- "threads": "dim(shapes.X, 0) * dim(shapes.X, 1) * ceilDiv(dim(shapes.Y, 2), 4)",
373
- "workgroupSize": "tunables.WORKGROUP_SIZE"
 
374
  }
375
  }
376
  ]
@@ -378,82 +219,196 @@
378
  {
379
  "id": "ncl1d",
380
  "priority": 10,
381
- "when": ["poolBaseOk", "ranks.X == 3", "kernelW > 0", "strideW > 0"],
382
- "constants": { "pIs1": "attrs.p == 1", "pIs2": "attrs.p == 2" },
383
  "passes": [
384
  {
385
  "id": "main",
386
  "name": "LpPool.NCL1d",
387
- "source": { "shader": "pool-window-nd.wgsl.jinja", "inputs": { "op": "\"lp\"", "spatialRank": 1 } },
388
- "bindings": "rank1Direct",
389
- "dispatch": { "threads": "numel(shapes.Y)", "workgroupSize": "tunables.WORKGROUP_SIZE" }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
390
  }
391
  ]
392
  },
393
  {
394
  "id": "nchw2d_separable",
395
  "priority": 22,
396
- "when": ["(attrs.auto_pad != \"SAME_UPPER\" and attrs.auto_pad != \"SAME_LOWER\")", "poolBaseOk", "ranks.X == 4", "kernelH > 0", "kernelW > 0", "strideH > 0", "strideW > 0", "kernelH > 1", "kernelW > 1", "kernelH * kernelW >= tunables.SEPARABLE_MIN_WINDOW", "separableFits"],
397
- "constants": { "pIs1": "attrs.p == 1", "pIs2": "attrs.p == 2" },
398
  "intermediates": [{ "id": "tmp", "dtype": "float32", "shape": "[separableTmpElements]" }],
399
  "passes": [
400
  {
401
  "id": "reduce_w",
402
  "name": "LpPool.SeparableW",
403
- "source": { "shader": "pool2d-nchw-separable.wgsl.jinja", "inputs": { "op": "\"lp\"", "axis": "\"w\"" } },
404
- "bindings": "rank2SeparableW",
405
- "dispatch": { "threads": "separableTmpElements", "workgroupSize": "tunables.WORKGROUP_SIZE" }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  },
407
  {
408
  "id": "reduce_h",
409
  "name": "LpPool.SeparableH",
410
- "source": { "shader": "pool2d-nchw-separable.wgsl.jinja", "inputs": { "op": "\"lp\"", "axis": "\"h\"" } },
411
- "bindings": "rank2SeparableH",
412
- "dispatch": { "threads": "numel(shapes.Y)", "workgroupSize": "tunables.WORKGROUP_SIZE" }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
413
  }
414
  ]
415
  },
416
  {
417
  "id": "nchw2d",
418
- "when": ["(attrs.auto_pad != \"SAME_UPPER\" and attrs.auto_pad != \"SAME_LOWER\")", "poolBaseOk", "ranks.X == 4", "kernelH > 0", "kernelW > 0", "strideH > 0", "strideW > 0"],
419
- "constants": { "pIs1": "attrs.p == 1", "pIs2": "attrs.p == 2" },
420
  "passes": [
421
  {
422
  "id": "main",
423
  "name": "LpPool.NCHW2d",
424
- "source": { "shader": "pool-window-nd.wgsl.jinja", "inputs": { "op": "\"lp\"", "spatialRank": 2 } },
425
- "bindings": "rank2Direct",
426
- "dispatch": { "threads": "numel(shapes.Y)", "workgroupSize": "tunables.WORKGROUP_SIZE" }
 
 
 
 
 
427
  }
428
  ]
429
  },
430
  {
431
  "id": "nchw2d_autopad",
432
  "priority": 15,
433
- "when": ["(attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\")", "poolBaseOk", "ranks.X == 4", "kernelH > 0", "kernelW > 0", "strideH > 0", "strideW > 0", "dim(shapes.Y, 2) == ceil(dim(shapes.X, 2) / strideH)", "dim(shapes.Y, 3) == ceil(dim(shapes.X, 3) / strideW)"],
434
- "constants": { "pIs1": "attrs.p == 1", "pIs2": "attrs.p == 2" },
435
  "passes": [
436
  {
437
  "id": "main",
438
  "name": "LpPool.NCHW2dAutoPad",
439
- "source": { "shader": "pool-window-nd.wgsl.jinja", "inputs": { "op": "\"lp\"", "spatialRank": 2 } },
440
- "bindings": "rank2Direct",
441
- "dispatch": { "threads": "numel(shapes.Y)", "workgroupSize": "tunables.WORKGROUP_SIZE" }
 
 
 
 
 
442
  }
443
  ]
444
  },
445
  {
446
  "id": "ncdhw3d",
447
  "priority": 10,
 
448
  "supersededBy": ["global_window_parallel"],
449
- "when": ["poolBaseOk", "ranks.X == 5", "kernelD > 0", "kernelH > 0", "kernelW > 0", "strideD > 0", "strideH > 0", "strideW > 0"],
450
  "passes": [
451
  {
452
  "id": "main",
453
  "name": "LpPool.NCDHW3d",
454
- "source": { "shader": "pool-window-nd.wgsl.jinja", "inputs": { "op": "\"lp\"", "spatialRank": 3 } },
455
- "bindings": "rank3Direct",
456
- "dispatch": { "threads": "numel(shapes.Y)", "workgroupSize": "tunables.WORKGROUP_SIZE" }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
457
  }
458
  ]
459
  }
 
2
  "domain": "ai.onnx",
3
  "name": "LpPool",
4
  "sinceVersion": 18,
5
+ "inputs": { "x": { "onnx": "X", "dtype": "T" } },
6
+ "outputs": { "y": { "onnx": "Y", "dtype": "T", "rank": "ranks.x", "shape": "poolOutputShape" } },
7
+ "attributes": {
8
+ "p": { "default": 2 },
9
+ "auto_pad": { "default": "NOTSET" },
10
+ "ceil_mode": { "default": 0 },
11
+ "kernel_shape": {},
12
+ "strides": {},
13
+ "pads": {},
14
+ "dilations": {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  },
16
  "attributeConstraints": {
17
  "auto_pad": { "values": ["NOTSET", "SAME_UPPER", "SAME_LOWER", "VALID"] },
 
19
  "kernel_shape": { "required": true }
20
  },
21
  "typeConstraints": { "T": ["float32", "float16"] },
22
+ "tunables": { "WORKGROUP_SIZE": { "default": 256 }, "SEPARABLE_MIN_WINDOW": { "default": 25 } },
 
 
 
23
  "derive": {
24
+ "spatialRank": "ranks.x - 2",
25
  "kernelShapeLengthOk": "not has(attrs, \"kernel_shape\") or (attrs.kernel_shape | length) == spatialRank",
26
  "stridesLengthOk": "not has(attrs, \"strides\") or (attrs.strides | length) == spatialRank",
27
  "dilationsLengthOk": "not has(attrs, \"dilations\") or (attrs.dilations | length) == spatialRank",
 
41
  "padBack": "attrs.pads[spatialRank] if padsLengthOk and has(attrs, \"pads\") and spatialRank == 3 else 0",
42
  "padBottom": "attrs.pads[2 * spatialRank - 2] if padsLengthOk and has(attrs, \"pads\") and spatialRank >= 2 else 0",
43
  "padRight": "attrs.pads[2 * spatialRank - 1] if padsLengthOk and has(attrs, \"pads\") and spatialRank >= 1 else 0",
44
+ "poolBaseOk": "f16Ok(dtypes.T) and attrs.p > 0 and ranks.x >= 3 and ranks.x <= 5 and ranks.y == ranks.x and has(attrs, \"kernel_shape\") and kernelShapeLengthOk and stridesLengthOk and dilationsLengthOk and padsLengthOk and kernelD > 0 and kernelH > 0 and kernelW > 0 and strideD > 0 and strideH > 0 and strideW > 0 and dilationD > 0 and dilationH > 0 and dilationW > 0 and padFront >= 0 and padTop >= 0 and padLeft >= 0 and padBack >= 0 and padBottom >= 0 and padRight >= 0 and (attrs.auto_pad == \"NOTSET\" or not has(attrs, \"pads\")) and dim(shapes.y, 0) == dim(shapes.x, 0) and dim(shapes.y, 1) == dim(shapes.x, 1)",
45
+ "explicitOutW": "min(ceil((dim(shapes.x, ranks.x - 1) + padLeft + padRight - ((kernelW - 1) * dilationW + 1)) / strideW) + 1, ceil((dim(shapes.x, ranks.x - 1) + padLeft) / strideW)) if attrs.ceil_mode != 0 else floor((dim(shapes.x, ranks.x - 1) + padLeft + padRight - ((kernelW - 1) * dilationW + 1)) / strideW) + 1",
46
+ "explicitOutH": "min(ceil((dim(shapes.x, ranks.x - 2) + padTop + padBottom - ((kernelH - 1) * dilationH + 1)) / strideH) + 1, ceil((dim(shapes.x, ranks.x - 2) + padTop) / strideH)) if attrs.ceil_mode != 0 else floor((dim(shapes.x, ranks.x - 2) + padTop + padBottom - ((kernelH - 1) * dilationH + 1)) / strideH) + 1",
47
+ "explicitOutD": "(min(ceil((dim(shapes.x, 2) + padFront + padBack - ((kernelD - 1) * dilationD + 1)) / strideD) + 1, ceil((dim(shapes.x, 2) + padFront) / strideD)) if attrs.ceil_mode != 0 else floor((dim(shapes.x, 2) + padFront + padBack - ((kernelD - 1) * dilationD + 1)) / strideD) + 1) if ranks.x == 5 else 0",
48
+ "inferredOutW": "ceil(dim(shapes.x, ranks.x - 1) / strideW) if attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\" else explicitOutW",
49
+ "inferredOutH": "ceil(dim(shapes.x, ranks.x - 2) / strideH) if attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\" else explicitOutH",
50
+ "inferredOutD": "ceil(dim(shapes.x, 2) / strideD) if attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\" else explicitOutD",
51
+ "poolOutputShape": "[dim(shapes.x, 0), dim(shapes.x, 1), inferredOutW] if ranks.x == 3 else ([dim(shapes.x, 0), dim(shapes.x, 1), inferredOutH, inferredOutW] if ranks.x == 4 else [dim(shapes.x, 0), dim(shapes.x, 1), inferredOutD, inferredOutH, inferredOutW])",
52
+ "autoPadTotalH": "max(0, (dim(shapes.y, ranks.x - 2) - 1) * strideH + ((kernelH - 1) * dilationH + 1) - dim(shapes.x, ranks.x - 2)) if ranks.x >= 4 else 0",
53
+ "autoPadTotalW": "max(0, (dim(shapes.y, ranks.x - 1) - 1) * strideW + ((kernelW - 1) * dilationW + 1) - dim(shapes.x, ranks.x - 1))",
54
+ "effectivePadH": "(floor(autoPadTotalH / 2) if attrs.auto_pad == \"SAME_UPPER\" else autoPadTotalH - floor(autoPadTotalH / 2)) if (attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\") else padTop",
55
+ "effectivePadW": "(floor(autoPadTotalW / 2) if attrs.auto_pad == \"SAME_UPPER\" else autoPadTotalW - floor(autoPadTotalW / 2)) if (attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\") else padLeft",
56
+ "globalWindowParallelCovered": "poolBaseOk and numel(shapes.y) == dim(shapes.x, 0) * dim(shapes.x, 1) and numel(shapes.y) <= min(device.limits.maxComputeWorkgroupsPerDimension, 65535) and attrs.auto_pad == \"NOTSET\" and strideD == 1 and strideH == 1 and strideW == 1 and dilationD == 1 and dilationH == 1 and dilationW == 1 and padFront == 0 and padTop == 0 and padLeft == 0 and padBack == 0 and padBottom == 0 and padRight == 0 and ((ranks.x == 3 and kernelW == dim(shapes.x, 2)) or (ranks.x == 4 and kernelH == dim(shapes.x, 2) and kernelW == dim(shapes.x, 3)) or (ranks.x == 5 and kernelD == dim(shapes.x, 2) and kernelH == dim(shapes.x, 3) and kernelW == dim(shapes.x, 4)))",
57
+ "separableTmpElements": "dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.x, 2) * dim(shapes.y, 3)",
58
+ "separableFits": "separableTmpElements * 4 <= min(device.limits.maxStorageBufferBindingSize, device.limits.maxBufferSize) and ceilDiv(separableTmpElements, tunables.WORKGROUP_SIZE) <= min(device.limits.maxComputeWorkgroupsPerDimension, 65535) * min(device.limits.maxComputeWorkgroupsPerDimension, 65535)",
59
+ "autoPadTotalD": "max(0, (dim(shapes.y, 2) - 1) * strideD + ((kernelD - 1) * dilationD + 1) - dim(shapes.x, 2)) if ranks.x == 5 else 0",
60
+ "effectivePadD": "(floor(autoPadTotalD / 2) if attrs.auto_pad == \"SAME_UPPER\" else autoPadTotalD - floor(autoPadTotalD / 2)) if (attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\") else padFront",
61
+ "scalar": "dtypes.T"
62
  },
63
+ "bindings": {
64
+ "x_2": { "name": "x", "buffer": "read-only-storage", "elementType": "$xVec4" },
65
+ "params": {
66
+ "buffer": "uniform",
67
+ "struct": [
68
+ { "name": "channels", "type": "u32", "value": "dim(shapes.x, 1)" },
69
+ { "name": "inH", "type": "u32", "value": "dim(shapes.x, 2)" },
70
+ { "name": "inW", "type": "u32", "value": "dim(shapes.x, 3)" },
71
+ { "name": "outH", "type": "u32", "value": "dim(shapes.y, 2)" },
72
+ { "name": "outW", "type": "u32", "value": "dim(shapes.y, 3)" },
73
+ { "name": "kernelH", "type": "u32", "value": "kernelH" },
74
+ { "name": "kernelW", "type": "u32", "value": "kernelW" },
75
+ { "name": "strideH", "type": "u32", "value": "strideH" },
76
+ { "name": "strideW", "type": "u32", "value": "strideW" },
77
+ { "name": "dilationH", "type": "u32", "value": "dilationH" },
78
+ { "name": "dilationW", "type": "u32", "value": "dilationW" },
79
+ { "name": "padH", "type": "i32", "value": "effectivePadH" },
80
+ { "name": "padW", "type": "i32", "value": "effectivePadW" },
81
+ { "name": "p", "type": "f32", "value": "attrs.p" },
82
+ { "name": "count", "type": "u32", "value": "numel(shapes.y)" }
83
+ ]
84
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  },
 
86
  "variants": [
87
  {
88
  "id": "global_window_parallel",
89
  "priority": 50,
90
  "when": ["globalWindowParallelCovered"],
91
+ "derive": {
92
+ "xElem": "(\"vec4<f16>\" if dtypes.T == \"f16\" else \"vec4<f32>\") if inner(shapes.x, 1) % 4 == 0 else dtypes.T"
93
  },
94
  "passes": [
95
  {
96
  "id": "main",
97
  "name": "LpPool.GlobalWindowParallel",
98
+ "shader": "pool-global-reduction.wgsl.jinja",
99
+ "subgroupCollectivesWidth": "portable",
100
+ "derive": {
101
+ "op": "\"lp\"",
102
+ "vec4": "inner(shapes.x, 1) % 4 == 0",
103
+ "p": "attrs.p",
104
+ "workgroupSizeSpec": "tunables.WORKGROUP_SIZE",
105
+ "useSubgroups": "device.features.has(\"subgroups\")"
 
106
  },
107
+ "bindings": [
108
+ { "arg": "x", "elementType": "$xElem" },
109
+ "y",
110
+ { "name": "params", "struct": [{ "name": "spatial", "type": "u32", "value": "inner(shapes.x, 1)" }] }
111
+ ],
112
+ "dispatch": { "x": "numel(shapes.y)" }
113
  }
114
  ]
115
  },
116
  {
117
  "id": "nchw2d_k2s2_vec4",
118
  "priority": 30,
119
+ "when": ["(attrs.auto_pad != \"SAME_UPPER\" and attrs.auto_pad != \"SAME_LOWER\")", "poolBaseOk", "ranks.x == 4", "kernelH == 2", "kernelW == 2", "strideH == 2", "strideW == 2", "dilationH == 1", "dilationW == 1", "padTop == 0", "padLeft == 0", "padBottom == 0", "padRight == 0", "attrs.ceil_mode == 0", "dim(shapes.x, 3) % 4 == 0", "dim(shapes.y, 2) == floor(dim(shapes.x, 2) / 2)", "dim(shapes.y, 3) == floor(dim(shapes.x, 3) / 2)", "dim(shapes.y, 2) > 0", "dim(shapes.y, 3) > 0"],
120
+ "derive": { "xVec4": "\"vec4<f16>\" if dtypes.T == \"f16\" else \"vec4<f32>\"" },
121
  "passes": [
122
  {
123
  "id": "main",
124
  "name": "LpPool.Nchw2dK2s2Vec4",
125
+ "shader": "pool2d-nchw-k2s2-vec4.wgsl.jinja",
126
+ "derive": {
127
+ "op": "\"lp\"",
128
+ "outH": "dim(shapes.y, 2)",
129
+ "outW": "dim(shapes.y, 3)",
130
+ "outWHalf": "floor(dim(shapes.y, 3) / 2)",
131
+ "inWVec4": "floor(dim(shapes.x, 3) / 4)",
132
+ "inPlaneVec4": "floor(dim(shapes.x, 2) * dim(shapes.x, 3) / 4)",
133
+ "p": "attrs.p"
 
 
134
  },
135
+ "bindings": [
136
+ "x_2",
137
+ "y",
138
+ { "name": "params", "struct": [{ "name": "tileCount", "type": "u32", "value": "numel(shapes.y) / 2" }] }
139
+ ],
140
+ "dispatch": {
141
+ "x": "min(ceilDiv((numel(shapes.y) / 2), (tunables.WORKGROUP_SIZE)), 65535)",
142
+ "y": "ceilDiv(ceilDiv((numel(shapes.y) / 2), (tunables.WORKGROUP_SIZE)), 65535)",
143
+ "z": 1
144
+ }
145
  }
146
  ]
147
  },
148
  {
149
  "id": "nchw2d_unrolled",
150
  "priority": 25,
151
+ "when": ["(attrs.auto_pad != \"SAME_UPPER\" and attrs.auto_pad != \"SAME_LOWER\")", "poolBaseOk", "ranks.x == 4", "kernelH > 0", "kernelW > 0", "strideH > 0", "strideW > 0", "kernelH <= 3", "kernelW <= 3", "dilationH >= 1", "dilationW >= 1", "dim(shapes.y, 2) > 0", "dim(shapes.y, 3) > 0"],
152
  "passes": [
153
  {
154
  "id": "main",
155
  "name": "LpPool.Nchw2dUnrolled",
156
+ "shader": "pool-window-unroll.wgsl.jinja",
157
+ "derive": {
158
+ "op": "\"lp\"",
159
+ "kernelHSpec": "kernelH",
160
+ "kernelWSpec": "kernelW",
161
+ "strideHSpec": "strideH",
162
+ "strideWSpec": "strideW",
163
+ "dilationHSpec": "dilationH",
164
+ "dilationWSpec": "dilationW",
165
+ "padTopSpec": "padTop",
166
+ "padLeftSpec": "padLeft",
167
+ "inH": "dim(shapes.x, 2)",
168
+ "inW": "dim(shapes.x, 3)",
169
+ "outH": "dim(shapes.y, 2)",
170
+ "outW": "dim(shapes.y, 3)",
171
+ "p": "attrs.p"
 
 
172
  },
173
+ "bindings": [
174
+ "x",
175
+ "y",
176
+ { "name": "params", "struct": [{ "name": "count", "type": "u32", "value": "numel(shapes.y)" }] }
177
+ ],
178
+ "dispatch": {
179
+ "x": "min(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
180
+ "y": "ceilDiv(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
181
+ "z": 1
182
+ }
183
  }
184
  ]
185
  },
186
  {
187
  "id": "ncl1d_k4s2_p2_x4",
188
  "priority": 30,
189
+ "when": ["poolBaseOk", "ranks.x == 3", "attrs.auto_pad == \"NOTSET\"", "attrs.p == 2", "kernelW == 4", "strideW == 2", "dilationW == 1", "padLeft == 0", "padRight == 0", "attrs.ceil_mode == 0", "dim(shapes.x, 2) % 4 == 0", "dim(shapes.y, 2) == floor((dim(shapes.x, 2) - 4) / 2) + 1"],
190
+ "derive": { "xVec4": "\"vec4<f16>\" if dtypes.T == \"f16\" else \"vec4<f32>\"" },
191
  "passes": [
192
  {
193
  "id": "main",
194
  "name": "LpPool.Ncl1dK4s2P2X4",
195
+ "shader": "pool-ncl1d-x4.wgsl.jinja",
196
+ "derive": { "op": "\"lp\"", "inW": "dim(shapes.x, 2)", "outW": "dim(shapes.y, 2)" },
197
+ "bindings": [
198
+ "x_2",
199
+ "y",
200
+ {
201
+ "name": "params",
202
+ "struct": [
203
+ {
204
+ "name": "blockCount",
205
+ "type": "u32",
206
+ "value": "dim(shapes.x, 0) * dim(shapes.x, 1) * ceilDiv(dim(shapes.y, 2), 4)"
207
+ }
208
+ ]
209
+ }
210
+ ],
211
  "dispatch": {
212
+ "x": "min(ceilDiv((dim(shapes.x, 0) * dim(shapes.x, 1) * ceilDiv(dim(shapes.y, 2), 4)), (tunables.WORKGROUP_SIZE)), 65535)",
213
+ "y": "ceilDiv(ceilDiv((dim(shapes.x, 0) * dim(shapes.x, 1) * ceilDiv(dim(shapes.y, 2), 4)), (tunables.WORKGROUP_SIZE)), 65535)",
214
+ "z": 1
215
  }
216
  }
217
  ]
 
219
  {
220
  "id": "ncl1d",
221
  "priority": 10,
222
+ "when": ["poolBaseOk", "ranks.x == 3", "kernelW > 0", "strideW > 0"],
223
+ "derive": { "pIs1": "attrs.p == 1", "pIs2": "attrs.p == 2" },
224
  "passes": [
225
  {
226
  "id": "main",
227
  "name": "LpPool.NCL1d",
228
+ "shader": "pool-window-nd.wgsl.jinja",
229
+ "derive": { "op": "\"lp\"", "spatialRankSpec": 1 },
230
+ "bindings": [
231
+ "x",
232
+ "y",
233
+ {
234
+ "name": "params",
235
+ "struct": [
236
+ { "name": "channels", "type": "u32", "value": "dim(shapes.x, 1)" },
237
+ { "name": "inW", "type": "u32", "value": "dim(shapes.x, 2)" },
238
+ { "name": "outW", "type": "u32", "value": "dim(shapes.y, 2)" },
239
+ { "name": "kernelW", "type": "u32", "value": "kernelW" },
240
+ { "name": "strideW", "type": "u32", "value": "strideW" },
241
+ { "name": "dilationW", "type": "u32", "value": "dilationW" },
242
+ { "name": "padW", "type": "i32", "value": "effectivePadW" },
243
+ { "name": "p", "type": "f32", "value": "attrs.p" },
244
+ { "name": "count", "type": "u32", "value": "numel(shapes.y)" }
245
+ ]
246
+ }
247
+ ],
248
+ "dispatch": {
249
+ "x": "min(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
250
+ "y": "ceilDiv(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
251
+ "z": 1
252
+ }
253
  }
254
  ]
255
  },
256
  {
257
  "id": "nchw2d_separable",
258
  "priority": 22,
259
+ "when": ["(attrs.auto_pad != \"SAME_UPPER\" and attrs.auto_pad != \"SAME_LOWER\")", "poolBaseOk", "ranks.x == 4", "kernelH > 0", "kernelW > 0", "strideH > 0", "strideW > 0", "kernelH > 1", "kernelW > 1", "kernelH * kernelW >= tunables.SEPARABLE_MIN_WINDOW", "strideH < kernelH", "separableFits"],
260
+ "derive": { "pIs1": "attrs.p == 1", "pIs2": "attrs.p == 2" },
261
  "intermediates": [{ "id": "tmp", "dtype": "float32", "shape": "[separableTmpElements]" }],
262
  "passes": [
263
  {
264
  "id": "reduce_w",
265
  "name": "LpPool.SeparableW",
266
+ "shader": "pool2d-nchw-separable.wgsl.jinja",
267
+ "derive": { "op": "\"lp\"", "axisSpec": "\"w\"", "windowArea": "kernelH * kernelW" },
268
+ "bindings": [
269
+ "x",
270
+ { "name": "tmp", "buffer": "storage", "elementType": "f32" },
271
+ {
272
+ "name": "params",
273
+ "struct": [
274
+ { "name": "inH", "type": "u32", "value": "dim(shapes.x, 2)" },
275
+ { "name": "inW", "type": "u32", "value": "dim(shapes.x, 3)" },
276
+ { "name": "outW", "type": "u32", "value": "dim(shapes.y, 3)" },
277
+ { "name": "kernelW", "type": "u32", "value": "kernelW" },
278
+ { "name": "strideW", "type": "u32", "value": "strideW" },
279
+ { "name": "dilationW", "type": "u32", "value": "dilationW" },
280
+ { "name": "padW", "type": "i32", "value": "effectivePadW" },
281
+ { "name": "p", "type": "f32", "value": "attrs.p" },
282
+ {
283
+ "name": "tmpCount",
284
+ "type": "u32",
285
+ "value": "dim(shapes.x, 0) * dim(shapes.x, 1) * dim(shapes.x, 2) * dim(shapes.y, 3)"
286
+ }
287
+ ]
288
+ }
289
+ ],
290
+ "dispatch": {
291
+ "x": "min(ceilDiv((separableTmpElements), (tunables.WORKGROUP_SIZE)), 65535)",
292
+ "y": "ceilDiv(ceilDiv((separableTmpElements), (tunables.WORKGROUP_SIZE)), 65535)",
293
+ "z": 1
294
+ }
295
  },
296
  {
297
  "id": "reduce_h",
298
  "name": "LpPool.SeparableH",
299
+ "shader": "pool2d-nchw-separable.wgsl.jinja",
300
+ "derive": { "op": "\"lp\"", "axisSpec": "\"h\"", "windowArea": "kernelH * kernelW" },
301
+ "bindings": [
302
+ { "name": "tmp", "buffer": "read-only-storage", "elementType": "f32" },
303
+ "y",
304
+ {
305
+ "name": "params",
306
+ "struct": [
307
+ { "name": "inH", "type": "u32", "value": "dim(shapes.x, 2)" },
308
+ { "name": "outH", "type": "u32", "value": "dim(shapes.y, 2)" },
309
+ { "name": "outW", "type": "u32", "value": "dim(shapes.y, 3)" },
310
+ { "name": "kernelH", "type": "u32", "value": "kernelH" },
311
+ { "name": "strideH", "type": "u32", "value": "strideH" },
312
+ { "name": "dilationH", "type": "u32", "value": "dilationH" },
313
+ { "name": "padH", "type": "i32", "value": "effectivePadH" },
314
+ { "name": "p", "type": "f32", "value": "attrs.p" },
315
+ { "name": "count", "type": "u32", "value": "numel(shapes.y)" }
316
+ ]
317
+ }
318
+ ],
319
+ "dispatch": {
320
+ "x": "min(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
321
+ "y": "ceilDiv(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
322
+ "z": 1
323
+ }
324
  }
325
  ]
326
  },
327
  {
328
  "id": "nchw2d",
329
+ "when": ["(attrs.auto_pad != \"SAME_UPPER\" and attrs.auto_pad != \"SAME_LOWER\")", "poolBaseOk", "ranks.x == 4", "kernelH > 0", "kernelW > 0", "strideH > 0", "strideW > 0"],
330
+ "derive": { "pIs1": "attrs.p == 1", "pIs2": "attrs.p == 2" },
331
  "passes": [
332
  {
333
  "id": "main",
334
  "name": "LpPool.NCHW2d",
335
+ "shader": "pool-window-nd.wgsl.jinja",
336
+ "derive": { "op": "\"lp\"", "spatialRankSpec": 2 },
337
+ "bindings": ["x", "y", "params"],
338
+ "dispatch": {
339
+ "x": "min(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
340
+ "y": "ceilDiv(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
341
+ "z": 1
342
+ }
343
  }
344
  ]
345
  },
346
  {
347
  "id": "nchw2d_autopad",
348
  "priority": 15,
349
+ "when": ["(attrs.auto_pad == \"SAME_UPPER\" or attrs.auto_pad == \"SAME_LOWER\")", "poolBaseOk", "ranks.x == 4", "kernelH > 0", "kernelW > 0", "strideH > 0", "strideW > 0", "dim(shapes.y, 2) == ceil(dim(shapes.x, 2) / strideH)", "dim(shapes.y, 3) == ceil(dim(shapes.x, 3) / strideW)"],
350
+ "derive": { "pIs1": "attrs.p == 1", "pIs2": "attrs.p == 2" },
351
  "passes": [
352
  {
353
  "id": "main",
354
  "name": "LpPool.NCHW2dAutoPad",
355
+ "shader": "pool-window-nd.wgsl.jinja",
356
+ "derive": { "op": "\"lp\"", "spatialRankSpec": 2 },
357
+ "bindings": ["x", "y", "params"],
358
+ "dispatch": {
359
+ "x": "min(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
360
+ "y": "ceilDiv(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
361
+ "z": 1
362
+ }
363
  }
364
  ]
365
  },
366
  {
367
  "id": "ncdhw3d",
368
  "priority": 10,
369
+ "when": ["poolBaseOk", "ranks.x == 5", "kernelD > 0", "kernelH > 0", "kernelW > 0", "strideD > 0", "strideH > 0", "strideW > 0"],
370
  "supersededBy": ["global_window_parallel"],
 
371
  "passes": [
372
  {
373
  "id": "main",
374
  "name": "LpPool.NCDHW3d",
375
+ "shader": "pool-window-nd.wgsl.jinja",
376
+ "derive": { "op": "\"lp\"", "spatialRankSpec": 3 },
377
+ "bindings": [
378
+ "x",
379
+ "y",
380
+ {
381
+ "name": "params",
382
+ "struct": [
383
+ { "name": "channels", "type": "u32", "value": "dim(shapes.x, 1)" },
384
+ { "name": "inD", "type": "u32", "value": "dim(shapes.x, 2)" },
385
+ { "name": "inH", "type": "u32", "value": "dim(shapes.x, 3)" },
386
+ { "name": "inW", "type": "u32", "value": "dim(shapes.x, 4)" },
387
+ { "name": "outD", "type": "u32", "value": "dim(shapes.y, 2)" },
388
+ { "name": "outH", "type": "u32", "value": "dim(shapes.y, 3)" },
389
+ { "name": "outW", "type": "u32", "value": "dim(shapes.y, 4)" },
390
+ { "name": "kernelD", "type": "u32", "value": "kernelD" },
391
+ { "name": "kernelH", "type": "u32", "value": "kernelH" },
392
+ { "name": "kernelW", "type": "u32", "value": "kernelW" },
393
+ { "name": "strideD", "type": "u32", "value": "strideD" },
394
+ { "name": "strideH", "type": "u32", "value": "strideH" },
395
+ { "name": "strideW", "type": "u32", "value": "strideW" },
396
+ { "name": "dilationD", "type": "u32", "value": "dilationD" },
397
+ { "name": "dilationH", "type": "u32", "value": "dilationH" },
398
+ { "name": "dilationW", "type": "u32", "value": "dilationW" },
399
+ { "name": "padD", "type": "i32", "value": "effectivePadD" },
400
+ { "name": "padH", "type": "i32", "value": "effectivePadH" },
401
+ { "name": "padW", "type": "i32", "value": "effectivePadW" },
402
+ { "name": "p", "type": "f32", "value": "attrs.p" },
403
+ { "name": "count", "type": "u32", "value": "numel(shapes.y)" }
404
+ ]
405
+ }
406
+ ],
407
+ "dispatch": {
408
+ "x": "min(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
409
+ "y": "ceilDiv(ceilDiv((numel(shapes.y)), (tunables.WORKGROUP_SIZE)), 65535)",
410
+ "z": 1
411
+ }
412
  }
413
  ]
414
  }
build/webgpu/metadata.json CHANGED
@@ -1,23 +1,36 @@
1
  {
2
  "name": "ai.onnx.LpPool",
3
- "id": "_ai_onnx_lppool_webgpu_cd77da5",
4
  "version": 1,
5
  "license": "Apache-2.0",
6
  "backend": { "type": "webgpu" },
7
  "digest": {
8
  "algorithm": "sha256",
9
  "files": {
10
- "bench.json": "w6aN2KgWABkA/ms17d5eRGnNY4W16SbuGU0Bv4Ua+PM=",
11
- "manifest.json": "u27G/WowR9lMUG+lwNF4ur0POWFvxA1Pj1D/why0G3w=",
12
- "pool-global-reduction.wgsl.jinja": "6v3XBuPgokHWHa3DRfhk8PyQ2km8soKnuJ9NNZUgSTo=",
13
- "pool-ncl1d-x4.wgsl.jinja": "uZW9X2c3ilCWzT0YCg9/fs/L3wNTS5j4aRO31UQpFbA=",
14
- "pool-window-nd.wgsl.jinja": "h6hIDb6qxMwApe1Wcw4x9cEnjWY1WpYWk3vR8ecYF/w=",
15
- "pool-window-unroll.wgsl.jinja": "HVLK0vaS22ommayIv3VISzdyU3X1lgtFYG9N5WCOUUM=",
16
- "pool2d-nchw-k2s2-vec4.wgsl.jinja": "Oq+ar9au4O/oG5ZU8MtSJYLKGXB/GupLNnYHEgmuaUI=",
17
- "pool2d-nchw-separable.wgsl.jinja": "0Av3hMIG4Rnrut2XitTZrqU8l7ih1QV0/w01vyAsbe4=",
18
- "test.json": "5NKe4iEQZXXCRAfrhel4tIqfaUs+/u9uZCKdPbPU4oI="
19
  }
20
  },
21
- "provenance": { "kernel": { "sha": "2e7068faf55e7f43df740015f6d1ee49391a41c5", "dirty": false } },
22
- "webgpu": { "manifestSpec": "1.0", "specialized": true, "opPath": "ops/ai.onnx.LpPool" }
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  }
 
1
  {
2
  "name": "ai.onnx.LpPool",
3
+ "id": "_ai_onnx_lppool_webgpu_441a712",
4
  "version": 1,
5
  "license": "Apache-2.0",
6
  "backend": { "type": "webgpu" },
7
  "digest": {
8
  "algorithm": "sha256",
9
  "files": {
10
+ "bench.json": "9MTx0K098K5uU8eYf1fyGZZj9qAm9WyXRQ0ri8CA5PQ=",
11
+ "manifest.json": "Vl52UNLWlE34s3r8t6aom9dk2ugID2Rbj8mwiQEAahY=",
12
+ "pool-global-reduction.wgsl.jinja": "KkncfRhVcz/NAm+o15UOS2NoX9dhg4DxKHxodJoDBtI=",
13
+ "pool-ncl1d-x4.wgsl.jinja": "D2FL4TG9Pkkxz0t/fpXhDAZnp6BFd7bMFPpJFDgx5C8=",
14
+ "pool-window-nd.wgsl.jinja": "gngVMHmnqDaysakzQPGhBmBXq8FGKjMW8b3CJ28EvxY=",
15
+ "pool-window-unroll.wgsl.jinja": "dgNv0uSyrzk2atSx0NZUSoDedRM88Six/G+mz1lCstc=",
16
+ "pool2d-nchw-k2s2-vec4.wgsl.jinja": "x1vTe17pXOTwtxqcVfAdxP21Zeu8xjlUMn1T7aQr/8M=",
17
+ "pool2d-nchw-separable.wgsl.jinja": "NlzeGgsP6kN2rq7AwvgLfOzDqhRmv8DAnyKFtJXPoSA=",
18
+ "test.json": "9sh7zuhm5EUBaqoqldehtqYLO2cENj3u4/+pEGwTVjQ="
19
  }
20
  },
21
+ "provenance": { "kernel": { "sha": "91d990483a174128daf7673f3f37a7c890493ae1", "dirty": false } },
22
+ "webgpu": {
23
+ "manifestSpec": "2.0",
24
+ "variants": {
25
+ "global_window_parallel": ["pool-global-reduction.wgsl.jinja"],
26
+ "nchw2d_k2s2_vec4": ["pool2d-nchw-k2s2-vec4.wgsl.jinja"],
27
+ "nchw2d_unrolled": ["pool-window-unroll.wgsl.jinja"],
28
+ "ncl1d_k4s2_p2_x4": ["pool-ncl1d-x4.wgsl.jinja"],
29
+ "ncl1d": ["pool-window-nd.wgsl.jinja"],
30
+ "nchw2d_separable": ["pool2d-nchw-separable.wgsl.jinja"],
31
+ "nchw2d": ["pool-window-nd.wgsl.jinja"],
32
+ "nchw2d_autopad": ["pool-window-nd.wgsl.jinja"],
33
+ "ncdhw3d": ["pool-window-nd.wgsl.jinja"]
34
+ }
35
+ }
36
  }
build/webgpu/pool-global-reduction.wgsl.jinja CHANGED
@@ -1,7 +1,5 @@
1
- {% if usesF16 %}
2
- enable f16;
3
- {% endif %}
4
- {% if source.useSubgroups %}
5
  enable subgroups;
6
  {% endif %}
7
  {{ env.wgsl.resourceDeclarations }}
@@ -9,53 +7,44 @@ enable subgroups;
9
  // Workgroup-parallel global pooling: one workgroup reduces one contiguous
10
  // (n, c) spatial plane (NC[D]HW layout makes the plane contiguous).
11
  // Threads stride the plane (vec4 loads when the plane size is divisible by 4),
12
- // then combine the per-thread partials. With subgroups: a subgroup collective
13
- // + a shared-memory fold of the per-subgroup partials. Without subgroups, a
14
- // full workgroup tree keeps workgroup-per-plane parallelism
15
- // instead of falling to the one-thread-per-plane serial scalar kernel. The
16
- // epilogue finalizes average / max / Lp. Sum reassociates;
17
- // max is exact.
18
- const WG: u32 = {{ source.workgroupSize }}u;
19
- {% if source.useSubgroups %}
20
- // WebGPU subgroups are at least 4 wide, so a workgroup holds at most WG / 4 subgroups.
21
- const MAX_SUBGROUPS: u32 = WG / 4u;
22
- var<workgroup> wg_partials: array<f32, MAX_SUBGROUPS>;
 
23
  {% else %}
24
  var<workgroup> wg_tree: array<f32, WG>;
25
  {% endif %}
26
 
27
- {% if source.op == "lp" and source.p != 1 and source.p != 2 %}
28
- const P: f32 = f32({{ source.p }});
29
  {% endif %}
30
 
31
  @compute @workgroup_size(WG)
32
  fn main(@builtin(workgroup_id) wid: vec3<u32>,
33
  @builtin(local_invocation_id) lid: vec3<u32>
34
- {%- if source.useSubgroups %},
35
  @builtin(subgroup_size) sg_size: u32
36
  {%- endif %}) {
37
  let plane = wid.x;
38
  let tid = lid.x;
39
- {% if source.useSubgroups %}
40
-
41
- // Seed cross-subgroup slots with the reduction identity so unwritten slots
42
- // (when the workgroup has fewer than MAX_SUBGROUPS subgroups) are harmless.
43
- if (tid < MAX_SUBGROUPS) {
44
- wg_partials[tid] = 0.0;
45
- }
46
- workgroupBarrier();
47
-
48
- {% endif %}
49
  var partial = 0.0;
50
- {% if source.vec4 %}
51
  let spatialVec = params.spatial / 4u;
52
  let base = plane * spatialVec;
53
  var accv = vec4<f32>(0.0);
54
  for (var i = tid; i < spatialVec; i = i + WG) {
55
  let v = vec4<f32>(x[base + i]);
56
- {% if source.p == 2 %}
57
  accv = accv + v * v;
58
- {% elif source.p == 1 %}
59
  accv = accv + abs(v);
60
  {% else %}
61
  accv = accv + pow(abs(v), vec4<f32>(P));
@@ -66,9 +55,9 @@ fn main(@builtin(workgroup_id) wid: vec3<u32>,
66
  let base = plane * params.spatial;
67
  for (var i = tid; i < params.spatial; i = i + WG) {
68
  let v = f32(x[base + i]);
69
- {% if source.p == 2 %}
70
  partial = partial + v * v;
71
- {% elif source.p == 1 %}
72
  partial = partial + abs(v);
73
  {% else %}
74
  partial = partial + pow(abs(v), P);
@@ -76,21 +65,34 @@ fn main(@builtin(workgroup_id) wid: vec3<u32>,
76
  }
77
  {% endif %}
78
 
79
- {% if source.useSubgroups %}
80
- let sg_sum = subgroupAdd(partial);
81
- if (subgroupElect()) {
82
- wg_partials[tid / sg_size] = sg_sum;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  }
84
- workgroupBarrier();
85
  if (tid == 0u) {
86
- let nsg = min((WG + sg_size - 1u) / sg_size, MAX_SUBGROUPS);
87
- var total = 0.0;
88
- for (var i = 0u; i < nsg; i = i + 1u) {
89
- total = total + wg_partials[i];
90
- }
91
- {% if source.p == 2 %}
92
  y[plane] = {{ scalar }}(sqrt(total));
93
- {% elif source.p == 1 %}
94
  y[plane] = {{ scalar }}(total);
95
  {% else %}
96
  y[plane] = {{ scalar }}(pow(total, 1.0 / P));
@@ -108,9 +110,9 @@ fn main(@builtin(workgroup_id) wid: vec3<u32>,
108
  }
109
  if (tid == 0u) {
110
  let total = wg_tree[0];
111
- {% if source.p == 2 %}
112
  y[plane] = {{ scalar }}(sqrt(total));
113
- {% elif source.p == 1 %}
114
  y[plane] = {{ scalar }}(total);
115
  {% else %}
116
  y[plane] = {{ scalar }}(pow(total, 1.0 / P));
 
1
+ {% set p = p | default(0) %}
2
+ {% if useSubgroups %}
 
 
3
  enable subgroups;
4
  {% endif %}
5
  {{ env.wgsl.resourceDeclarations }}
 
7
  // Workgroup-parallel global pooling: one workgroup reduces one contiguous
8
  // (n, c) spatial plane (NC[D]HW layout makes the plane contiguous).
9
  // Threads stride the plane (vec4 loads when the plane size is divisible by 4),
10
+ // then combine the per-thread partials. With subgroups: a subgroup collective,
11
+ // then one shared-memory slot per invocation (the subgroup partial from its
12
+ // elected lane, the identity from every other lane) that every subgroup folds.
13
+ // Without subgroups, a full workgroup tree combines the per-thread partials.
14
+ // The epilogue applies the selected Lp root to the f32 sum of |x|^p. The tree
15
+ // changes the association of additions.
16
+ const WG: u32 = {{ workgroupSizeSpec }}u;
17
+ {% if useSubgroups %}
18
+ // One slot per invocation: the cross-subgroup fold below indexes by
19
+ // local_invocation_id, never by a subgroup ordinal, so no subgroup width or
20
+ // partition can overflow or alias it.
21
+ var<workgroup> wg_partials: array<f32, WG>;
22
  {% else %}
23
  var<workgroup> wg_tree: array<f32, WG>;
24
  {% endif %}
25
 
26
+ {% if op == "lp" and p != 1 and p != 2 %}
27
+ const P: f32 = f32({{ p }});
28
  {% endif %}
29
 
30
  @compute @workgroup_size(WG)
31
  fn main(@builtin(workgroup_id) wid: vec3<u32>,
32
  @builtin(local_invocation_id) lid: vec3<u32>
33
+ {%- if useSubgroups %},
34
  @builtin(subgroup_size) sg_size: u32
35
  {%- endif %}) {
36
  let plane = wid.x;
37
  let tid = lid.x;
 
 
 
 
 
 
 
 
 
 
38
  var partial = 0.0;
39
+ {% if vec4 %}
40
  let spatialVec = params.spatial / 4u;
41
  let base = plane * spatialVec;
42
  var accv = vec4<f32>(0.0);
43
  for (var i = tid; i < spatialVec; i = i + WG) {
44
  let v = vec4<f32>(x[base + i]);
45
+ {% if p == 2 %}
46
  accv = accv + v * v;
47
+ {% elif p == 1 %}
48
  accv = accv + abs(v);
49
  {% else %}
50
  accv = accv + pow(abs(v), vec4<f32>(P));
 
55
  let base = plane * params.spatial;
56
  for (var i = tid; i < params.spatial; i = i + WG) {
57
  let v = f32(x[base + i]);
58
+ {% if p == 2 %}
59
  partial = partial + v * v;
60
+ {% elif p == 1 %}
61
  partial = partial + abs(v);
62
  {% else %}
63
  partial = partial + pow(abs(v), P);
 
65
  }
66
  {% endif %}
67
 
68
+ {% if useSubgroups %}
69
+ var total = subgroupAdd(partial);
70
+ // Cross-subgroup fold that assumes nothing about which invocations share a
71
+ // subgroup, how many subgroups there are, or which of a subgroup's lanes are
72
+ // active: every invocation owns the slot at its own index, the elected lane
73
+ // publishes its subgroup partial there and every other lane publishes the
74
+ // reduction identity. Each subgroup then folds all WG slots — lane `rank`,
75
+ // its dense position among the active lanes, walks slots rank, rank + count,
76
+ // ... — and one more collective merges the lane partials, so every slot is
77
+ // merged exactly once at any legal width and partition. A one-subgroup
78
+ // workgroup skips shared memory entirely; that test reads the `subgroup_size`
79
+ // builtin, which is uniform, because a collective's result is not uniform to
80
+ // WGSL's analysis and may not guard a barrier.
81
+ if (sg_size != WG) {
82
+ let rank = subgroupExclusiveAdd(1u);
83
+ let count = subgroupAdd(1u);
84
+ wg_partials[tid] = select(0.0, total, rank == 0u);
85
+ workgroupBarrier();
86
+ var acc = 0.0;
87
+ for (var i = rank; i < WG; i = i + count) {
88
+ acc = acc + wg_partials[i];
89
+ }
90
+ total = subgroupAdd(acc);
91
  }
 
92
  if (tid == 0u) {
93
+ {% if p == 2 %}
 
 
 
 
 
94
  y[plane] = {{ scalar }}(sqrt(total));
95
+ {% elif p == 1 %}
96
  y[plane] = {{ scalar }}(total);
97
  {% else %}
98
  y[plane] = {{ scalar }}(pow(total, 1.0 / P));
 
110
  }
111
  if (tid == 0u) {
112
  let total = wg_tree[0];
113
+ {% if p == 2 %}
114
  y[plane] = {{ scalar }}(sqrt(total));
115
+ {% elif p == 1 %}
116
  y[plane] = {{ scalar }}(total);
117
  {% else %}
118
  y[plane] = {{ scalar }}(pow(total, 1.0 / P));
build/webgpu/pool-ncl1d-x4.wgsl.jinja CHANGED
@@ -1,21 +1,16 @@
1
- {% if usesF16 %}
2
- enable f16;
3
- {% endif %}
4
  {{ env.wgsl.resourceDeclarations }}
5
 
6
- // Four adjacent NCL outputs per invocation for non-overlapping max k2/s2 and
7
- // overlapping L2 k4/s2 windows. Both layouts consume aligned vec4 input blocks.
8
- // The L2 route reuses shared middle samples instead of loading every window
9
- // independently.
10
- const IN_W: u32 = {{ source.inW }}u;
11
- const OUT_W: u32 = {{ source.outW }}u;
12
  const BLOCKS_PER_PLANE: u32 = (OUT_W + 3u) / 4u;
13
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
14
  fn main(
15
  @builtin(global_invocation_id) gid: vec3<u32>,
16
- @builtin(num_workgroups) nwg: vec3<u32>,
17
  ) {
18
- let block = gid.x + gid.y * nwg.x * {{ tunables.WORKGROUP_SIZE }}u;
19
  if (block >= params.blockCount) { return; }
20
 
21
  let plane = block / BLOCKS_PER_PLANE;
 
 
 
 
1
  {{ env.wgsl.resourceDeclarations }}
2
 
3
+ // Four adjacent NCL L2-pool outputs per invocation for overlapping k4/s2
4
+ // windows. Aligned vec4 input words share the middle samples of neighboring
5
+ // windows.
6
+ const IN_W: u32 = {{ inW }}u;
7
+ const OUT_W: u32 = {{ outW }}u;
 
8
  const BLOCKS_PER_PLANE: u32 = (OUT_W + 3u) / 4u;
9
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
10
  fn main(
11
  @builtin(global_invocation_id) gid: vec3<u32>,
 
12
  ) {
13
+ let block = gid.x + gid.y * {{ DISPATCH_FOLD_WIDTH }}u * {{ tunables.WORKGROUP_SIZE }}u;
14
  if (block >= params.blockCount) { return; }
15
 
16
  let plane = block / BLOCKS_PER_PLANE;
build/webgpu/pool-window-nd.wgsl.jinja CHANGED
@@ -1,21 +1,18 @@
1
- {% if usesF16 %}
2
- enable f16;
3
- {% endif %}
4
  {{ env.wgsl.resourceDeclarations }}
5
 
6
- // Direct {{ source.spatialRank }}D {{ source.op }}-pool traversal for a channels-first tensor.
7
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
8
- fn main(@builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups) nwg: vec3<u32>) {
9
- let index = gid.x + gid.y * nwg.x * {{ tunables.WORKGROUP_SIZE }}u;
10
  if (index >= params.count) { return; }
11
 
12
  let ow = index % params.outW;
13
  var t = index / params.outW;
14
- {% if source.spatialRank >= 2 %}
15
  let oh = t % params.outH;
16
  t /= params.outH;
17
  {% endif %}
18
- {% if source.spatialRank == 3 %}
19
  let od = t % params.outD;
20
  t /= params.outD;
21
  {% endif %}
@@ -24,12 +21,12 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups)
24
 
25
  var acc = 0.0;
26
 
27
- {% if source.spatialRank == 3 %}
28
  for (var kd = 0u; kd < params.kernelD; kd += 1u) {
29
  let id = i32(od * params.strideD + kd * params.dilationD) - params.padD;
30
  if (id < 0 || id >= i32(params.inD)) { continue; }
31
  {% endif %}
32
- {% if source.spatialRank >= 2 %}
33
  for (var kh = 0u; kh < params.kernelH; kh += 1u) {
34
  let ih = i32(oh * params.strideH + kh * params.dilationH) - params.padH;
35
  if (ih < 0 || ih >= i32(params.inH)) { continue; }
@@ -37,9 +34,9 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups)
37
  for (var kw = 0u; kw < params.kernelW; kw += 1u) {
38
  let iw = i32(ow * params.strideW + kw * params.dilationW) - params.padW;
39
  if (iw < 0 || iw >= i32(params.inW)) { continue; }
40
- {% if source.spatialRank == 1 %}
41
  let xIndex = (batch * params.channels + channel) * params.inW + u32(iw);
42
- {% elif source.spatialRank == 2 %}
43
  let xIndex = ((batch * params.channels + channel) * params.inH + u32(ih)) * params.inW + u32(iw);
44
  {% else %}
45
  let xIndex = (((batch * params.channels + channel) * params.inD + u32(id)) * params.inH + u32(ih)) * params.inW + u32(iw);
@@ -53,10 +50,10 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups)
53
  acc += pow(abs(f32(x[xIndex])), params.p);
54
  {% endif %}
55
  }
56
- {% if source.spatialRank >= 2 %}
57
  }
58
  {% endif %}
59
- {% if source.spatialRank == 3 %}
60
  }
61
  {% endif %}
62
 
 
 
 
 
1
  {{ env.wgsl.resourceDeclarations }}
2
 
3
+ // Direct spatial-pooling traversal for a channels-first tensor.
4
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let index = gid.x + gid.y * {{ DISPATCH_FOLD_WIDTH }}u * {{ tunables.WORKGROUP_SIZE }}u;
7
  if (index >= params.count) { return; }
8
 
9
  let ow = index % params.outW;
10
  var t = index / params.outW;
11
+ {% if spatialRankSpec >= 2 %}
12
  let oh = t % params.outH;
13
  t /= params.outH;
14
  {% endif %}
15
+ {% if spatialRankSpec == 3 %}
16
  let od = t % params.outD;
17
  t /= params.outD;
18
  {% endif %}
 
21
 
22
  var acc = 0.0;
23
 
24
+ {% if spatialRankSpec == 3 %}
25
  for (var kd = 0u; kd < params.kernelD; kd += 1u) {
26
  let id = i32(od * params.strideD + kd * params.dilationD) - params.padD;
27
  if (id < 0 || id >= i32(params.inD)) { continue; }
28
  {% endif %}
29
+ {% if spatialRankSpec >= 2 %}
30
  for (var kh = 0u; kh < params.kernelH; kh += 1u) {
31
  let ih = i32(oh * params.strideH + kh * params.dilationH) - params.padH;
32
  if (ih < 0 || ih >= i32(params.inH)) { continue; }
 
34
  for (var kw = 0u; kw < params.kernelW; kw += 1u) {
35
  let iw = i32(ow * params.strideW + kw * params.dilationW) - params.padW;
36
  if (iw < 0 || iw >= i32(params.inW)) { continue; }
37
+ {% if spatialRankSpec == 1 %}
38
  let xIndex = (batch * params.channels + channel) * params.inW + u32(iw);
39
+ {% elif spatialRankSpec == 2 %}
40
  let xIndex = ((batch * params.channels + channel) * params.inH + u32(ih)) * params.inW + u32(iw);
41
  {% else %}
42
  let xIndex = (((batch * params.channels + channel) * params.inD + u32(id)) * params.inH + u32(ih)) * params.inW + u32(iw);
 
50
  acc += pow(abs(f32(x[xIndex])), params.p);
51
  {% endif %}
52
  }
53
+ {% if spatialRankSpec >= 2 %}
54
  }
55
  {% endif %}
56
+ {% if spatialRankSpec == 3 %}
57
  }
58
  {% endif %}
59
 
build/webgpu/pool-window-unroll.wgsl.jinja CHANGED
@@ -1,31 +1,28 @@
1
  // Compile-time-unrolled 2D NCHW pooling for small windows. Accumulation remains
2
- // kh-major/kw-minor, matching the runtime-loop fallbacks.
3
- {% if usesF16 %}
4
- enable f16;
5
- {% endif %}
6
  {{ env.wgsl.resourceDeclarations }}
7
 
8
- const OUT_W: u32 = {{ source.outW }}u;
9
- const OUT_H: u32 = {{ source.outH }}u;
10
- const IN_H: i32 = {{ source.inH }};
11
- const IN_W: i32 = {{ source.inW }};
12
- const IN_W_U: u32 = {{ source.inW }}u;
13
- const IN_PLANE: u32 = {{ source.inH * source.inW }}u;
14
- const STRIDE_H: u32 = {{ source.strideH }}u;
15
- const STRIDE_W: u32 = {{ source.strideW }}u;
16
- const PAD_TOP: i32 = {{ source.padTop }};
17
- const PAD_LEFT: i32 = {{ source.padLeft }};
18
- {% if source.op == "lp" and source.p != 1 and source.p != 2 %}
19
- const P: f32 = f32({{ source.p }});
20
  {% endif %}
21
 
22
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
23
  fn main(
24
- @builtin(global_invocation_id) gid: vec3<u32>,
25
- @builtin(num_workgroups) nwg: vec3<u32>
26
  ) {
27
  // Fold very large flat outputs into the dispatch's second dimension.
28
- let index = gid.x + gid.y * nwg.x * {{ tunables.WORKGROUP_SIZE }}u;
29
  if (index >= params.count) {
30
  return;
31
  }
@@ -37,23 +34,23 @@ fn main(
37
  let planeBase = plane * IN_PLANE;
38
  let startH = i32(oh * STRIDE_H) - PAD_TOP;
39
  let startW = i32(ow * STRIDE_W) - PAD_LEFT;
40
- {% for kh in range(source.kernelH) %}
41
- let ih_{{ kh }} = startH + {{ kh * source.dilationH }};
42
  {% endfor %}
43
- {% for kw in range(source.kernelW) %}
44
- let iw_{{ kw }} = startW + {{ kw * source.dilationW }};
45
  {% endfor %}
46
 
47
  var result = 0.0;
48
- {% for kh in range(source.kernelH) %}
49
  if (ih_{{ kh }} >= 0 && ih_{{ kh }} < IN_H) {
50
  let rowBase{{ kh }} = planeBase + u32(ih_{{ kh }}) * IN_W_U;
51
- {% for kw in range(source.kernelW) %}
52
  if (iw_{{ kw }} >= 0 && iw_{{ kw }} < IN_W) {
53
  let value_{{ kh }}_{{ kw }} = f32(x[rowBase{{ kh }} + u32(iw_{{ kw }})]);
54
- {% if source.op == "lp" and source.p == 2 %}
55
  result += value_{{ kh }}_{{ kw }} * value_{{ kh }}_{{ kw }};
56
- {% elif source.op == "lp" and source.p == 1 %}
57
  result += abs(value_{{ kh }}_{{ kw }});
58
  {% else %}
59
  result += pow(abs(value_{{ kh }}_{{ kw }}), P);
@@ -64,9 +61,9 @@ fn main(
64
  {% endfor %}
65
 
66
 
67
- {% if source.op == "lp" and source.p == 2 %}
68
  let output = sqrt(result);
69
- {% elif source.op == "lp" and source.p == 1 %}
70
  let output = result;
71
  {% else %}
72
  let output = pow(result, 1.0 / P);
 
1
  // Compile-time-unrolled 2D NCHW pooling for small windows. Accumulation remains
2
+ // kh-major/kw-minor, matching the loop-based implementations.
3
+ {% set p = p | default(0) %}
 
 
4
  {{ env.wgsl.resourceDeclarations }}
5
 
6
+ const OUT_W: u32 = {{ outW }}u;
7
+ const OUT_H: u32 = {{ outH }}u;
8
+ const IN_H: i32 = {{ inH }};
9
+ const IN_W: i32 = {{ inW }};
10
+ const IN_W_U: u32 = {{ inW }}u;
11
+ const IN_PLANE: u32 = {{ inH * inW }}u;
12
+ const STRIDE_H: u32 = {{ strideHSpec }}u;
13
+ const STRIDE_W: u32 = {{ strideWSpec }}u;
14
+ const PAD_TOP: i32 = {{ padTopSpec }};
15
+ const PAD_LEFT: i32 = {{ padLeftSpec }};
16
+ {% if op == "lp" and p != 1 and p != 2 %}
17
+ const P: f32 = f32({{ p }});
18
  {% endif %}
19
 
20
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
21
  fn main(
22
+ @builtin(global_invocation_id) gid: vec3<u32>
 
23
  ) {
24
  // Fold very large flat outputs into the dispatch's second dimension.
25
+ let index = gid.x + gid.y * {{ DISPATCH_FOLD_WIDTH }}u * {{ tunables.WORKGROUP_SIZE }}u;
26
  if (index >= params.count) {
27
  return;
28
  }
 
34
  let planeBase = plane * IN_PLANE;
35
  let startH = i32(oh * STRIDE_H) - PAD_TOP;
36
  let startW = i32(ow * STRIDE_W) - PAD_LEFT;
37
+ {% for kh in range(kernelHSpec) %}
38
+ let ih_{{ kh }} = startH + {{ kh * dilationHSpec }};
39
  {% endfor %}
40
+ {% for kw in range(kernelWSpec) %}
41
+ let iw_{{ kw }} = startW + {{ kw * dilationWSpec }};
42
  {% endfor %}
43
 
44
  var result = 0.0;
45
+ {% for kh in range(kernelHSpec) %}
46
  if (ih_{{ kh }} >= 0 && ih_{{ kh }} < IN_H) {
47
  let rowBase{{ kh }} = planeBase + u32(ih_{{ kh }}) * IN_W_U;
48
+ {% for kw in range(kernelWSpec) %}
49
  if (iw_{{ kw }} >= 0 && iw_{{ kw }} < IN_W) {
50
  let value_{{ kh }}_{{ kw }} = f32(x[rowBase{{ kh }} + u32(iw_{{ kw }})]);
51
+ {% if op == "lp" and p == 2 %}
52
  result += value_{{ kh }}_{{ kw }} * value_{{ kh }}_{{ kw }};
53
+ {% elif op == "lp" and p == 1 %}
54
  result += abs(value_{{ kh }}_{{ kw }});
55
  {% else %}
56
  result += pow(abs(value_{{ kh }}_{{ kw }}), P);
 
61
  {% endfor %}
62
 
63
 
64
+ {% if op == "lp" and p == 2 %}
65
  let output = sqrt(result);
66
+ {% elif op == "lp" and p == 1 %}
67
  let output = result;
68
  {% else %}
69
  let output = pow(result, 1.0 / P);
build/webgpu/pool2d-nchw-k2s2-vec4.wgsl.jinja CHANGED
@@ -1,6 +1,4 @@
1
- {% if usesF16 %}
2
- enable f16;
3
- {% endif %}
4
  {{ env.wgsl.resourceDeclarations }}
5
 
6
  // 2D NCHW LpPool specialised for the dense 2x2 / stride-2 / no-pad /
@@ -11,27 +9,27 @@ enable f16;
11
  // |x|^p over the 2x2 window, same four elements / same count as the scalar
12
  // fallback) and reduced by the p-th root; p=2 specialises to sum-of-squares +
13
  // sqrt, p=1 to sum-of-abs.
14
- const OUT_W: u32 = {{ source.outW }}u; // == IN_W / 2 (no pad, stride 2)
15
- const OUT_H: u32 = {{ source.outH }}u;
16
- const OUT_W_HALF: u32 = {{ source.outWHalf }}u;
17
- const IN_W_VEC4: u32 = {{ source.inWVec4 }}u; // input row length in vec4 units
18
- const IN_PLANE_VEC4: u32 = {{ source.inPlaneVec4 }}u;
19
- {% if source.p != 1 and source.p != 2 %}
20
- const P: f32 = f32({{ source.p }});
21
 
22
  {% endif %}
23
- {% if source.p == 2 %}
24
  fn term(v: {{ scalar }}) -> f32 { let f = f32(v); return f * f; }
25
- {% elif source.p == 1 %}
26
  fn term(v: {{ scalar }}) -> f32 { return abs(f32(v)); }
27
  {% else %}
28
  fn term(v: {{ scalar }}) -> f32 { return pow(abs(f32(v)), P); }
29
  {% endif %}
30
 
31
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
32
- fn main(@builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups) nwg: vec3<u32>) {
33
  // 2D-folded flat tile index (one tile = two output columns).
34
- let tile = gid.x + gid.y * nwg.x * {{ tunables.WORKGROUP_SIZE }}u;
35
  if (tile >= params.tileCount) {
36
  return;
37
  }
@@ -52,10 +50,10 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups)
52
  let acc1 = term(r0.z) + term(r0.w) + term(r1.z) + term(r1.w);
53
 
54
  let outBase = (plane * OUT_H + oh) * OUT_W + tileCol * 2u;
55
- {% if source.p == 2 %}
56
  y[outBase] = {{ scalar }}(sqrt(acc0));
57
  y[outBase + 1u] = {{ scalar }}(sqrt(acc1));
58
- {% elif source.p == 1 %}
59
  y[outBase] = {{ scalar }}(acc0);
60
  y[outBase + 1u] = {{ scalar }}(acc1);
61
  {% else %}
 
1
+ {% set p = p | default(0) %}
 
 
2
  {{ env.wgsl.resourceDeclarations }}
3
 
4
  // 2D NCHW LpPool specialised for the dense 2x2 / stride-2 / no-pad /
 
9
  // |x|^p over the 2x2 window, same four elements / same count as the scalar
10
  // fallback) and reduced by the p-th root; p=2 specialises to sum-of-squares +
11
  // sqrt, p=1 to sum-of-abs.
12
+ const OUT_W: u32 = {{ outW }}u; // == IN_W / 2 (no pad, stride 2)
13
+ const OUT_H: u32 = {{ outH }}u;
14
+ const OUT_W_HALF: u32 = {{ outWHalf }}u;
15
+ const IN_W_VEC4: u32 = {{ inWVec4 }}u; // input row length in vec4 units
16
+ const IN_PLANE_VEC4: u32 = {{ inPlaneVec4 }}u;
17
+ {% if p != 1 and p != 2 %}
18
+ const P: f32 = f32({{ p }});
19
 
20
  {% endif %}
21
+ {% if p == 2 %}
22
  fn term(v: {{ scalar }}) -> f32 { let f = f32(v); return f * f; }
23
+ {% elif p == 1 %}
24
  fn term(v: {{ scalar }}) -> f32 { return abs(f32(v)); }
25
  {% else %}
26
  fn term(v: {{ scalar }}) -> f32 { return pow(abs(f32(v)), P); }
27
  {% endif %}
28
 
29
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
30
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
31
  // 2D-folded flat tile index (one tile = two output columns).
32
+ let tile = gid.x + gid.y * {{ DISPATCH_FOLD_WIDTH }}u * {{ tunables.WORKGROUP_SIZE }}u;
33
  if (tile >= params.tileCount) {
34
  return;
35
  }
 
50
  let acc1 = term(r0.z) + term(r0.w) + term(r1.z) + term(r1.w);
51
 
52
  let outBase = (plane * OUT_H + oh) * OUT_W + tileCol * 2u;
53
+ {% if p == 2 %}
54
  y[outBase] = {{ scalar }}(sqrt(acc0));
55
  y[outBase + 1u] = {{ scalar }}(sqrt(acc1));
56
+ {% elif p == 1 %}
57
  y[outBase] = {{ scalar }}(acc0);
58
  y[outBase + 1u] = {{ scalar }}(acc1);
59
  {% else %}
build/webgpu/pool2d-nchw-separable.wgsl.jinja CHANGED
@@ -1,31 +1,18 @@
1
- {% if usesF16 %}
2
- enable f16;
3
- {% endif %}
4
  {{ env.wgsl.resourceDeclarations }}
5
 
6
  // Separable NCHW pooling: one spatial axis per pass.
7
  //
8
- // Both reductions here are associative, so a kernelH x kernelW window
9
- // factorizes into a reduction along W followed by one along H. The direct
10
- // kernel reads kernelH*kernelW inputs per output; separating them reads kernelW
11
- // into an intermediate cell that neighbouring outputs then share, plus kernelH
12
- // per output.
13
- //
14
- // The intermediate is f32 because the direct kernel also accumulates in f32
15
- // and casts once at the end, including for i32 input.
16
- //
17
- // Max pooling is bit-identical to the direct kernel because max is idempotent
18
- // as well as associative. Lp pooling is within tolerance but not bit-identical:
19
- // summing each row first regroups f32 additions relative to the direct kernel.
20
- //
21
- // `axis` selects the pass: "w" reduces x into tmp, and "h" reduces tmp into y.
22
- // AveragePool is not wired here because its denominator would require valid-tap
23
- // counts to travel alongside the sum.
24
 
25
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
26
- fn main(@builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups) nwg: vec3<u32>) {
27
- let index = gid.x + gid.y * nwg.x * {{ tunables.WORKGROUP_SIZE }}u;
28
- {% if source.axis == "w" %}
29
  if (index >= params.tmpCount) { return; }
30
  // One cell per (batch, channel, input row, output column).
31
  let ow = index % params.outW;
 
 
 
 
1
  {{ env.wgsl.resourceDeclarations }}
2
 
3
  // Separable NCHW pooling: one spatial axis per pass.
4
  //
5
+ // A kernelH x kernelW window factorizes into a width reduction followed by a
6
+ // height reduction. The width pass writes one f32 intermediate per input row
7
+ // and output column; the height pass completes the selected pooling operation.
8
+ // `axis == "w"` writes `tmp`, and `axis == "h"` writes `y`.
9
+ // Both passes accumulate |x|^p in f32; the height pass applies the final
10
+ // p-root. Row-first accumulation changes the association of f32 additions.
 
 
 
 
 
 
 
 
 
 
11
 
12
  @compute @workgroup_size({{ tunables.WORKGROUP_SIZE }})
13
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
14
+ let index = gid.x + gid.y * {{ DISPATCH_FOLD_WIDTH }}u * {{ tunables.WORKGROUP_SIZE }}u;
15
+ {% if axisSpec == "w" %}
16
  if (index >= params.tmpCount) { return; }
17
  // One cell per (batch, channel, input row, output column).
18
  let ow = index % params.outW;
build/webgpu/test.json CHANGED
@@ -1,5 +1,4 @@
1
  {
2
- "op": "ai.onnx.LpPool",
3
  "fixtureArrays": {
4
  "onnx_backend_lppool_2d_input_x": [1.764052391052246, 0.40015721321105957, 0.978738009929657, 2.2408931255340576, 1.8675580024719238, -0.9772778749465942, 0.9500884413719177, -0.15135720372200012, -0.10321885347366333, 0.4105985164642334, 0.14404356479644775, 1.4542734622955322, 0.7610377073287964, 0.12167501449584961, 0.44386324286460876, 0.3336743414402008, 1.4940791130065918, -0.2051582634449005, 0.3130677044391632, -0.8540957570075989, -2.5529897212982178, 0.653618574142456, 0.8644362092018127, -0.7421650290489197, 2.269754648208618, -1.4543657302856445, 0.04575851559638977, -0.18718385696411133, 1.5327792167663574, 1.4693588018417358, 0.154947429895401, 0.37816253304481506, -0.8877857327461243, -1.980796456336975, -0.34791216254234314, 0.15634897351264954, 1.2302906513214111, 1.202379822731018, -0.38732680678367615, -0.302302747964859, -1.0485529899597168, -1.420017957687378, -1.7062702178955078, 1.950775384902954, -0.5096521973609924, -0.4380742907524109, -1.2527953386306763, 0.7774903774261475, -1.6138978004455566, -0.21274028718471527, -0.8954665660858154, 0.38690251111984253, -0.5108051300048828, -1.18063223361969, -0.02818222902715206, 0.4283318817615509, 0.06651721894741058, 0.30247190594673157, -0.6343221068382263, -0.3627411723136902, -0.6724604368209839, -0.35955315828323364, -0.8131462931632996, -1.7262825965881348, 0.17742614448070526, -0.4017809331417084, -1.630198359489441, 0.46278226375579834, -0.9072983860969543, 0.05194539576768875, 0.7290905714035034, 0.12898291647434235, 1.1394007205963135, -1.234825849533081, 0.4023416340351105, -0.6848101019859314, -0.8707971572875977, -0.5788496732711792, -0.3115525245666504, 0.056165341287851334, -1.1651498079299927, 0.9008265137672424, 0.4656624495983124, -1.5362436771392822, 1.4882521629333496, 1.895889163017273, 1.1787796020507812, -0.1799248307943344, -1.0707526206970215, 1.0544517040252686, -0.4031769335269928, 1.222445011138916, 0.2082749754190445, 0.9766390323638916, 0.3563663959503174, 0.7065731883049011, 0.01050002034753561, 1.7858705520629883, 0.12691208720207214, 0.4019893705844879, 1.8831506967544556, -1.3477590084075928, -1.2704850435256958, 0.969396710395813, -1.1731233596801758, 1.9436211585998535, -0.4136189818382263, -0.747454822063446, 1.922942042350769, 1.4805147647857666, 1.8675589561462402, 0.9060446619987488, -0.8612256646156311, 1.910064935684204, -0.26800337433815, 0.8024563789367676, 0.9472519755363464, -0.15501008927822113, 0.6140793561935425, 0.922206699848175, 0.37642553448677063, -1.0994007587432861, 0.29823818802833557, 1.3263858556747437, -0.694567859172821, -0.14963454008102417, -0.4351535439491272, 1.8492637872695923, 0.6722947359085083, 0.40746182203292847, -0.7699160575866699, 0.5392491817474365, -0.6743326783180237, 0.0318305566906929, -0.6358460783958435, 0.676433265209198, 0.5765908360481262, -0.20829875767230988, 0.39600670337677, -1.0930615663528442, -1.4912575483322144, 0.43939170241355896, 0.16667349636554718, 0.6350314617156982, 2.3831448554992676, 0.9444794654846191, -0.9128222465515137, 1.117016315460205, -1.31590735912323, -0.46158459782600403, -0.06824160367250443, 1.7133426666259766, -0.7447548508644104, -0.8264385461807251, -0.09845252335071564, -0.6634783148765564, 1.1266359090805054, -1.0799314975738525, -1.1474686861038208, -0.43782004714012146, -0.49803245067596436, 1.9295320510864258, 0.9494208097457886, 0.08755124360322952, -1.225435495376587, 0.8443629741668701, -1.0002152919769287, -1.5447710752487183, 1.1880297660827637, 0.31694260239601135, 0.9208588004112244, 0.31872764229774475, 0.8568305969238281, -0.6510255932807922, -1.034242868423462, 0.6815944910049438, -0.8034096360206604, -0.6895498037338257, -0.4555324912071228, 0.01747915893793106, -0.3539939224720001, -1.3749512434005737, -0.6436184048652649, -2.223403215408325, 0.6252314448356628, -1.602057695388794, -1.1043833494186401, 0.05216507986187935, -0.73956298828125, 1.543014645576477, -1.2928569316864014, 0.2670508623123169, -0.039282817393541336, -1.1680934429168701, 0.523276686668396, -0.1715463250875473, 0.7717905640602112, 0.8235041499137878, 2.163235902786255, 1.336527943611145, -0.3691818416118622, -0.2393791824579239, 1.0996595621109009, 0.6552637219429016, 0.6401315331459045, -1.6169559955596924, -0.024326125159859657, -0.7380309104919434, 0.279924601316452, -0.09815038740634918, 0.9101788997650146, 0.31721821427345276, 0.7863279581069946, -0.4664191007614136, -0.9444462656974792, -0.410049706697464, -0.017020413652062416, 0.37915173172950745, 2.2593090534210205, -0.0422571524977684, -0.9559450149536133, -0.34598177671432495, -0.463595986366272, 0.4814814627170563, -1.5407969951629639, 0.06326199322938919, 0.15650653839111328, 0.23218104243278503, -0.5973160862922668, -0.23792172968387604, -1.4240609407424927, -0.49331986904144287, -0.5428614616394043, 0.4160500466823578, -1.1561824083328247, 0.7811980843544006, 1.494484543800354, -2.0699849128723145, 0.42625874280929565, 0.676908016204834, -0.6374370455741882, -0.3972718119621277, -0.1328805834054947, -0.29779088497161865, -0.3090129792690277, -1.6760038137435913, 1.1523315906524658, 1.0796185731887817, -0.8133642673492432, -1.4664243459701538, 0.5210648775100708, -0.5757879614830017, 0.14195317029953003, -0.3193284273147583, 0.6915387511253357, 0.694749116897583, -0.7255973815917969, -1.383363962173462, -1.5829384326934814, 0.6103793978691101, -1.188859224319458, -0.5068163275718689, -0.596314013004303, -0.05256729573011398, -1.9362797737121582, 0.1887785941362381, 0.523891031742096, 0.08842208981513977, -0.3108861744403839, 0.09740016609430313, 0.3990463316440582, -2.772592782974243, 1.9559123516082764, 0.3900933265686035, -0.6524085998535156, -0.3909533619880676, 0.4937417805194855, -0.11610393971204758, -2.030684471130371, 2.06449294090271, -0.11054065823554993, 1.0201727151870728, -0.6920498609542847, 1.5363770723342896, 0.28634369373321533, 0.6088438630104065, -1.0452533960342407, 1.211145281791687, 0.6898181438446045, 1.3018462657928467, -0.62808758020401, -0.48102712631225586, 2.3039166927337646, -1.0600157976150513, -0.13594970107078552, 1.1368913650512695, 0.09772496670484543, 0.582953691482544, -0.39944902062416077, 0.3700558841228485, -1.3065268993377686, 1.6581306457519531, -0.1181640475988388, -0.6801782250404358, 0.6663830876350403, -0.4607197940349579, -1.3342584371566772, -1.3467174768447876, 0.6937731504440308, -0.15957343578338623, -0.13370156288146973, 1.0777437686920166, -1.1268258094787598, -0.7306777238845825, -0.38487979769706726, 0.09435158967971802, -0.042171452194452286, -0.28688719868659973, -0.06162640079855919, -0.10730527341365814, -0.7196043729782104, -0.8129929900169373, 0.27451634407043457, -0.8909150958061218, -1.1573553085327148, -0.3122922480106354, -0.15766701102256775, 2.256723403930664, -0.7047002911567688, 0.9432607293128967, 0.7471883296966553, -1.188944935798645, 0.7732529640197754, -1.1838806867599487, -2.659172296524048, 0.6063195466995239, -1.7558906078338623, 0.4509344696998596, -0.684010922908783, 1.6595507860183716, 1.0685093402862549, -0.4533858001232147, -0.6878376007080078, -1.214077353477478, -0.4409226179122925, -0.2803554832935333, -0.3646935522556305, 0.1567038595676422, 0.5785214900970459, 0.3496544659137726, -0.7641439437866211, -1.4377914667129517, 1.3645318746566772, -0.6894491910934448, -0.6522936224937439, -0.5211893320083618, -1.8430695533752441, -0.477973997592926, -0.47965580224990845, 0.6203582882881165, 0.6984571218490601, 0.003770889015868306, 0.9318483471870422, 0.33996498584747314, -0.01568211242556572, 0.1609281748533249, -0.1906534880399704, -0.3948495090007782, -0.26773354411125183, -1.1280113458633423, 0.2804417014122009, -0.9931235909461975, 0.841631293296814, -0.24945858120918274, 0.04949498176574707, 0.49383679032325745, 0.6433144807815552, -1.5706233978271484, -0.20690368115901947, 0.8801789283752441, -1.698105812072754, 0.3872804641723633, -2.2555642127990723, -1.022506833076477, 0.03863055258989334, -1.6567151546478271, -0.9855107665061951, -1.4718350172042847, 1.6481349468231201, 0.16422775387763977, 0.5672903060913086, -0.22267509996891022, -0.353431761264801, -1.6164741516113281, -0.2918373644351959, -0.7614921927452087, 0.8579239249229431, 1.1411018371582031, 1.466578722000122, 0.8525519371032715, -0.5986539125442505, -1.1158969402313232, 0.7666631937026978, 0.35629281401634216, -1.768538475036621, 0.3554818034172058, 0.8145198225975037, 0.05892558768391609, -0.18505367636680603, -0.8076484799385071, -1.4465347528457642, 0.8002979755401611, -0.3091144561767578, -0.23346665501594543, 1.732721209526062, 0.6845011115074158, 0.37082499265670776, 0.14206179976463318, 1.519994854927063, 1.719589352607727, 0.9295051097869873, 0.5822246074676514, -2.0946030616760254, 0.12372191250324249, -0.13010695576667786, 0.09395322948694229, 0.9430460929870605, -2.7396771907806396, -0.5693120360374451, 0.26990434527397156, -0.4668455421924591, -1.4169061183929443, 0.8689634799957275, 0.276871919631958, -0.9711045622825623, 0.3148171901702881, 0.8215857148170471, 0.005292646121233702, 0.8005648255348206, 0.07826017588376999, -0.3952289819717407, -1.1594204902648926, -0.08593076467514038, 0.19429293274879456, 0.875832736492157, -0.1151074692606926, 0.4574156105518341, -0.9646120071411133, -0.782629132270813, -0.11038929969072342, -1.0546284914016724, 0.8202478289604187, 0.46313032507896423, 0.27909576892852783, 0.33890411257743835, 2.021043539047241, -0.46886420249938965, -2.2014412879943848, 0.19930019974708557, -0.05060354247689247, -0.5175190567970276, -0.9788298606872559, -0.43918952345848083, 0.18133842945098877, -0.5028166770935059, 2.4124536514282227, -0.9605043530464172, -0.793117344379425, -2.2886199951171875, 0.2514844238758087, -2.016406536102295, -0.5394546389579773, -0.27567052841186523, -0.709727942943573, 1.7388726472854614, 0.9943943619728088, 1.3191368579864502, -0.8824188113212585, 1.1285940408706665, 0.4960009455680847, 0.7714059352874756, 1.029438853263855, -0.9087632298469543, -0.4243176281452179, 0.8625960350036621, -2.6556191444396973, 1.5133280754089355, 0.5531320571899414, -0.045703962445259094, 0.2205076515674591, -1.0299352407455444, -0.3499433696269989, 1.1002843379974365, 1.2980220317840576, 2.6962239742279053, -0.07392466813325882, -0.6585529446601868, -0.5142339468002319, -1.0180418491363525, -0.07785475254058838, 0.38273242115974426, -0.03424227982759476, 1.0963468551635742, -0.23421579599380493, -0.3474506437778473, -0.5812684893608093, -1.6326345205307007, -1.5677677392959595, -1.1791579723358154, 1.3014280796051025, 0.8952602744102478, 1.3749641180038452, -1.3322116136550903, -1.9686247110366821, -0.6600562930107117, 0.17581894993782043, 0.49869027733802795, 1.0479722023010254, 0.2842796742916107, 1.7426687479019165, -0.22260567545890808, -0.9130792021751404, -1.6812182664871216, -0.8889713287353516, 0.2421179562807083, -0.8887202739715576, 0.9367424845695496, 1.4123276472091675, -2.369586944580078, 0.8640522956848145, -2.2396039962768555, 0.40149906277656555, 1.2248705625534058, 0.06485610455274582, -1.2796891927719116, -0.5854312181472778, -0.26164543628692627, -0.18224477767944336, -0.2028968334197998, -0.10988277941942215, 0.21348005533218384, -1.2085736989974976, -0.24201983213424683, 1.518261194229126, -0.3846454322338104, -0.4438360929489136, 1.0781973600387573, -2.5591845512390137, 1.1813786029815674, -0.6319037675857544, 0.1639285683631897, 0.09632135927677155, 0.9424681067466736, -0.26759475469589233, -0.6780257821083069, 1.2978458404541016, -2.3641738891601562, 0.020334182307124138, -1.3479254245758057, -0.7615733742713928, 2.011256694793701, -0.04459542781114578, 0.19506970047950745, -1.7815628051757812, -0.7290446758270264, 0.1965574026107788, 0.354757696390152, 0.616886556148529, 0.00862789899110794, 0.5270041823387146, 0.4537819027900696, -1.8297404050827026, 0.037005722522735596, 0.7679024338722229, 0.5898798108100891, -0.36385881900787354, -0.8056265115737915, -1.118311882019043, -0.13105401396751404, 1.1330798864364624, -1.9518041610717773, -0.6598917245864868, -1.1398024559020996, 0.7849575281143188, -0.554309606552124, -0.47063764929771423, -0.21694956719875336, 0.44539326429367065, -0.3923889994621277, -3.046143054962158, 0.5433118939399719, 0.43904295563697815, -0.2195410281419754, -1.0840365886688232, 0.35178011655807495, 0.37923553586006165, -0.47003287076950073, -0.2167314738035202, -0.9301565289497375, -0.1785890907049179, -1.550429344177246, 0.41731882095336914, -0.9443684816360474, 0.23810315132141113, -1.4059629440307617, -0.5900576710700989, -0.11048940569162369, -1.6606998443603516, 0.11514787375926971, -0.37914755940437317, -1.7423561811447144, -1.303242802619934, 0.605120062828064, 0.8955559730529785, -0.13190864026546478, 0.40476182103157043, 0.2238435596227646, 0.3296229839324951, 1.2859840393066406, -1.5069984197616577, 0.6764607429504395, -0.38200896978378296, -0.2242589294910431, -0.3022497296333313, -0.37514710426330566, -1.2261961698532104, 0.1833391934633255, 1.670943021774292, -0.05613302066922188, -0.0013850427931174636, -0.6872990131378174, -0.11747454851865768, 0.4661664366722107, -0.3702424466609955, -0.45380404591560364, 0.4032645523548126, -0.9180047512054443, 0.2524966299533844, 0.820321798324585, 1.3599485158920288, -0.09038200974464417, 1.367597222328186, 1.0344098806381226, -0.9962126612663269, -1.2179385423660278, -0.3049636483192444, 1.0289355516433716, -0.07228700816631317, -0.60065758228302, 1.5522432327270508, 0.2869044840335846, -2.320594310760498, 0.31716063618659973, 0.5200406312942505, 0.22560866177082062, 0.4497120976448059, -0.06727560609579086, -1.3183958530426025, -0.3707039952278137, -0.9456157684326172, -0.9327409267425537, -1.2630683183670044, 0.45248907804489136, 0.09789614379405975, -0.4481653571128845, -0.6493379473686218, -0.023423105478286743, 1.0791947841644287, -2.004215717315674, 0.3768765330314636, -0.5457119941711426, -1.8845858573913574, -1.9457030296325684, -0.9127835035324097, 0.219509556889534, 0.39306291937828064, -0.9389815926551819, 1.0170209407806396, 1.4229835271835327, 0.39608657360076904, -0.5914026498794556, 1.1244192123413086, 0.7553957104682922, 0.8674074411392212, -0.6564636826515198, -2.834554433822632, 2.116791009902954, -1.610878348350525, -0.03576807305216789, 2.3807454109191895, 0.33057674765586853, 0.9492464661598206, -1.502396583557129, -1.7776669263839722, -0.5327028036117554, 1.090749740600586, -0.34624946117401123, -0.7946363091468811, 0.1979672908782959, 1.081935167312622, -1.444940209388733, -1.2105430364608765, -0.788669228553772, 1.0946383476257324, 0.23482152819633484, 2.1321535110473633, 0.9364457130432129, -0.035095177590847015, 1.265077829360962, 0.2114970088005066, -0.7049213647842407, 0.6799748539924622, -0.6963266730308533, -0.29039710760116577, 1.3277827501296997, -0.10128148645162582, -0.8031414151191711, -0.46433767676353455, 1.021790623664856, -0.55254065990448, -0.3868708610534668, -0.5102927684783936, 0.18392549455165863, -0.3854897618293762, -1.601836085319519, -0.8871809244155884, -0.9327890276908875, 1.2433193922042847, 0.8126740455627441, 0.5872593522071838, -0.5053583383560181, -0.8157915472984314, -0.5075175762176514, -1.051880121231079, 2.4972004890441895, -2.245321750640869, 0.5640085339546204, -1.2845523357391357, -0.1043434888124466, -0.9880019426345825, -1.177628993988037, -1.1401963233947754, 1.7549861669540405, -0.13298842310905457, -0.7657021880149841, 0.5557869672775269, 0.010349314659833908, 0.7200337648391724, -1.8242566585540771, 0.3036039173603058, 0.7726948261260986, -1.6615983247756958, 0.44819527864456177, 1.6961815357208252, -0.014857703819870949, 0.8214059472084045, 0.670570433139801, -0.7075057029724121, 0.03976673632860184, -1.5669946670532227, -0.45130303502082825, 0.2656879723072052, 0.723100483417511, 0.024612125009298325, 0.7199837565422058, -1.1029062271118164, -0.10169727355241776, 0.01927938498556614, 1.8495912551879883, -0.21416665613651276, -0.4990166425704956, 0.021351223811507225, -0.9191134572029114, 0.1927538514137268, -0.3650552034378052, -1.7913275957107544, -0.05858655273914337, -0.317543089389801, -1.6324232816696167, -0.06713415682315826, 1.4893559217453003, 0.5213037729263306, 0.6119272112846375, -1.3414967060089111, 0.4768983721733093, 0.1484495848417282, 0.5290452241897583, 0.42262861132621765, -1.3597806692123413, -0.041400812566280365, -0.7578708529472351, -0.05008409544825554, -0.8974009156227112, 1.3124703168869019, -0.8589723706245422, -0.8989421725273132, 0.0745864063501358, -1.077099084854126, -0.4246633052825928, -0.8299645781517029, 1.4111720323562622, 0.7858038544654846, -0.05746951699256897, -0.39121705293655396, 0.9409176111221313, 0.40520408749580383, 0.4980524182319641, -0.026192236691713333, -1.688230037689209, -0.1124659851193428, -0.5324898958206177, 0.6450552940368652, 1.0118424892425537, -0.6579510569572449, 0.4683852195739746, 1.7358789443969727, -0.6677127480506897, 1.6819217205047607, -0.8525858521461487, 0.0229597557336092, -0.011145612224936485, 0.011498900130391121, -0.8376780152320862, -0.5911831259727478, -0.6677202582359314, 0.32696259021759033, 0.33003512024879456, 2.2259442806243896, 1.3709889650344849, -0.5098432302474976, 0.3248696029186249, 0.9971179962158203, 0.030601823702454567, -0.06964157521724701, 0.0515749417245388, 0.8672766089439392, -0.8483205437660217, -0.32566946744918823, 0.47043314576148987, 0.3114470839500427, 0.23958276212215424, -0.3698011636734009, 0.9725357890129089, 2.1338682174682617, 0.40641549229621887, -0.19317670166492462, 0.7557402849197388, -0.5391326546669006, -0.7496903538703918, 0.03280874714255333, -2.582796573638916, -1.1539503335952759, -0.3479618430137634, -1.3533889055252075, -1.0326430797576904, -0.43674832582473755, -1.642965316772461, -0.4060717821121216, -0.5352701544761658, 0.02540520764887333, 1.1541839838027954, 0.17250441014766693, 0.02106202207505703, 0.09945445507764816, 0.22739277780056, -1.0167386531829834, -0.11477532237768173, 0.30875125527381897, -1.3707599639892578, 0.8656529188156128, 1.081376075744629, -0.6313759684562683, -0.24133779108524323, -0.8781903386116028, 0.6993804574012756, -1.0612223148345947, -0.2224770039319992, -0.8589199185371399, 0.05095427855849266, -1.79422926902771, 1.326461672782898, -0.9646064043045044, 0.059894684702157974, -0.21252304315567017, -0.7621145248413086, -0.8877801299095154, 0.9363985657691956, -0.525640606880188, 0.2711701989173889, -0.8014968633651733, -0.6471814513206482, 0.4722471535205841, 0.9304084777832031, -0.17531640827655792, -1.421919822692871, 1.9979560375213623, -0.8565493226051331, -1.5415873527526855, 2.5944244861602783, -0.40403228998184204, -1.4617327451705933, -0.6834397912025452, 0.36754488945007324, 0.19031155109405518, -0.8517292141914368, 1.822723627090454, -0.5215796828269958, -1.184686541557312, 0.9606934189796448, 1.329062819480896, -0.8174930810928345, -1.401347279548645, 1.0304383039474487, -2.047323703765869, -1.2266216278076172, 0.9674461483955383, -0.05535254627466202, -0.2639373540878296, 0.3528166115283966, -0.15277442336082458, -1.2986867427825928, 1.2760753631591797, 1.3250139951705933, 0.20533256232738495, 0.04513401538133621, 2.3396248817443848, -0.2764328420162201, -0.2595769762992859, 0.36448124051094055, 1.471321940422058, 1.5927706956863403, -0.25857263803482056, 0.3083312511444092, -1.3780834674835205, -0.3119761049747467, -0.840290367603302, -1.0068317651748657, 1.6815767288208008, -0.7922866344451904, -0.5316058993339539, 0.3658487796783447, 1.2978252172470093, 0.4811151325702667, 2.759355068206787, -0.07466797530651093, 0.2587164342403412, 0.2756006717681885, 1.4350494146347046, 0.5072389245033264, -0.11622969806194305, -0.9474886059761047, 0.24444346129894257, 1.4013447761535645, -0.4103817939758301, 0.5289435982704163, 0.2461477816104889, 0.8635196685791016, -0.8047537207603455, 2.346647024154663, -1.2791610956192017, -0.36555108428001404, 0.9380925297737122, 0.29673317074775696, 0.8299861550331116, -0.49610233306884766, -0.07480498403310776, 0.012231983244419098, 1.5692596435546875, 0.6904290318489075, 0.7966721057891846, -0.657926082611084, 0.9688826203346252, 0.22558166086673737, 1.3891453742980957, 2.0140602588653564, -0.30676576495170593, -0.40630313754081726, -0.8640449643135071, -0.14357951283454895, -0.38202545046806335, 0.3595044016838074, -0.14456681907176971, -0.36159926652908325, 1.0645850896835327, -0.9378802180290222, 0.4331079423427582, -0.4059417247772217, 0.7243685126304626, 1.3852615356445312, -0.30309826135635376, 0.44103291630744934, 0.17879286408424377, -0.7994223833084106, 0.24078750610351562, 0.28912049531936646, 0.4128708243370056, -0.1983989030122757, 0.09419230371713638, -1.1476109027862549, -0.3581140637397766, 0.5559626817703247, 0.8924738764762878, -0.4223148226737976, 0.10471402853727341, 0.22805333137512207, 0.2014799416065216, 0.5407735705375671, -1.8180776834487915, -0.049324069172143936, 0.23903359472751617, -1.0003303289413452, 1.6739857196807861, 0.16155926883220673, 1.5634047985076904, -0.7905229926109314, -0.9073001146316528, 0.22425222396850586, -1.678688406944275, 0.2149655967950821, 0.09721922874450684, 1.0156652927398682, 0.7010413408279419, -0.4174773395061493, -1.0974966287612915, 1.7123051881790161, -0.7921150326728821, -1.0455245971679688, -1.0848560333251953, 1.1173052787780762, -0.5189002156257629, -0.7537044882774353, 0.13768982887268066, -0.20694470405578613, -0.6780954599380493, 0.7539914846420288, 1.0653154850006104, 0.9853175282478333, 0.7669196724891663, 0.40262553095817566, -1.7758879661560059, 1.6692508459091187, 0.30198919773101807, 0.6081564426422119, 1.1149623394012451, 1.4333524703979492, 0.41839802265167236, 0.4355461597442627, -0.5992242693901062, 0.03308974951505661, -0.854161262512207, -0.7199405431747437, -0.8935744166374207, -0.15602388978004456, 1.049093246459961, 3.1709747314453125, 0.189499631524086, -1.348413109779358, 1.2649832963943481, -0.3007838726043701, -0.6606085896492004, 0.20984947681427002, -1.2406245470046997, 0.22246316075325012, -0.088375523686409, 0.09837790578603745, 0.3814162611961365, 0.06749225407838821, 0.016338083893060684, 0.28431451320648193, 0.4154006242752075, -1.031482458114624, -1.4299912452697754, -0.06163805350661278, -1.4327354431152344, 0.08753146976232529, 0.9387468695640564, 0.6071116924285889, -1.0481704473495483, -0.8602624535560608, 0.3283012807369232, -0.40129780769348145, -0.31665530800819397, 0.5969064831733704, -0.9872866868972778, -0.4012347161769867, -0.8000825047492981, -1.0431294441223145, -0.8570781946182251, 0.6774621605873108, 0.05182038992643356, -0.8791606426239014, -0.2311016023159027, -1.6388072967529297, -0.7333127856254578, 2.1495745182037354, -0.09024384617805481, 0.731658935546875, -0.06548837572336197, 0.3481692373752594, 0.6632580757141113, -1.104616641998291, -0.030936257913708687, 1.5788651704788208, -0.7955005764961243, -0.5664398670196533, -0.3076912760734558, 0.2690240740776062, 0.5249178409576416, 1.267411708831787, 0.49949824810028076, -0.062053125351667404, 1.2591670751571655, 0.7041110396385193, -1.495679497718811, 2.5263681411743164, 1.7699214220046997, -0.16821421682834625, 0.3779101073741913, 1.3243587017059326, -0.17220079898834229, 0.7303518056869507, 1.1045784950256348, -1.0148259401321411, -0.6023318767547607, 0.9214084148406982, 0.4608144760131836, 0.923796534538269, -0.13256801664829254, -0.28900521993637085, -1.998639464378357, -1.1460003852844238, 0.0470660962164402, 0.8245572447776794, 0.53117835521698, -0.12824197113513947, -0.2717715799808502, 0.21717962622642517, 0.07821118086576462, 1.404545545578003, 0.1464407742023468, -1.481245994567871, -1.2725580930709839, 1.5187593698501587, -1.1711604595184326, 0.7644974589347839, -0.2683727443218231, -0.16975829005241394, -0.13413278758525848, 1.2213850021362305, -0.19284182786941528, -0.03331928327679634, -1.5308034420013428, 0.20669050514698029, 0.5310425162315369, 0.23914557695388794, 1.3978962898254395, 0.05517135560512543, 0.29897746443748474, 1.6485040187835693, -1.5500141382217407, -0.4558253586292267, 1.4261587858200073, 0.9361291527748108, 0.6783800721168518, 0.8326507210731506, 0.32706621289253235, 1.6315973997116089, 0.3777591586112976, 0.23986710608005524, 0.15895867347717285, 0.19286395609378815, -1.1570172309875488, 0.7706730365753174, -0.13043972849845886, 1.8219151496887207, -0.07565046846866608, 0.4209182858467102, 0.24660219252109528, -0.625557005405426, 0.9921368360519409, 1.9050636291503906, -0.014777219854295254, -0.3004787862300873, -0.3550287187099457, -1.8923618793487549, -0.17781314253807068, 0.2509981095790863, 1.0547579526901245, 0.960047721862793, -0.4164990782737732, -0.2768229842185974, 1.1239053010940552, -0.17346389591693878, -0.5100295543670654, 1.392518401145935, 1.0375856161117554, 0.018791791051626205, -0.5937774181365967, -2.011880397796631, 0.5897036194801331, -0.8963696956634521, -1.962731957435608, 1.5848205089569092, 0.6479678153991699, -1.1390081644058228, -1.214401364326477, 0.8709617853164673, -0.8779706358909607, 1.2961498498916626, 0.616459310054779, 0.5365965366363525, 0.40469545125961304, 0.19145087897777557, 0.8805112242698669, -0.45408037304878235, 0.08595197647809982, 0.7519465684890747, 0.5629897117614746, -1.1949868202209473, -0.5004096627235413, 0.2528035044670105, -0.408014714717865, 1.7746585607528687, -0.39315319061279297, -0.16221845149993896, 0.7694301605224609, 0.3305327296257019, -0.14527446031570435, -0.7564935088157654, 0.30151405930519104, 1.039096474647522, 0.4790952205657959, -0.7781835198402405, 1.7367749214172363, -1.4465779066085815, -1.5826855897903442, 0.960557222366333, 0.2258404791355133, -0.5494985580444336, -1.098570704460144, 2.3207998275756836, 0.1170908734202385, 0.5342011451721191, 0.3178851008415222, 0.4348079562187195, 0.5400944352149963, 0.7324240207672119, -0.37522241473197937, -0.2916419804096222, -1.7410228252410889, -0.7803044319152832, 0.2711127996444702, 1.0450233221054077, 0.5990395545959473, -0.34069234132766724, -1.2631728649139404, -2.7773592472076416, 1.1517339944839478, -0.5892289876937866, -0.4484650194644928, 0.13157397508621216, -1.40556001663208, -0.34978216886520386, 2.0234718322753906, 0.5053869485855103, 0.35924914479255676, -1.5824944972991943, 2.2436017990112305, -1.4227949380874634, 1.922324776649475, -2.115056037902832, 1.4053654670715332, 1.6180542707443237, -0.8244091272354126, 0.422580361366272, 0.547480583190918, -0.8137944936752319, -1.449117660522461, -1.3177173137664795, 0.5410082340240479, -0.08511560410261154, -0.5643010139465332, 0.9667680263519287, 0.5080679059028625, -0.7554627060890198, -1.2012015581130981, 0.5232617259025574, -0.5375833511352539, 0.09920486062765121, 1.5762989521026611, 0.5023282170295715, -0.862267017364502, 0.16066119074821472, -0.952644944190979, 1.6085221767425537, -0.5615787506103516, 0.20727074146270752, 0.30773258209228516, 0.15925046801567078, -1.958548903465271, -1.4464210271835327, -0.45235028862953186, 0.3194318413734436, -0.13777922093868256, -0.957147479057312, -1.3484243154525757, -0.4015575349330902, -0.4684760570526123, 0.5128364562988281, -0.3263184726238251, 0.6027076840400696, -0.5946497917175293, -0.2559576630592346, -0.3480463922023773, -0.7823669910430908, 0.6251186728477478, -0.8135960102081299, -0.5216414928436279, -0.0731196478009224, -1.2973796129226685, -0.3249349594116211, -0.7113063335418701, -0.38815417885780334, -0.05992800369858742, -0.7999136447906494, -0.220075786113739, 1.3086687326431274, -0.025798557326197624, 1.1452621221542358, 0.3464944362640381, 0.774160623550415, -0.7744589447975159, 0.10490716248750687, 0.13391292095184326, -0.6126257181167603, -0.8228283524513245, -1.4902653694152832, 1.496139645576477, -0.9724028706550598, 1.3462210893630981, -0.4674931764602661, -0.8624932765960693, 0.6225191354751587, -0.6311919689178467, 0.5684589147567749, -0.33281177282333374, 0.4804244935512543, -0.96818608045578, 0.8313510417938232, 0.4879726767539978, -0.919650673866272, 2.6429357528686523, 0.5401230454444885, 2.2904670238494873, 1.600267767906189, -0.1888347864151001, -0.41227176785469055, -0.40345919132232666, -1.8300285339355469, -0.6958351135253906, 0.24676603078842163, 1.5259575843811035, -0.7727718949317932, 0.8820565938949585, -1.2525933980941772, -0.5863200426101685, -0.4576405882835388, 0.3718110918998718, 0.45730963349342346, 0.9623417258262634, 0.7708369493484497, 0.24316821992397308, 0.39036494493484497, 1.5885306596755981, -0.5109261870384216, 0.7747282981872559, -1.808143973350525, 0.41133424639701843, -0.4832495450973511, 0.0025711823254823685, 1.040086269378662, 0.1646438091993332, 0.885187566280365, 1.4737647771835327, 0.38909396529197693, 1.1710410118103027, -0.32656097412109375, -0.00820988230407238, -0.5226194262504578, 1.0429775714874268, 0.4140913486480713, -0.5072344541549683, 0.15466883778572083, 1.041568398475647, -0.03926799073815346, -0.9489328265190125, 0.1319117546081543, -1.9805655479431152, 0.7687706351280212, -0.4213275909423828, -0.4693107306957245, 0.8756957054138184, -1.3651628494262695, 1.9470986127853394, -0.4802420437335968, -0.523250937461853, 1.0212247371673584, 0.7086952924728394, 2.4512298107147217, -0.21120598912239075, -0.1204066351056099, -1.479315996170044, -0.3321022689342499, -0.721431314945221, -0.4487670063972473, -1.7441877126693726, 1.6606075763702393, -1.416603446006775, -2.8022027015686035, -1.1884244680404663, -0.6038395762443542, -1.1495540142059326, 1.0983035564422607, -0.1378391832113266, 0.025385605171322823, 0.6103917360305786, 0.28601253032684326, 0.9785673022270203, -1.1094775199890137, -0.5475180745124817, 0.6659671664237976, -2.5345544815063477, -1.3751845359802246, 0.5009922385215759, -0.4802490472793579, 0.9361075758934021, 0.8091803193092346, -1.1980929374694824, 0.4066570997238159, 1.201697826385498, 0.14743439853191376, -0.9774648547172546, 0.8793899416923523, 0.6354245543479919, 0.542610764503479, 0.7159388661384583, -2.9946129322052, 0.8809375762939453, 1.8081318140029907, 0.4366384744644165, 0.19272899627685547, 0.6964386701583862, 0.33822548389434814, 0.6517812609672546, 0.0014710002578794956, -0.7667048573493958, -1.0043227672576904, -0.9981917142868042, -1.3730425834655762, -1.0677419900894165, 1.7612661123275757, 0.7540956735610962, -0.6250274181365967, -0.3903926908969879, 0.11255753040313721, -0.6555450558662415, 0.06751685589551926, 0.7776041626930237, -0.035742733627557755, 0.3360157310962677, 0.8864915370941162, -0.2721317708492279, 0.28479060530662537, -0.3093775808811188, -0.028528869152069092, -0.3247302770614624, -0.5288698673248291, 0.1737118512392044, 0.566545307636261, 0.1463044434785843, 0.4987269639968872, -0.7379317879676819, -1.2037352323532104, 0.4170435070991516, 0.6878814101219177, 0.04985726624727249, 1.3480358123779297, 0.9076988101005554, 2.6805708408355713, -0.20080851018428802, -0.9988487958908081, -0.7401368021965027, -0.5654978156089783, 0.4760313928127289, -2.1580686569213867, 1.3185510635375977, -0.2392965853214264, -0.24679355323314667, -1.0793431997299194, -0.11422555148601532, 0.013239767402410507, -0.12194492667913437, 0.3390592634677887, -0.5896320343017578, -0.8958157896995544, 0.5483281016349792, 0.0986674502491951, 0.19718106091022491, 1.0590271949768066, -1.02256441116333, -0.8552404642105103, 1.257219672203064, -1.482883334159851, -1.3094121217727661, 0.8178618550300598, 0.23820018768310547, 0.1052321344614029, -0.09165941178798676, 0.031267546117305756, -0.09211211651563644, 1.3554426431655884, -0.3981481194496155, -0.1613735407590866, 1.7944488525390625, 0.027509702369570732, 2.2320163249969482, -0.10497970134019852, 1.367414951324463, -1.655344009399414, 0.15364445745944977, -1.5844736099243164, 0.844454288482666, -1.2128678560256958, 0.28376954793930054, -0.2821958661079407, -1.1582032442092896, -1.6193599700927734, -0.511040449142456, 1.7406294345855713, -0.29348504543304443, 0.9172215461730957, -0.057042866945266724, 0.8767267465591431, -1.8269113302230835, -0.4031883180141449, 0.9494055509567261, -0.16325494647026062, -0.08645528554916382, -0.43046191334724426, 1.1493793725967407, 0.2975143492221832, 0.04402227699756622, 0.6430545449256897, 0.5882249474525452, 0.21258704364299774, 1.5470315217971802, -0.060287535190582275, 0.2780810594558716, -0.642952561378479, 0.1501152217388153, 1.5877615213394165, -0.6432576179504395, -1.1335928440093994, 0.9967596530914307, -0.1487661451101303, 0.09600420296192169, -0.045113302767276764, 0.07912172377109528, 0.8505306839942932, -0.8391242027282715, -1.0117740631103516, 0.08496813476085663, -1.6064397096633911, -1.3730535507202148, 1.8666831254959106, 0.7574683427810669, -0.010056471452116966, 1.2380069494247437, -1.0405992269515991, -0.3156031370162964, 0.6234536170959473, 0.8906716704368591, 0.5129168629646301, -2.541238784790039, -0.9680821299552917, 0.47706809639930725, -0.3559514880180359, 2.540231704711914, 0.9265583157539368, 0.558081865310669, -1.1169495582580566, -0.035296738147735596, 0.24120396375656128, 1.1277836561203003, 0.881131112575531, 1.0329891443252563, -0.923911988735199, 1.4121516942977905, -1.3804306983947754, -0.5359145402908325, 0.430771142244339, -0.14989158511161804, -1.0060368776321411, -0.8215498328208923, -1.548254370689392, 0.5319746136665344, 1.2605688571929932, -0.10039350390434265, -0.40034881234169006, -1.472322940826416, 0.9132019281387329, 2.2113044261932373, -1.7974557876586914, -1.0634329319000244, -0.679593026638031, -0.5643178820610046, 0.22734594345092773, 1.614249587059021, 1.0085972547531128, 0.5275973677635193, -0.723928689956665, -1.1196281909942627, -0.7967752814292908, 1.5480668544769287, -0.061743300408124924, -0.4468362629413605, -0.18375572562217712, 0.8246182203292847, -1.3128496408462524, 1.4148740768432617, 0.15647625923156738, -0.2163439840078354, 0.4428461194038391, 0.21839706599712372, -0.34419646859169006, -0.2527106702327728, -0.8688625693321228, 0.6563907265663147, -0.5319938063621521, -0.9562584161758423, 0.1658635288476944, 1.3291412591934204, -0.04834462329745293, -0.6081012487411499, 0.4038960337638855, 1.9367125034332275, -1.4519054889678955, 0.38220277428627014, 0.2050866186618805, 1.1615338325500488, 0.9909091591835022, -0.18670910596847534, -1.68451726436615, 0.8065637946128845, -0.8351926803588867, -0.9467403888702393, 1.1483505964279175, -0.9108504056930542, 1.402844786643982, 0.3358447253704071, 0.3191184103488922, 0.3072647750377655, -1.6384236812591553, -1.7763886451721191, 0.21555306017398834, 0.5680073499679565, 0.08261103183031082, -0.8215345144271851, 0.018922103568911552, -0.0820341557264328, -0.957158088684082, 1.0139721632003784, -1.730276107788086, 0.5887424349784851, 0.3843234181404114, 1.0097118616104126, -1.0053118467330933, 0.10140714794397354, 2.1711649894714355, 0.6620742678642273, 0.10058120638132095, 0.5391612648963928, 0.08617684245109558, 2.1908979415893555, 0.983636200428009, -0.08561495691537857, 0.2523314356803894, -0.39079800248146057, 1.2098500728607178, -1.4061048030853271, -1.604738473892212, 1.4587147235870361, 2.1531198024749756, 0.46830490231513977, 0.11273793876171112, 0.657267689704895, -0.6470535397529602, 0.1712435483932495, 0.0389087051153183, 0.6265642642974854, -1.557998538017273, -0.5070347785949707, 0.8449956178665161, -0.6755938529968262, -0.9933613538742065, 2.042072057723999, 0.03811800107359886, -0.5789181590080261, -1.6923704147338867, 0.7293463349342346, 0.6991361379623413, -0.2987596094608307, -1.102230191230774, -0.024549422785639763, -0.8358560800552368, -0.9420936107635498, -0.10321275144815445, -1.0513904094696045, 0.24664895236492157, 0.6079925298690796, -0.8396324515342712, -1.3682451248168945, 1.5612796545028687, -0.9402702450752258, -0.6599426865577698, 0.21301716566085815, 0.5993693470954895, -0.2563169002532959, 0.4607943296432495, -0.4009861648082733, -0.9711706638336182, 1.4263168573379517, 2.4884417057037354, 1.695969581604004, 0.14180663228034973, 1.8334354162216187, 0.3557035028934479, -0.47728627920150757, 0.4663795828819275, -0.09439250826835632, -0.9831181764602661, -0.8983219861984253, 0.8020517230033875, -1.8465319871902466, 0.6041367650032043, -1.6295835971832275, -2.1211764812469482, -1.8388465642929077, 1.966763973236084, -0.19623395800590515, 0.08658318221569061, 1.419255018234253, 0.9341797232627869, -1.391505241394043, 0.869006335735321, 0.18418125808238983, -0.34167808294296265, 0.024290913715958595, 1.279811978340149, -0.8859664797782898, 0.400885671377182, -0.009657236747443676, -1.7971645593643188, -0.8022531867027283, 0.193213552236557, 1.29734206199646, 1.0013309717178345, 0.5972124934196472, -0.8152756690979004, 1.8012139797210693, 0.2152404636144638, -1.0063655376434326, -0.18290497362613678, 0.8962484002113342, 0.007617498282343149, 0.8868646621704102, 1.103693962097168, 0.40053069591522217, -0.8577026128768921, 0.1354546695947647, 0.045165855437517166, 1.8593463897705078, -1.6263219118118286, -0.13482245802879333, -0.5840935707092285, 0.33510562777519226, -2.4375643730163574, 1.1149245500564575, 0.013748487457633018, -1.8447011709213257, -0.36111313104629517, 0.60896235704422, -1.5914478302001953, 0.003222216386348009, -1.0574736595153809, -0.5559850335121155, 0.026738382875919342, 0.18345025181770325, -0.47074249386787415, 0.2727963924407959, 0.8179776072502136, -0.27891427278518677, 1.4315677881240845, 1.4622141122817993, -0.42870205640792847, -0.6378405690193176, -1.6641730070114136, -0.12656933069229126, -0.3634377717971802, 0.7790512442588806, -1.5096615552902222, -0.2773914039134979, 0.9687443971633911, -0.7303571105003357, -0.7623615264892578, -1.446940302848816, 2.6205737590789795, -0.7474731802940369, -1.300346851348877, -0.8038504123687744, -0.7742950916290283, -0.2693897783756256, 0.8253722190856934, -0.2983231544494629, -0.9228233098983765, -1.451338529586792, 0.021857358515262604, 0.0425390750169754, 1.5309323072433472, 0.09244773536920547, -0.09900831431150436, -1.0506538152694702, -0.3059525787830353, -0.4384744465351105, -0.370164155960083, -0.9592553973197937, 0.5383296012878418, -0.1424454152584076, -0.2003534734249115, -1.7140461206436157, 0.4936440885066986, 0.48701533675193787, -0.8391293883323669, 0.9901213645935059, -1.3647582530975342, -0.021869909018278122, -0.271207332611084, -1.3171747922897339, 0.1897026151418686, 1.7025701999664307, 0.0676342323422432, -0.46302175521850586, 0.4470241665840149, 0.10571999847888947, 0.02776213176548481, -0.4255422055721283, 1.4219756126403809, 0.45636335015296936, -0.5286706686019897, -0.10800383985042572, -0.7408667206764221, -0.6082911491394043, -0.6407257318496704, -1.134311556816101, 0.7772769927978516, -0.29104146361351013, 0.55412757396698, -0.6701259016990662, -0.060362495481967926, -0.7110406160354614, 0.7196681499481201, -0.24841929972171783, -0.7308735847473145, -1.6417032480239868, 0.2756665349006653, -0.7083850502967834, -0.015779217705130577, -0.49173009395599365, 0.9541895985603333, 0.5441447496414185, 0.4472121000289917, -0.6161211133003235, 0.46629005670547485, 1.7148315906524658, -0.8321860432624817, 0.17233914136886597, -1.6492170095443726, 1.3985620737075806, -0.39791208505630493, 0.7825788855552673, -1.7232282161712646, 1.7975393533706665, -0.35687151551246643, 0.5456573367118835, 0.15081819891929626, -0.25547078251838684, 1.685792326927185, -1.6480462551116943, 0.29871365427970886, 0.9106456637382507, -0.02985612116754055, -0.11817078292369843, -0.14268770813941956, -1.227636456489563, 0.03812738507986069, 0.5127175450325012, 0.06859922409057617, -0.2722761034965515, -0.4897250235080719, -0.2792966663837433, 1.2577441930770874, -2.086634874343872, 0.040071457624435425, -0.3277549147605896, 1.4558079242706299, 0.05549222603440285, 1.484925627708435, -2.123889923095703, 0.45958489179611206, 0.2800578474998474, 1.3905339241027832, -1.6413486003875732, -0.1550358086824417, 0.06606025993824005, -0.49579548835754395, 1.2165777683258057, -0.3386821746826172, 2.0347626209259033, 1.0541778802871704, 0.9508336782455444, 0.5592989921569824, -1.0636955499649048, -0.4310963451862335, 0.5727513432502747, 0.6775570511817932, 1.307183861732483, -0.46744102239608765, -0.8601533770561218, 0.8591042160987854, -0.809626579284668, 0.8733118176460266, 1.1997361183166504, 0.4561530351638794, -0.3575790226459503, 0.0410822257399559, 0.5934659242630005, 0.01018551830202341, 2.198296308517456, -0.990670919418335, -1.0026686191558838, -0.9768953919410706, -0.5895799398422241, -2.178931474685669, -0.6296504139900208, -0.6532847285270691, 0.07851402461528778, 0.41780057549476624, -1.2402163743972778, 0.9000542163848877, 1.8022422790527344, -0.2082851082086563, 1.5743712186813354, 0.19898949563503265, 1.988731861114502, 1.1172834634780884, -1.5639046430587769, 0.01862736977636814, 1.054324984550476, 0.030546581372618675, -0.036883529275655746, 1.26976478099823, -0.7098541855812073, 0.01751561276614666, 0.323625773191452, -0.33379095792770386, -0.02012910321354866, 0.7750232815742493, 0.4328376352787018, -0.8087175488471985, -1.1041239500045776, -0.7891021966934204, 0.0012484558392316103, -0.15993978083133698, -0.8319575190544128, -0.5981504321098328, -1.5200393199920654, 0.4178537130355835, -0.040018726140260696, -1.2597873210906982, 0.028620503842830658, 1.3426220417022705, -0.7399358749389648, 1.3151376247406006, -0.3234574794769287, 0.19782817363739014, 0.09775080531835556, 1.401523470878601, 0.15843383967876434, -1.1419013738632202, -1.310970425605774, -1.5329210758209229, -1.7119702100753784, 0.046135060489177704, -0.9583745002746582, -0.08081161230802536, -0.7038590312004089, -0.770784318447113, -0.4808453321456909, 0.7035855650901794, 0.9291451573371887, 0.37117254734039307, -0.9898225665092468, 0.6436312794685364, 0.688896656036377, 0.27464720606803894, -0.6036204099655151, 0.7088595628738403, 0.4228185713291168, -3.116856575012207, 0.6444520354270935, -1.9137426614761353, 0.6635615825653076, -0.15407240390777588, 1.1936116218566895, -0.09816121309995651, -0.8866142630577087, -0.1473536640405655, 1.0598063468933105, 0.02624661847949028, -0.11433515697717667, 0.7435535192489624, 0.2103593647480011, -0.005927405785769224, 1.3660600185394287, 1.5551140308380127, 0.6133262515068054, -0.2859591543674469, 1.4969110488891602, 1.183119535446167, 0.7188971638679504, -1.2160766124725342, 0.14067190885543823, -0.7436721920967102, -0.15901225805282593, 0.24005693197250366, 0.1001594066619873, -0.4751751124858856, 1.272953748703003, -1.6961312294006348, 0.7301835417747498, -1.8574832677841187, 0.3825981318950653, -0.8869042992591858, 0.8783037662506104, 0.08645252138376236, 0.24770638346672058, -1.0182793140411377, -0.6545701622962952, 0.20721739530563354, 0.5835699439048767, 2.929096221923828, 0.22285832464694977, 0.9760375022888184, -1.556933879852295, -1.3298919200897217, -0.35549476742744446, -1.197427749633789, 1.4863992929458618, -0.4102186858654022, 1.3821818828582764, 1.486782431602478, 0.042779721319675446, 0.5017997622489929, -0.05609947443008423, 0.538437008857727, 0.48334184288978577, -0.12364962697029114, 0.5049699544906616, 1.723696231842041, 0.7130162119865417, 0.3257996141910553, 0.12476952373981476, -1.0126731395721436, -1.0272969007492065, 0.3233565390110016, -1.3693910837173462, -0.7663276195526123, 1.2815113067626953, 1.9142297506332397, -1.6659560203552246, 1.6266496181488037, -0.21143829822540283, -0.015005087479948997, -0.11341162770986557, 1.080544114112854, -1.60767662525177, 0.456163614988327, -0.9448701739311218, 0.5707885026931763, 1.5427963733673096, -0.0004173264023847878, 0.37415507435798645, 0.4095517694950104, -0.7995935082435608, 1.5116393566131592, 1.7064682245254517, 0.7017833590507507, 0.07328543066978455, -0.46189382672309875, -0.6264902353286743, 1.7108365297317505, 1.4144150018692017, -0.06366148591041565, -1.5799305438995361, -2.8320119380950928, -1.0834267139434814, -0.13062039017677307, 1.4006890058517456, -0.6516562104225159, 0.5048154592514038, 1.3031809329986572, 0.12853631377220154, -0.14244787395000458, -1.3087635040283203, -1.2024753093719482, 0.4160996377468109, -0.20090752840042114, 0.12253131717443466, -0.04727771505713463, 0.6641440391540527, -0.7846873998641968, -0.33558064699172974, 1.8961821794509888, -0.7997861504554749, -0.28157544136047363, -0.5893867015838623, 0.4447813630104065, 1.0223922729492188, -0.4982116222381592, -0.43141433596611023, -0.27898159623146057, 0.5298337936401367, -0.7393953204154968, -0.37595996260643005, -2.3721938133239746, -1.3817449808120728, -0.11244375258684158, 0.8978641629219055, 0.29507577419281006, -1.0987684726715088, -1.4002561569213867, 0.17468009889125824, -1.652803659439087, 1.0659267902374268, 0.06389619410037994, -1.6073201894760132, -0.9659538865089417, -0.7243112921714783, -0.7731925249099731, -1.4899330139160156, -0.8746625185012817, -0.6844015717506409, -0.7112857699394226, 1.1279566287994385, 0.10482780635356903, -0.9932572245597839, -0.3346216082572937, -0.8795570731163025, -0.3000066578388214, 0.8755091428756714, 0.25227078795433044, 2.2856011390686035, 0.3759274184703827, -0.9135944843292236, 0.8097407221794128, 1.0799312591552734, 1.0941669940948486, -1.0942409038543701, -0.14763741195201874, 1.1318119764328003, -1.684728980064392, -0.4994167685508728, -1.4269376993179321, -0.932570219039917, -1.0124571323394775, 1.2505698204040527, -0.2345380336046219, -0.8633555769920349, -1.035605788230896, 0.1416671723127365, -0.011135627515614033, 1.3440743684768677, 0.5000166893005371, -1.431797742843628, -0.6289806962013245, 1.0700725317001343, -0.6210827231407166, 1.734572172164917, -1.0982894897460938, 0.5726133584976196, -0.8612155318260193, -0.5095951557159424, 1.0985816717147827, -0.12706716358661652, 0.8134522438049316, 0.4732905924320221, 0.753865659236908, -0.8881881833076477, -0.22157439589500427, 0.42425262928009033, -0.8490728735923767, 1.6295000314712524, -0.777228057384491, -0.3000035881996155, -1.0065590143203735, -2.143308162689209, 1.796918511390686, -0.204338937997818, -0.44791483879089355, -0.19871506094932556, 1.4198639392852783, -0.9651066064834595, 0.6795678734779358, -0.42378824949264526, -0.5966708660125732, 0.5670582056045532, 0.9882405996322632, -0.5139029622077942, -0.7688491344451904, -1.169095754623413, 1.1035038232803345, -0.5752559900283813, -1.8491307497024536, 1.409952163696289, -1.3698594570159912, 0.7794605493545532, 0.18342864513397217, 0.28791543841362, -0.584375262260437, 0.36559146642684937, -1.6677799224853516, 0.5880377292633057, 1.5570100545883179, 0.8840271830558777, -2.0195400714874268, -0.9842090010643005, -0.18779492378234863, 0.4869373142719269, -0.10665267705917358, -0.4932143986225128, 0.5953003168106079, 1.1641517877578735, -0.2322940081357956, 0.728929877281189, -2.5790507793426514, -0.9375093579292297, -0.32125893235206604, -0.48856621980667114, 0.33279821276664734, 1.0137505531311035, 0.5066690444946289, -0.6222254633903503, -1.5227681398391724, 0.556964099407196, -1.8381767272949219, 0.6530373096466064, -0.18844908475875854, -1.1758350133895874, 0.2872573137283325, -0.00287610269151628, -0.03659729287028313, -0.08422330021858215, 0.41952410340309143, 0.9244340062141418, 0.4966152012348175, 1.012133240699768, -0.04413972049951553, 1.6184593439102173, 0.5711098313331604, -0.543694019317627, -1.0938950777053833, 0.20579680800437927, -1.3065215349197388, -0.9733759760856628, 0.2390870749950409, -0.6078874468803406, -0.9333162307739258, -0.03447504714131355, 0.07267789542675018, -0.2058340311050415, -0.37754690647125244, 0.8546427488327026, 0.3424273431301117, -0.22342611849308014, 2.4643218517303467, 0.19383174180984497, 1.1320050954818726, -0.5609809756278992, -1.3629409074783325, -0.7917565107345581, -0.2680097818374634, -0.4966081976890564, 1.3363862037658691, -0.120041124522686, 0.4614688754081726, -0.04648115485906601, -0.4335543215274811, 0.03799601271748543, 1.7140514850616455, -0.767948567867279, 0.7669904232025146, -1.0260072946548462, -0.4596264362335205, 0.0035832058638334274, 0.3263750970363617, 1.4831286668777466, -0.05008264258503914, -0.8436155915260315, 0.6500419974327087, -0.36416980624198914, 0.23868156969547272, -0.11622244119644165, -1.9434568881988525, 0.5082991719245911, 0.5833680033683777, 0.9266047477722168, 1.8004627227783203, -1.1951037645339966, 0.5165074467658997, 0.409294992685318, -0.41908198595046997, 0.39710623025894165, 0.49964696168899536, -1.2186838388442993, 0.24622276425361633, -0.9179843068122864, -0.6518564820289612, -1.7747448682785034, -0.47336092591285706, -0.2035706788301468, 0.5498568415641785, 0.0008999266428872943, -1.5422881841659546, 0.8621480464935303, -0.11858662217855453, 0.4883705973625183, 0.9659361243247986, 1.4226047992706299, 1.9612269401550293, -0.07223875820636749, 0.31112444400787354, -1.0783610343933105, 1.0616002082824707, -1.184887409210205, -1.8052517175674438, 0.8303859829902649, -0.5216965079307556, 0.777607262134552, 0.40807464718818665, -1.6300026178359985, -2.719679355621338, -1.0966017246246338, 0.016491487622261047, -1.2217763662338257, -0.6527614593505859, -1.4589407444000244, 0.16987796127796173, 0.09082593023777008, -0.48139262199401855, 1.397065281867981, 1.4977149963378906, 0.5652672052383423, -1.7997711896896362, -1.1046901941299438, 0.40713033080101013, -0.628557562828064, -0.48709142208099365, 0.8989673852920532, 0.5108748078346252, 1.3141543865203857, -0.42920929193496704, 1.3752254247665405, -0.554131269454956, 1.4994914531707764, 0.10583464056253433, -0.8605097532272339, -1.631219506263733, -0.3014723062515259, -0.25623270869255066, 0.8576619029045105, -0.11059050261974335, -0.4324319660663605, 1.0770374536514282, -0.22482655942440033, -0.5762417912483215, 0.5746089220046997, -0.4898282289505005, 0.6588021516799927, -0.5969170928001404, -0.22295917570590973, 0.15217697620391846, -0.3741263151168823, -0.013451469130814075, 0.8154719471931458, 0.41060179471969604, 0.4809698462486267, -0.6354304552078247, 0.8528297543525696, 0.6695623397827148, 1.004419207572937, -0.7263658046722412, -0.17245860397815704, 0.6335338950157166, -0.6088151335716248, -0.22612246870994568, 1.925805687904358, 1.95176100730896, 1.2399405241012573, 0.9385851621627808, -1.0192511081695557, 0.5125622153282166, -0.3591165840625763, -1.0585719347000122, -0.5090058445930481, 0.11566507071256638, -0.547355592250824, -0.5507994294166565, 0.7920414805412292, 0.14410649240016937, 0.23345808684825897, 0.11187239736318588, -0.6757031679153442, -1.3705719709396362, 0.31056469678878784, -0.5070366263389587, -2.010782241821289, -0.3925672471523285, -1.0922179222106934, 0.6986502408981323, 0.5216252207756042, 0.49689313769340515, -0.6650416254997253, 0.7315515875816345, 0.3196497857570648, -0.409854531288147, -0.4533374309539795, 0.8927081823348999, -0.4736040532588959, 0.3036564588546753, 1.0339570045471191, 1.909342646598816, 1.6638730764389038, 0.9008227586746216, -1.5059113502502441, -0.6890484094619751, -0.5480871796607971, 1.6531498432159424, -0.6993179321289062, 0.38616636395454407, 0.10086706280708313, -0.9351271986961365, 0.3818240165710449, 0.3982960879802704, -1.2557748556137085, 1.2228775024414062, -2.086509943008423, -0.5907571315765381, 0.9719703197479248, -1.1932578086853027, 0.3502659201622009, -1.2963603734970093, -0.09302414208650589, -2.3137731552124023, -0.8425716757774353, -1.5429214239120483, -0.4017637372016907, -0.4152314066886902, -0.6736641526222229, 0.7979131937026978, -0.8868796229362488, 0.6343866586685181, 1.6292757987976074, 0.13906414806842804, -0.8576701879501343, -1.2493385076522827, -0.7097851037979126, 0.7046427130699158, 0.1555907279253006, 0.9367952346801758, 0.7703309059143066, 0.14081065356731415, 0.4734882712364197, 1.8552461862564087, 1.4156562089920044, -0.3027460277080536, 0.9896794557571411, 0.5858508348464966, 1.1363880634307861, 0.6716165542602539, -0.9741674065589905, -1.6196845769882202, 0.5726270079612732, 1.902618169784546, -0.7756640911102295, -0.1880897432565689, -1.035747766494751, 1.1778295040130615, -2.3051669597625732, -2.263660192489624, 0.375019907951355, -0.08234364539384842, -0.479623019695282, -0.30109480023384094, 0.5369879007339478, -0.41380399465560913, -1.0969250202178955, -0.9273629188537598, 0.8883388638496399, -0.5247419476509094, -1.3852776288986206, 0.10217832773923874, 0.5049947500228882, 1.3289607763290405, 0.21790339052677155, -0.6597112417221069, 0.47400787472724915, 0.7271748781204224, -0.0389053076505661, -0.044599391520023346, 0.26013290882110596, -0.06985649466514587, 0.25011390447616577, -1.0219132900238037, -1.1504377126693726, -0.8361113667488098, 0.6422109603881836, 0.2587975561618805, 1.0402389764785767, -0.18669092655181885, -1.1436413526535034, 1.144553542137146, -0.01876705512404442, 1.2834550142288208, 0.5979464650154114, 2.1886186599731445, -0.21977297961711884, 0.900723934173584, 0.8913640975952148, -0.5551263689994812, -0.17248231172561646, -1.4617383480072021, -1.5487961769104004, 0.12656879425048828, 0.7930070757865906, 0.6380240321159363, 0.34002459049224854, 0.8630171418190002, -0.5896977782249451, -0.27253276109695435, 0.7375215291976929, 0.4331187307834625, -0.2101888209581375, 1.3207943439483643, -1.2920012474060059, -0.5186786651611328, -0.28339776396751404, 0.8165348768234253, 0.0023851979058235884, -1.2614917755126953, 0.5140041708946228, 1.0875463485717773, 0.7393045425415039, 0.6191549301147461, -1.874313473701477, -0.8998864889144897, 0.4820806086063385, -0.05488818511366844, 0.5225576162338257, -1.2663426399230957, -0.06149476394057274, -1.3897809982299805, -1.9536786079406738, 0.2957790791988373, 0.8425887823104858, 0.24561642110347748, -0.03299647942185402, -1.5620143413543701, 1.0061070919036865, -0.044044896960258484, 1.959562063217163, 0.9423143267631531, -2.0051255226135254, 0.7550497055053711, -1.3965352773666382, -0.7594954967498779, -0.2507566809654236, -0.0940624475479126, 0.39756521582603455, -1.0228550434112549, -1.1506919860839844, 0.6006051898002625, -0.013250268064439297, 0.17437304556369781, -2.193683385848999, -0.17713738977909088, -0.8907291889190674, -0.9206264019012451, 0.9219347834587097, -1.0956711769104004, -1.092896580696106, -0.3310106098651886, 0.4502888321876526, -0.8840147256851196, 1.2341440916061401, 1.4498475790023804, -0.8814470767974854, -0.24508175253868103, -0.7786754965782166, -1.6853821277618408, 0.30301105976104736, 0.7335948944091797, 2.011864185333252, -0.8974094986915588, 1.3362350463867188, 1.3423537015914917, 0.19785331189632416, 0.6021634936332703, 0.8732730746269226, 1.9740999937057495, 0.47780856490135193, -0.06013788655400276, -0.8661687970161438, 0.30532076954841614, 1.0241649150848389, 0.24461035430431366, -0.7799232602119446, 0.0890762060880661, -0.12915347516536713, 0.2647387683391571, -1.6618484258651733, 0.5507886409759521, 0.59542316198349, 0.44485342502593994, -0.003762817243114114, -1.8059362173080444, -0.019322792068123817, 1.0607149600982666, -0.8601288795471191, -1.989269495010376, -1.5405579805374146, 0.3140257000923157, 0.37287601828575134, 0.8862931728363037, -0.05525899678468704, -1.5003284215927124, -0.8185041546821594, 0.8188393712043762, 0.1404959112405777, 0.649829626083374, 0.4347887933254242, -0.20496055483818054, -0.17400683462619781, 1.8571022748947144, 0.4146742522716522, -0.128587543964386, 0.45541998744010925, 0.22290581464767456, -2.1573562622070312, 0.6500844955444336, 1.820939302444458, -0.7802798748016357, 1.454035758972168, -0.25686970353126526, 0.29347139596939087, 1.0703600645065308, -0.7200014591217041, 1.2424938678741455, -1.2142173051834106, -0.8751547336578369, -0.5935203433036804, 0.6620053648948669, -0.34087440371513367, -1.5199744701385498, -0.2165328711271286, -0.7842214107513428, 0.7312936186790466, -0.343235045671463, 0.07077407836914062, -0.40547245740890503, 0.43393898010253906, -0.18359076976776123, 0.3251987099647522, -2.593388557434082, 0.09725087881088257, 0.41391366720199585, -0.1992800533771515, 0.669392466545105, 0.7386070489883423, 1.3042138814926147, 0.10481160879135132, -1.9138007164001465, -2.285499334335327, -1.6018409729003906, -0.037907060235738754, -0.1573052853345871, 0.2762398421764374, -0.6252459287643433, -0.7364911437034607, 0.5550479292869568, 0.6559244394302368, -0.2566501498222351, -0.03847665712237358, 0.4043143391609192, 0.504343569278717, -1.1439807415008545, -0.7195738554000854, -1.230545997619629, -0.5069066286087036, 0.8123335838317871, 0.5462718605995178, -1.0980979204177856, 0.5122667551040649, 0.08584310859441757, -0.4939267039299011, -1.4064596891403198, -0.17482337355613708, 0.6799439787864685, -2.163097620010376, -0.3961232006549835, 2.2542836666107178, 0.6726367473602295, 0.259832501411438, -0.7371851801872253, -0.6783298254013062, -0.08328839391469955, 1.6028636693954468, 0.4655891954898834, -0.872158408164978, 1.17678701877594, -0.29259419441223145, 1.6973464488983154, -0.5666030049324036, -1.0032657384872437, 0.1746295839548111, 0.9823269844055176, 1.037444829940796, 0.1591917723417282, -0.9880967140197754, -0.5053406953811646, -2.018281936645508, -0.9131215214729309, -0.17845681309700012, 0.38900214433670044, -0.33945432305336, -0.05697905644774437, -0.3961854577064514, 0.7510253190994263, -0.8991129398345947, 0.8375478982925415, 1.9608807563781738, 0.4727896451950073, -0.5270916223526001, -0.5362701416015625, 1.2098371982574463, -1.1265894174575806, -0.9538044333457947, -1.1644484996795654, -1.278513789176941, -1.0448163747787476, 0.7899049520492554, 1.1022825241088867, -0.6970731019973755, 0.20733404159545898, 0.7591567039489746, 0.10056420415639877, -0.9549427628517151, -1.4704017639160156, 1.0104275941848755, 0.49617940187454224, 0.5769559144973755, -1.1076469421386719, 0.23497718572616577, 0.6289995908737183, 0.3140338361263275, -0.7450231909751892, 1.0122605562210083, -1.5276319980621338, 0.9287419319152832, 1.081055998802185, 1.572330355644226, -0.3424921929836273, -0.9994300007820129, 0.7938803434371948, -0.699215292930603, 0.043995510786771774, -0.3174622058868408, -0.9020719528198242, 0.32099947333335876, -1.3920159339904785, 0.5922057032585144, -0.9669311046600342, -1.7317312955856323, -0.05010746046900749, 0.431633859872818, 0.5769345760345459, 0.8183537125587463, -2.35364031791687, -1.005144476890564, 0.10665229707956314, 1.5190032720565796, 0.7837445139884949, 1.9013400077819824, -0.5249394178390503, 0.274416983127594, -1.099970817565918, -0.40435221791267395, -0.7352957129478455, -0.6339886784553528, -0.3934491276741028, 0.0027175399009138346, 0.022212663665413857, 0.5434534549713135, 0.1399884670972824, -0.34404563903808594, -0.5225785374641418, -0.30713170766830444, -0.4490371346473694, 0.49097105860710144, 0.8655251860618591, 1.2740445137023926, -0.7977027893066406, 0.4693722128868103, -1.3946796655654907, 0.3731747269630432, 1.0826722383499146, -0.14958950877189636, 1.0726360082626343, -1.1385679244995117, -0.8886452913284302, -0.13580983877182007, 1.0222103595733643, -0.41742944717407227, -0.45355311036109924, -0.9916283488273621, 0.20288103818893433, 1.2466951608657837, 0.700680136680603, 0.6966506838798523, -0.20697447657585144, -0.563309371471405, 0.6772459149360657, -0.03191107511520386, -0.1736082285642624, 0.8982406258583069, -0.19778744876384735, -0.837776243686676, 0.9091885089874268, 0.08071988821029663, -1.0370293855667114, -1.1129058599472046, 0.09541187435388565, 2.337409734725952, -0.3928205966949463, -0.33627384901046753, 1.5237711668014526, -0.05728119984269142, -1.4484668970108032, -1.5727964639663696, 1.2266639471054077, 0.6663545370101929, 0.8261256814002991, -0.05775655806064606, -0.7267120480537415, -0.2171631157398224, 0.13603121042251587, -0.8383111357688904, 0.5614498853683472, -1.2595961093902588, -0.33275875449180603, -0.20400787889957428, -0.6910198330879211, -2.20550537109375, 0.4478696584701538, -0.7557507753372192, 1.3257079124450684, -0.34198227524757385, -0.5413596034049988, 0.09152194857597351, 1.053439736366272, -0.5634076595306396, 1.0147377252578735, 1.4403036832809448, 0.9903228282928467, 1.6264314651489258, 1.292646050453186, 1.5148823261260986, 1.6043263673782349, 0.20806953310966492, -0.429223895072937, -2.2622437477111816, -1.3227331638336182, -0.44828280806541443, -0.38173508644104004, -0.1527944654226303, -1.0007604360580444, -1.5957776308059692, -0.13022316992282867, -0.18941792845726013, -0.8075540661811829, -0.7421521544456482, -0.9401565790176392, -0.39652374386787415, -0.856302797794342, 1.2598752975463867, 0.24099673330783844, -0.9723179340362549, -0.280447781085968, -1.1802855730056763, 1.012168288230896, 1.3841867446899414, 1.2520020008087158, -1.1446926593780518, -0.09126701951026917, -0.4015706777572632, 0.5620130896568298, -1.0079097747802734, -0.6758916974067688, -0.41321703791618347, 0.15328846871852875, 0.694128692150116, -0.32872769236564636, 0.6639650464057922, 0.8220763802528381, -0.21321523189544678, -1.2456581592559814, -1.1711903810501099, 0.5917269587516785, -0.476224422454834, -1.7126293182373047, 0.6129523515701294, 0.12955452501773834, -1.405967116355896, 1.179419994354248, 0.8366360068321228, 0.1387452483177185, -1.2743194103240967, -1.4023305177688599, -0.30706849694252014, -1.7139153480529785, 0.40508025884628296, -1.4108233451843262, 0.16491273045539856, -0.288131445646286, 0.7117852568626404, -0.9379475712776184, 0.27372944355010986, -1.3948402404785156, 0.7955495715141296, -0.11496176570653915, 0.49585068225860596, -1.3205252885818481, 0.4990842640399933, 0.3062033951282501, 0.36369788646698, 0.3126339614391327, -0.19346387684345245, 1.2412992715835571, -0.15589798986911774, -0.739169180393219, -0.05872619152069092, -0.9505179524421692, -0.46399641036987305, -0.17724661529064178, -0.3795541226863861, 0.19939707219600677, 1.9457614421844482, 0.5709498524665833, 1.072300672531128, -0.5037094354629517, -0.5870162844657898, -0.37817806005477905, 0.8528891205787659, -2.148118495941162, -1.0331647396087646, 0.1023358479142189, -0.22409236431121826, 1.9677296876907349, 0.4476832151412964, -0.6621914505958557, -1.5776070356369019, -0.34056004881858826, -1.3032200336456299, 0.4667506515979767, 0.16110631823539734, 0.32003194093704224, 2.079176664352417, -0.9074659943580627, -0.19240421056747437, -1.2125157117843628, -0.08059851825237274, 1.593273639678955, 0.5687224268913269, -0.11448704451322556, 0.2516302466392517, -1.2108556032180786, -0.3937337100505829, 0.08525257557630539, 0.09942198544740677, -1.530616283416748, 0.327623188495636, 0.27919650077819824, -0.3770512044429779, 0.004174998961389065, -1.4834915399551392, -1.4797955751419067, 0.13468725979328156, -0.6677231788635254, -0.011555519886314869, 0.8394906520843506, -0.17392992973327637, -2.8106679916381836, -0.1506536453962326, -0.4810440242290497, -0.23469436168670654, 0.8997308015823364, -1.578530192375183, 0.24395662546157837, 1.5703039169311523, -0.625943124294281, 0.4723278880119324, 0.9663057923316956, 0.21023143827915192, -0.6850969791412354, -0.7095209956169128, 0.743800163269043, 0.5921490788459778, -0.7864683866500854, -1.1764731407165527, -1.2808066606521606, 1.661651849746704, -0.06794512271881104, 2.3602285385131836, 0.5555456280708313, 0.43952232599258423, 0.3062724769115448, 0.9991498589515686, -0.9660632014274597, 2.160013198852539, -0.10030170530080795, -0.7034000754356384, 0.3025610148906708, 1.0923389196395874, -1.0075548887252808, 0.5668693780899048, -0.7164441347122192, -0.5062735080718994, -0.48948243260383606, 0.7635414600372314, -1.1090726852416992, 0.19261610507965088, -0.34341785311698914, -0.847210168838501, -1.2135236263275146, -1.2028883695602417, -1.633795976638794, 0.8961672186851501, -0.24165315926074982, 0.1586519330739975, 1.1781893968582153, -1.220117211341858, -0.9415456652641296, 0.25471553206443787],
5
  "lp2_2d_kernel2_stride1_input_x": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
@@ -563,9 +562,7 @@
563
  },
564
  {
565
  "name": "autopad_same_upper_stride2_p3",
566
- "provenance": {
567
- "notes": "General-p regression for the auto-pad layout; p=1 and p=2 specialize the exponent out of the shader."
568
- },
569
  "attrs": { "auto_pad": "SAME_UPPER", "p": 3, "kernel_shape": [3, 3], "strides": [2, 2] },
570
  "inputs": {
571
  "x": {
@@ -638,9 +635,7 @@
638
  },
639
  {
640
  "name": "f32_2d_k2s2_p2_unrolled_2x16x32x32",
641
- "provenance": {
642
- "notes": "Compact f32 sibling for the k2/s2 p=2 LpPool unrolled benchmark; preserves dense NCHW planes and the stride-2 2x2 reduction shape."
643
- },
644
  "attrs": { "p": 2, "kernel_shape": [2, 2], "strides": [2, 2] },
645
  "inputs": {
646
  "x": {
@@ -654,7 +649,7 @@
654
  {
655
  "name": "f32_3d_ncdhw_k2s2_p2_volumetric_1x4x8x8x8",
656
  "provenance": {
657
- "notes": "Compact f32 sibling for the volumetric k2/s2 p=2 LpPool benchmark; covers the rank-5 NCDHW 3D pooling path with nontrivial channel and depth work."
658
  },
659
  "attrs": { "p": 2, "kernel_shape": [2, 2, 2], "strides": [2, 2, 2] },
660
  "inputs": {
@@ -773,7 +768,7 @@
773
  "name": "lppool3d_depth_dilation2_compact",
774
  "provenance": {
775
  "source": "ONNX LpPool-22 volumetric dilation semantics",
776
- "notes": "Covers a non-default depth dilation. Existing 3D LpPool fixtures varied kernel/stride but kept dilationD=1."
777
  },
778
  "attrs": { "p": 2, "kernel_shape": [2, 1, 1], "dilations": [2, 1, 1] },
779
  "inputs": {
@@ -788,7 +783,7 @@
788
  {
789
  "name": "ncl1d_k4s2_p2_x4_tail_two_planes",
790
  "provenance": {
791
- "notes": "Exercises four-output L2 reuse plus the three-output final block without reading beyond the final plane. Expected values come from the TypeScript LpPool reference."
792
  },
793
  "attrs": { "p": 2, "kernel_shape": [4], "strides": [2] },
794
  "inputs": {
@@ -862,6 +857,43 @@
862
  }
863
  },
864
  "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 7], "tolerance": 0.01 } }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
865
  }
866
  ]
867
  }
 
1
  {
 
2
  "fixtureArrays": {
3
  "onnx_backend_lppool_2d_input_x": [1.764052391052246, 0.40015721321105957, 0.978738009929657, 2.2408931255340576, 1.8675580024719238, -0.9772778749465942, 0.9500884413719177, -0.15135720372200012, -0.10321885347366333, 0.4105985164642334, 0.14404356479644775, 1.4542734622955322, 0.7610377073287964, 0.12167501449584961, 0.44386324286460876, 0.3336743414402008, 1.4940791130065918, -0.2051582634449005, 0.3130677044391632, -0.8540957570075989, -2.5529897212982178, 0.653618574142456, 0.8644362092018127, -0.7421650290489197, 2.269754648208618, -1.4543657302856445, 0.04575851559638977, -0.18718385696411133, 1.5327792167663574, 1.4693588018417358, 0.154947429895401, 0.37816253304481506, -0.8877857327461243, -1.980796456336975, -0.34791216254234314, 0.15634897351264954, 1.2302906513214111, 1.202379822731018, -0.38732680678367615, -0.302302747964859, -1.0485529899597168, -1.420017957687378, -1.7062702178955078, 1.950775384902954, -0.5096521973609924, -0.4380742907524109, -1.2527953386306763, 0.7774903774261475, -1.6138978004455566, -0.21274028718471527, -0.8954665660858154, 0.38690251111984253, -0.5108051300048828, -1.18063223361969, -0.02818222902715206, 0.4283318817615509, 0.06651721894741058, 0.30247190594673157, -0.6343221068382263, -0.3627411723136902, -0.6724604368209839, -0.35955315828323364, -0.8131462931632996, -1.7262825965881348, 0.17742614448070526, -0.4017809331417084, -1.630198359489441, 0.46278226375579834, -0.9072983860969543, 0.05194539576768875, 0.7290905714035034, 0.12898291647434235, 1.1394007205963135, -1.234825849533081, 0.4023416340351105, -0.6848101019859314, -0.8707971572875977, -0.5788496732711792, -0.3115525245666504, 0.056165341287851334, -1.1651498079299927, 0.9008265137672424, 0.4656624495983124, -1.5362436771392822, 1.4882521629333496, 1.895889163017273, 1.1787796020507812, -0.1799248307943344, -1.0707526206970215, 1.0544517040252686, -0.4031769335269928, 1.222445011138916, 0.2082749754190445, 0.9766390323638916, 0.3563663959503174, 0.7065731883049011, 0.01050002034753561, 1.7858705520629883, 0.12691208720207214, 0.4019893705844879, 1.8831506967544556, -1.3477590084075928, -1.2704850435256958, 0.969396710395813, -1.1731233596801758, 1.9436211585998535, -0.4136189818382263, -0.747454822063446, 1.922942042350769, 1.4805147647857666, 1.8675589561462402, 0.9060446619987488, -0.8612256646156311, 1.910064935684204, -0.26800337433815, 0.8024563789367676, 0.9472519755363464, -0.15501008927822113, 0.6140793561935425, 0.922206699848175, 0.37642553448677063, -1.0994007587432861, 0.29823818802833557, 1.3263858556747437, -0.694567859172821, -0.14963454008102417, -0.4351535439491272, 1.8492637872695923, 0.6722947359085083, 0.40746182203292847, -0.7699160575866699, 0.5392491817474365, -0.6743326783180237, 0.0318305566906929, -0.6358460783958435, 0.676433265209198, 0.5765908360481262, -0.20829875767230988, 0.39600670337677, -1.0930615663528442, -1.4912575483322144, 0.43939170241355896, 0.16667349636554718, 0.6350314617156982, 2.3831448554992676, 0.9444794654846191, -0.9128222465515137, 1.117016315460205, -1.31590735912323, -0.46158459782600403, -0.06824160367250443, 1.7133426666259766, -0.7447548508644104, -0.8264385461807251, -0.09845252335071564, -0.6634783148765564, 1.1266359090805054, -1.0799314975738525, -1.1474686861038208, -0.43782004714012146, -0.49803245067596436, 1.9295320510864258, 0.9494208097457886, 0.08755124360322952, -1.225435495376587, 0.8443629741668701, -1.0002152919769287, -1.5447710752487183, 1.1880297660827637, 0.31694260239601135, 0.9208588004112244, 0.31872764229774475, 0.8568305969238281, -0.6510255932807922, -1.034242868423462, 0.6815944910049438, -0.8034096360206604, -0.6895498037338257, -0.4555324912071228, 0.01747915893793106, -0.3539939224720001, -1.3749512434005737, -0.6436184048652649, -2.223403215408325, 0.6252314448356628, -1.602057695388794, -1.1043833494186401, 0.05216507986187935, -0.73956298828125, 1.543014645576477, -1.2928569316864014, 0.2670508623123169, -0.039282817393541336, -1.1680934429168701, 0.523276686668396, -0.1715463250875473, 0.7717905640602112, 0.8235041499137878, 2.163235902786255, 1.336527943611145, -0.3691818416118622, -0.2393791824579239, 1.0996595621109009, 0.6552637219429016, 0.6401315331459045, -1.6169559955596924, -0.024326125159859657, -0.7380309104919434, 0.279924601316452, -0.09815038740634918, 0.9101788997650146, 0.31721821427345276, 0.7863279581069946, -0.4664191007614136, -0.9444462656974792, -0.410049706697464, -0.017020413652062416, 0.37915173172950745, 2.2593090534210205, -0.0422571524977684, -0.9559450149536133, -0.34598177671432495, -0.463595986366272, 0.4814814627170563, -1.5407969951629639, 0.06326199322938919, 0.15650653839111328, 0.23218104243278503, -0.5973160862922668, -0.23792172968387604, -1.4240609407424927, -0.49331986904144287, -0.5428614616394043, 0.4160500466823578, -1.1561824083328247, 0.7811980843544006, 1.494484543800354, -2.0699849128723145, 0.42625874280929565, 0.676908016204834, -0.6374370455741882, -0.3972718119621277, -0.1328805834054947, -0.29779088497161865, -0.3090129792690277, -1.6760038137435913, 1.1523315906524658, 1.0796185731887817, -0.8133642673492432, -1.4664243459701538, 0.5210648775100708, -0.5757879614830017, 0.14195317029953003, -0.3193284273147583, 0.6915387511253357, 0.694749116897583, -0.7255973815917969, -1.383363962173462, -1.5829384326934814, 0.6103793978691101, -1.188859224319458, -0.5068163275718689, -0.596314013004303, -0.05256729573011398, -1.9362797737121582, 0.1887785941362381, 0.523891031742096, 0.08842208981513977, -0.3108861744403839, 0.09740016609430313, 0.3990463316440582, -2.772592782974243, 1.9559123516082764, 0.3900933265686035, -0.6524085998535156, -0.3909533619880676, 0.4937417805194855, -0.11610393971204758, -2.030684471130371, 2.06449294090271, -0.11054065823554993, 1.0201727151870728, -0.6920498609542847, 1.5363770723342896, 0.28634369373321533, 0.6088438630104065, -1.0452533960342407, 1.211145281791687, 0.6898181438446045, 1.3018462657928467, -0.62808758020401, -0.48102712631225586, 2.3039166927337646, -1.0600157976150513, -0.13594970107078552, 1.1368913650512695, 0.09772496670484543, 0.582953691482544, -0.39944902062416077, 0.3700558841228485, -1.3065268993377686, 1.6581306457519531, -0.1181640475988388, -0.6801782250404358, 0.6663830876350403, -0.4607197940349579, -1.3342584371566772, -1.3467174768447876, 0.6937731504440308, -0.15957343578338623, -0.13370156288146973, 1.0777437686920166, -1.1268258094787598, -0.7306777238845825, -0.38487979769706726, 0.09435158967971802, -0.042171452194452286, -0.28688719868659973, -0.06162640079855919, -0.10730527341365814, -0.7196043729782104, -0.8129929900169373, 0.27451634407043457, -0.8909150958061218, -1.1573553085327148, -0.3122922480106354, -0.15766701102256775, 2.256723403930664, -0.7047002911567688, 0.9432607293128967, 0.7471883296966553, -1.188944935798645, 0.7732529640197754, -1.1838806867599487, -2.659172296524048, 0.6063195466995239, -1.7558906078338623, 0.4509344696998596, -0.684010922908783, 1.6595507860183716, 1.0685093402862549, -0.4533858001232147, -0.6878376007080078, -1.214077353477478, -0.4409226179122925, -0.2803554832935333, -0.3646935522556305, 0.1567038595676422, 0.5785214900970459, 0.3496544659137726, -0.7641439437866211, -1.4377914667129517, 1.3645318746566772, -0.6894491910934448, -0.6522936224937439, -0.5211893320083618, -1.8430695533752441, -0.477973997592926, -0.47965580224990845, 0.6203582882881165, 0.6984571218490601, 0.003770889015868306, 0.9318483471870422, 0.33996498584747314, -0.01568211242556572, 0.1609281748533249, -0.1906534880399704, -0.3948495090007782, -0.26773354411125183, -1.1280113458633423, 0.2804417014122009, -0.9931235909461975, 0.841631293296814, -0.24945858120918274, 0.04949498176574707, 0.49383679032325745, 0.6433144807815552, -1.5706233978271484, -0.20690368115901947, 0.8801789283752441, -1.698105812072754, 0.3872804641723633, -2.2555642127990723, -1.022506833076477, 0.03863055258989334, -1.6567151546478271, -0.9855107665061951, -1.4718350172042847, 1.6481349468231201, 0.16422775387763977, 0.5672903060913086, -0.22267509996891022, -0.353431761264801, -1.6164741516113281, -0.2918373644351959, -0.7614921927452087, 0.8579239249229431, 1.1411018371582031, 1.466578722000122, 0.8525519371032715, -0.5986539125442505, -1.1158969402313232, 0.7666631937026978, 0.35629281401634216, -1.768538475036621, 0.3554818034172058, 0.8145198225975037, 0.05892558768391609, -0.18505367636680603, -0.8076484799385071, -1.4465347528457642, 0.8002979755401611, -0.3091144561767578, -0.23346665501594543, 1.732721209526062, 0.6845011115074158, 0.37082499265670776, 0.14206179976463318, 1.519994854927063, 1.719589352607727, 0.9295051097869873, 0.5822246074676514, -2.0946030616760254, 0.12372191250324249, -0.13010695576667786, 0.09395322948694229, 0.9430460929870605, -2.7396771907806396, -0.5693120360374451, 0.26990434527397156, -0.4668455421924591, -1.4169061183929443, 0.8689634799957275, 0.276871919631958, -0.9711045622825623, 0.3148171901702881, 0.8215857148170471, 0.005292646121233702, 0.8005648255348206, 0.07826017588376999, -0.3952289819717407, -1.1594204902648926, -0.08593076467514038, 0.19429293274879456, 0.875832736492157, -0.1151074692606926, 0.4574156105518341, -0.9646120071411133, -0.782629132270813, -0.11038929969072342, -1.0546284914016724, 0.8202478289604187, 0.46313032507896423, 0.27909576892852783, 0.33890411257743835, 2.021043539047241, -0.46886420249938965, -2.2014412879943848, 0.19930019974708557, -0.05060354247689247, -0.5175190567970276, -0.9788298606872559, -0.43918952345848083, 0.18133842945098877, -0.5028166770935059, 2.4124536514282227, -0.9605043530464172, -0.793117344379425, -2.2886199951171875, 0.2514844238758087, -2.016406536102295, -0.5394546389579773, -0.27567052841186523, -0.709727942943573, 1.7388726472854614, 0.9943943619728088, 1.3191368579864502, -0.8824188113212585, 1.1285940408706665, 0.4960009455680847, 0.7714059352874756, 1.029438853263855, -0.9087632298469543, -0.4243176281452179, 0.8625960350036621, -2.6556191444396973, 1.5133280754089355, 0.5531320571899414, -0.045703962445259094, 0.2205076515674591, -1.0299352407455444, -0.3499433696269989, 1.1002843379974365, 1.2980220317840576, 2.6962239742279053, -0.07392466813325882, -0.6585529446601868, -0.5142339468002319, -1.0180418491363525, -0.07785475254058838, 0.38273242115974426, -0.03424227982759476, 1.0963468551635742, -0.23421579599380493, -0.3474506437778473, -0.5812684893608093, -1.6326345205307007, -1.5677677392959595, -1.1791579723358154, 1.3014280796051025, 0.8952602744102478, 1.3749641180038452, -1.3322116136550903, -1.9686247110366821, -0.6600562930107117, 0.17581894993782043, 0.49869027733802795, 1.0479722023010254, 0.2842796742916107, 1.7426687479019165, -0.22260567545890808, -0.9130792021751404, -1.6812182664871216, -0.8889713287353516, 0.2421179562807083, -0.8887202739715576, 0.9367424845695496, 1.4123276472091675, -2.369586944580078, 0.8640522956848145, -2.2396039962768555, 0.40149906277656555, 1.2248705625534058, 0.06485610455274582, -1.2796891927719116, -0.5854312181472778, -0.26164543628692627, -0.18224477767944336, -0.2028968334197998, -0.10988277941942215, 0.21348005533218384, -1.2085736989974976, -0.24201983213424683, 1.518261194229126, -0.3846454322338104, -0.4438360929489136, 1.0781973600387573, -2.5591845512390137, 1.1813786029815674, -0.6319037675857544, 0.1639285683631897, 0.09632135927677155, 0.9424681067466736, -0.26759475469589233, -0.6780257821083069, 1.2978458404541016, -2.3641738891601562, 0.020334182307124138, -1.3479254245758057, -0.7615733742713928, 2.011256694793701, -0.04459542781114578, 0.19506970047950745, -1.7815628051757812, -0.7290446758270264, 0.1965574026107788, 0.354757696390152, 0.616886556148529, 0.00862789899110794, 0.5270041823387146, 0.4537819027900696, -1.8297404050827026, 0.037005722522735596, 0.7679024338722229, 0.5898798108100891, -0.36385881900787354, -0.8056265115737915, -1.118311882019043, -0.13105401396751404, 1.1330798864364624, -1.9518041610717773, -0.6598917245864868, -1.1398024559020996, 0.7849575281143188, -0.554309606552124, -0.47063764929771423, -0.21694956719875336, 0.44539326429367065, -0.3923889994621277, -3.046143054962158, 0.5433118939399719, 0.43904295563697815, -0.2195410281419754, -1.0840365886688232, 0.35178011655807495, 0.37923553586006165, -0.47003287076950073, -0.2167314738035202, -0.9301565289497375, -0.1785890907049179, -1.550429344177246, 0.41731882095336914, -0.9443684816360474, 0.23810315132141113, -1.4059629440307617, -0.5900576710700989, -0.11048940569162369, -1.6606998443603516, 0.11514787375926971, -0.37914755940437317, -1.7423561811447144, -1.303242802619934, 0.605120062828064, 0.8955559730529785, -0.13190864026546478, 0.40476182103157043, 0.2238435596227646, 0.3296229839324951, 1.2859840393066406, -1.5069984197616577, 0.6764607429504395, -0.38200896978378296, -0.2242589294910431, -0.3022497296333313, -0.37514710426330566, -1.2261961698532104, 0.1833391934633255, 1.670943021774292, -0.05613302066922188, -0.0013850427931174636, -0.6872990131378174, -0.11747454851865768, 0.4661664366722107, -0.3702424466609955, -0.45380404591560364, 0.4032645523548126, -0.9180047512054443, 0.2524966299533844, 0.820321798324585, 1.3599485158920288, -0.09038200974464417, 1.367597222328186, 1.0344098806381226, -0.9962126612663269, -1.2179385423660278, -0.3049636483192444, 1.0289355516433716, -0.07228700816631317, -0.60065758228302, 1.5522432327270508, 0.2869044840335846, -2.320594310760498, 0.31716063618659973, 0.5200406312942505, 0.22560866177082062, 0.4497120976448059, -0.06727560609579086, -1.3183958530426025, -0.3707039952278137, -0.9456157684326172, -0.9327409267425537, -1.2630683183670044, 0.45248907804489136, 0.09789614379405975, -0.4481653571128845, -0.6493379473686218, -0.023423105478286743, 1.0791947841644287, -2.004215717315674, 0.3768765330314636, -0.5457119941711426, -1.8845858573913574, -1.9457030296325684, -0.9127835035324097, 0.219509556889534, 0.39306291937828064, -0.9389815926551819, 1.0170209407806396, 1.4229835271835327, 0.39608657360076904, -0.5914026498794556, 1.1244192123413086, 0.7553957104682922, 0.8674074411392212, -0.6564636826515198, -2.834554433822632, 2.116791009902954, -1.610878348350525, -0.03576807305216789, 2.3807454109191895, 0.33057674765586853, 0.9492464661598206, -1.502396583557129, -1.7776669263839722, -0.5327028036117554, 1.090749740600586, -0.34624946117401123, -0.7946363091468811, 0.1979672908782959, 1.081935167312622, -1.444940209388733, -1.2105430364608765, -0.788669228553772, 1.0946383476257324, 0.23482152819633484, 2.1321535110473633, 0.9364457130432129, -0.035095177590847015, 1.265077829360962, 0.2114970088005066, -0.7049213647842407, 0.6799748539924622, -0.6963266730308533, -0.29039710760116577, 1.3277827501296997, -0.10128148645162582, -0.8031414151191711, -0.46433767676353455, 1.021790623664856, -0.55254065990448, -0.3868708610534668, -0.5102927684783936, 0.18392549455165863, -0.3854897618293762, -1.601836085319519, -0.8871809244155884, -0.9327890276908875, 1.2433193922042847, 0.8126740455627441, 0.5872593522071838, -0.5053583383560181, -0.8157915472984314, -0.5075175762176514, -1.051880121231079, 2.4972004890441895, -2.245321750640869, 0.5640085339546204, -1.2845523357391357, -0.1043434888124466, -0.9880019426345825, -1.177628993988037, -1.1401963233947754, 1.7549861669540405, -0.13298842310905457, -0.7657021880149841, 0.5557869672775269, 0.010349314659833908, 0.7200337648391724, -1.8242566585540771, 0.3036039173603058, 0.7726948261260986, -1.6615983247756958, 0.44819527864456177, 1.6961815357208252, -0.014857703819870949, 0.8214059472084045, 0.670570433139801, -0.7075057029724121, 0.03976673632860184, -1.5669946670532227, -0.45130303502082825, 0.2656879723072052, 0.723100483417511, 0.024612125009298325, 0.7199837565422058, -1.1029062271118164, -0.10169727355241776, 0.01927938498556614, 1.8495912551879883, -0.21416665613651276, -0.4990166425704956, 0.021351223811507225, -0.9191134572029114, 0.1927538514137268, -0.3650552034378052, -1.7913275957107544, -0.05858655273914337, -0.317543089389801, -1.6324232816696167, -0.06713415682315826, 1.4893559217453003, 0.5213037729263306, 0.6119272112846375, -1.3414967060089111, 0.4768983721733093, 0.1484495848417282, 0.5290452241897583, 0.42262861132621765, -1.3597806692123413, -0.041400812566280365, -0.7578708529472351, -0.05008409544825554, -0.8974009156227112, 1.3124703168869019, -0.8589723706245422, -0.8989421725273132, 0.0745864063501358, -1.077099084854126, -0.4246633052825928, -0.8299645781517029, 1.4111720323562622, 0.7858038544654846, -0.05746951699256897, -0.39121705293655396, 0.9409176111221313, 0.40520408749580383, 0.4980524182319641, -0.026192236691713333, -1.688230037689209, -0.1124659851193428, -0.5324898958206177, 0.6450552940368652, 1.0118424892425537, -0.6579510569572449, 0.4683852195739746, 1.7358789443969727, -0.6677127480506897, 1.6819217205047607, -0.8525858521461487, 0.0229597557336092, -0.011145612224936485, 0.011498900130391121, -0.8376780152320862, -0.5911831259727478, -0.6677202582359314, 0.32696259021759033, 0.33003512024879456, 2.2259442806243896, 1.3709889650344849, -0.5098432302474976, 0.3248696029186249, 0.9971179962158203, 0.030601823702454567, -0.06964157521724701, 0.0515749417245388, 0.8672766089439392, -0.8483205437660217, -0.32566946744918823, 0.47043314576148987, 0.3114470839500427, 0.23958276212215424, -0.3698011636734009, 0.9725357890129089, 2.1338682174682617, 0.40641549229621887, -0.19317670166492462, 0.7557402849197388, -0.5391326546669006, -0.7496903538703918, 0.03280874714255333, -2.582796573638916, -1.1539503335952759, -0.3479618430137634, -1.3533889055252075, -1.0326430797576904, -0.43674832582473755, -1.642965316772461, -0.4060717821121216, -0.5352701544761658, 0.02540520764887333, 1.1541839838027954, 0.17250441014766693, 0.02106202207505703, 0.09945445507764816, 0.22739277780056, -1.0167386531829834, -0.11477532237768173, 0.30875125527381897, -1.3707599639892578, 0.8656529188156128, 1.081376075744629, -0.6313759684562683, -0.24133779108524323, -0.8781903386116028, 0.6993804574012756, -1.0612223148345947, -0.2224770039319992, -0.8589199185371399, 0.05095427855849266, -1.79422926902771, 1.326461672782898, -0.9646064043045044, 0.059894684702157974, -0.21252304315567017, -0.7621145248413086, -0.8877801299095154, 0.9363985657691956, -0.525640606880188, 0.2711701989173889, -0.8014968633651733, -0.6471814513206482, 0.4722471535205841, 0.9304084777832031, -0.17531640827655792, -1.421919822692871, 1.9979560375213623, -0.8565493226051331, -1.5415873527526855, 2.5944244861602783, -0.40403228998184204, -1.4617327451705933, -0.6834397912025452, 0.36754488945007324, 0.19031155109405518, -0.8517292141914368, 1.822723627090454, -0.5215796828269958, -1.184686541557312, 0.9606934189796448, 1.329062819480896, -0.8174930810928345, -1.401347279548645, 1.0304383039474487, -2.047323703765869, -1.2266216278076172, 0.9674461483955383, -0.05535254627466202, -0.2639373540878296, 0.3528166115283966, -0.15277442336082458, -1.2986867427825928, 1.2760753631591797, 1.3250139951705933, 0.20533256232738495, 0.04513401538133621, 2.3396248817443848, -0.2764328420162201, -0.2595769762992859, 0.36448124051094055, 1.471321940422058, 1.5927706956863403, -0.25857263803482056, 0.3083312511444092, -1.3780834674835205, -0.3119761049747467, -0.840290367603302, -1.0068317651748657, 1.6815767288208008, -0.7922866344451904, -0.5316058993339539, 0.3658487796783447, 1.2978252172470093, 0.4811151325702667, 2.759355068206787, -0.07466797530651093, 0.2587164342403412, 0.2756006717681885, 1.4350494146347046, 0.5072389245033264, -0.11622969806194305, -0.9474886059761047, 0.24444346129894257, 1.4013447761535645, -0.4103817939758301, 0.5289435982704163, 0.2461477816104889, 0.8635196685791016, -0.8047537207603455, 2.346647024154663, -1.2791610956192017, -0.36555108428001404, 0.9380925297737122, 0.29673317074775696, 0.8299861550331116, -0.49610233306884766, -0.07480498403310776, 0.012231983244419098, 1.5692596435546875, 0.6904290318489075, 0.7966721057891846, -0.657926082611084, 0.9688826203346252, 0.22558166086673737, 1.3891453742980957, 2.0140602588653564, -0.30676576495170593, -0.40630313754081726, -0.8640449643135071, -0.14357951283454895, -0.38202545046806335, 0.3595044016838074, -0.14456681907176971, -0.36159926652908325, 1.0645850896835327, -0.9378802180290222, 0.4331079423427582, -0.4059417247772217, 0.7243685126304626, 1.3852615356445312, -0.30309826135635376, 0.44103291630744934, 0.17879286408424377, -0.7994223833084106, 0.24078750610351562, 0.28912049531936646, 0.4128708243370056, -0.1983989030122757, 0.09419230371713638, -1.1476109027862549, -0.3581140637397766, 0.5559626817703247, 0.8924738764762878, -0.4223148226737976, 0.10471402853727341, 0.22805333137512207, 0.2014799416065216, 0.5407735705375671, -1.8180776834487915, -0.049324069172143936, 0.23903359472751617, -1.0003303289413452, 1.6739857196807861, 0.16155926883220673, 1.5634047985076904, -0.7905229926109314, -0.9073001146316528, 0.22425222396850586, -1.678688406944275, 0.2149655967950821, 0.09721922874450684, 1.0156652927398682, 0.7010413408279419, -0.4174773395061493, -1.0974966287612915, 1.7123051881790161, -0.7921150326728821, -1.0455245971679688, -1.0848560333251953, 1.1173052787780762, -0.5189002156257629, -0.7537044882774353, 0.13768982887268066, -0.20694470405578613, -0.6780954599380493, 0.7539914846420288, 1.0653154850006104, 0.9853175282478333, 0.7669196724891663, 0.40262553095817566, -1.7758879661560059, 1.6692508459091187, 0.30198919773101807, 0.6081564426422119, 1.1149623394012451, 1.4333524703979492, 0.41839802265167236, 0.4355461597442627, -0.5992242693901062, 0.03308974951505661, -0.854161262512207, -0.7199405431747437, -0.8935744166374207, -0.15602388978004456, 1.049093246459961, 3.1709747314453125, 0.189499631524086, -1.348413109779358, 1.2649832963943481, -0.3007838726043701, -0.6606085896492004, 0.20984947681427002, -1.2406245470046997, 0.22246316075325012, -0.088375523686409, 0.09837790578603745, 0.3814162611961365, 0.06749225407838821, 0.016338083893060684, 0.28431451320648193, 0.4154006242752075, -1.031482458114624, -1.4299912452697754, -0.06163805350661278, -1.4327354431152344, 0.08753146976232529, 0.9387468695640564, 0.6071116924285889, -1.0481704473495483, -0.8602624535560608, 0.3283012807369232, -0.40129780769348145, -0.31665530800819397, 0.5969064831733704, -0.9872866868972778, -0.4012347161769867, -0.8000825047492981, -1.0431294441223145, -0.8570781946182251, 0.6774621605873108, 0.05182038992643356, -0.8791606426239014, -0.2311016023159027, -1.6388072967529297, -0.7333127856254578, 2.1495745182037354, -0.09024384617805481, 0.731658935546875, -0.06548837572336197, 0.3481692373752594, 0.6632580757141113, -1.104616641998291, -0.030936257913708687, 1.5788651704788208, -0.7955005764961243, -0.5664398670196533, -0.3076912760734558, 0.2690240740776062, 0.5249178409576416, 1.267411708831787, 0.49949824810028076, -0.062053125351667404, 1.2591670751571655, 0.7041110396385193, -1.495679497718811, 2.5263681411743164, 1.7699214220046997, -0.16821421682834625, 0.3779101073741913, 1.3243587017059326, -0.17220079898834229, 0.7303518056869507, 1.1045784950256348, -1.0148259401321411, -0.6023318767547607, 0.9214084148406982, 0.4608144760131836, 0.923796534538269, -0.13256801664829254, -0.28900521993637085, -1.998639464378357, -1.1460003852844238, 0.0470660962164402, 0.8245572447776794, 0.53117835521698, -0.12824197113513947, -0.2717715799808502, 0.21717962622642517, 0.07821118086576462, 1.404545545578003, 0.1464407742023468, -1.481245994567871, -1.2725580930709839, 1.5187593698501587, -1.1711604595184326, 0.7644974589347839, -0.2683727443218231, -0.16975829005241394, -0.13413278758525848, 1.2213850021362305, -0.19284182786941528, -0.03331928327679634, -1.5308034420013428, 0.20669050514698029, 0.5310425162315369, 0.23914557695388794, 1.3978962898254395, 0.05517135560512543, 0.29897746443748474, 1.6485040187835693, -1.5500141382217407, -0.4558253586292267, 1.4261587858200073, 0.9361291527748108, 0.6783800721168518, 0.8326507210731506, 0.32706621289253235, 1.6315973997116089, 0.3777591586112976, 0.23986710608005524, 0.15895867347717285, 0.19286395609378815, -1.1570172309875488, 0.7706730365753174, -0.13043972849845886, 1.8219151496887207, -0.07565046846866608, 0.4209182858467102, 0.24660219252109528, -0.625557005405426, 0.9921368360519409, 1.9050636291503906, -0.014777219854295254, -0.3004787862300873, -0.3550287187099457, -1.8923618793487549, -0.17781314253807068, 0.2509981095790863, 1.0547579526901245, 0.960047721862793, -0.4164990782737732, -0.2768229842185974, 1.1239053010940552, -0.17346389591693878, -0.5100295543670654, 1.392518401145935, 1.0375856161117554, 0.018791791051626205, -0.5937774181365967, -2.011880397796631, 0.5897036194801331, -0.8963696956634521, -1.962731957435608, 1.5848205089569092, 0.6479678153991699, -1.1390081644058228, -1.214401364326477, 0.8709617853164673, -0.8779706358909607, 1.2961498498916626, 0.616459310054779, 0.5365965366363525, 0.40469545125961304, 0.19145087897777557, 0.8805112242698669, -0.45408037304878235, 0.08595197647809982, 0.7519465684890747, 0.5629897117614746, -1.1949868202209473, -0.5004096627235413, 0.2528035044670105, -0.408014714717865, 1.7746585607528687, -0.39315319061279297, -0.16221845149993896, 0.7694301605224609, 0.3305327296257019, -0.14527446031570435, -0.7564935088157654, 0.30151405930519104, 1.039096474647522, 0.4790952205657959, -0.7781835198402405, 1.7367749214172363, -1.4465779066085815, -1.5826855897903442, 0.960557222366333, 0.2258404791355133, -0.5494985580444336, -1.098570704460144, 2.3207998275756836, 0.1170908734202385, 0.5342011451721191, 0.3178851008415222, 0.4348079562187195, 0.5400944352149963, 0.7324240207672119, -0.37522241473197937, -0.2916419804096222, -1.7410228252410889, -0.7803044319152832, 0.2711127996444702, 1.0450233221054077, 0.5990395545959473, -0.34069234132766724, -1.2631728649139404, -2.7773592472076416, 1.1517339944839478, -0.5892289876937866, -0.4484650194644928, 0.13157397508621216, -1.40556001663208, -0.34978216886520386, 2.0234718322753906, 0.5053869485855103, 0.35924914479255676, -1.5824944972991943, 2.2436017990112305, -1.4227949380874634, 1.922324776649475, -2.115056037902832, 1.4053654670715332, 1.6180542707443237, -0.8244091272354126, 0.422580361366272, 0.547480583190918, -0.8137944936752319, -1.449117660522461, -1.3177173137664795, 0.5410082340240479, -0.08511560410261154, -0.5643010139465332, 0.9667680263519287, 0.5080679059028625, -0.7554627060890198, -1.2012015581130981, 0.5232617259025574, -0.5375833511352539, 0.09920486062765121, 1.5762989521026611, 0.5023282170295715, -0.862267017364502, 0.16066119074821472, -0.952644944190979, 1.6085221767425537, -0.5615787506103516, 0.20727074146270752, 0.30773258209228516, 0.15925046801567078, -1.958548903465271, -1.4464210271835327, -0.45235028862953186, 0.3194318413734436, -0.13777922093868256, -0.957147479057312, -1.3484243154525757, -0.4015575349330902, -0.4684760570526123, 0.5128364562988281, -0.3263184726238251, 0.6027076840400696, -0.5946497917175293, -0.2559576630592346, -0.3480463922023773, -0.7823669910430908, 0.6251186728477478, -0.8135960102081299, -0.5216414928436279, -0.0731196478009224, -1.2973796129226685, -0.3249349594116211, -0.7113063335418701, -0.38815417885780334, -0.05992800369858742, -0.7999136447906494, -0.220075786113739, 1.3086687326431274, -0.025798557326197624, 1.1452621221542358, 0.3464944362640381, 0.774160623550415, -0.7744589447975159, 0.10490716248750687, 0.13391292095184326, -0.6126257181167603, -0.8228283524513245, -1.4902653694152832, 1.496139645576477, -0.9724028706550598, 1.3462210893630981, -0.4674931764602661, -0.8624932765960693, 0.6225191354751587, -0.6311919689178467, 0.5684589147567749, -0.33281177282333374, 0.4804244935512543, -0.96818608045578, 0.8313510417938232, 0.4879726767539978, -0.919650673866272, 2.6429357528686523, 0.5401230454444885, 2.2904670238494873, 1.600267767906189, -0.1888347864151001, -0.41227176785469055, -0.40345919132232666, -1.8300285339355469, -0.6958351135253906, 0.24676603078842163, 1.5259575843811035, -0.7727718949317932, 0.8820565938949585, -1.2525933980941772, -0.5863200426101685, -0.4576405882835388, 0.3718110918998718, 0.45730963349342346, 0.9623417258262634, 0.7708369493484497, 0.24316821992397308, 0.39036494493484497, 1.5885306596755981, -0.5109261870384216, 0.7747282981872559, -1.808143973350525, 0.41133424639701843, -0.4832495450973511, 0.0025711823254823685, 1.040086269378662, 0.1646438091993332, 0.885187566280365, 1.4737647771835327, 0.38909396529197693, 1.1710410118103027, -0.32656097412109375, -0.00820988230407238, -0.5226194262504578, 1.0429775714874268, 0.4140913486480713, -0.5072344541549683, 0.15466883778572083, 1.041568398475647, -0.03926799073815346, -0.9489328265190125, 0.1319117546081543, -1.9805655479431152, 0.7687706351280212, -0.4213275909423828, -0.4693107306957245, 0.8756957054138184, -1.3651628494262695, 1.9470986127853394, -0.4802420437335968, -0.523250937461853, 1.0212247371673584, 0.7086952924728394, 2.4512298107147217, -0.21120598912239075, -0.1204066351056099, -1.479315996170044, -0.3321022689342499, -0.721431314945221, -0.4487670063972473, -1.7441877126693726, 1.6606075763702393, -1.416603446006775, -2.8022027015686035, -1.1884244680404663, -0.6038395762443542, -1.1495540142059326, 1.0983035564422607, -0.1378391832113266, 0.025385605171322823, 0.6103917360305786, 0.28601253032684326, 0.9785673022270203, -1.1094775199890137, -0.5475180745124817, 0.6659671664237976, -2.5345544815063477, -1.3751845359802246, 0.5009922385215759, -0.4802490472793579, 0.9361075758934021, 0.8091803193092346, -1.1980929374694824, 0.4066570997238159, 1.201697826385498, 0.14743439853191376, -0.9774648547172546, 0.8793899416923523, 0.6354245543479919, 0.542610764503479, 0.7159388661384583, -2.9946129322052, 0.8809375762939453, 1.8081318140029907, 0.4366384744644165, 0.19272899627685547, 0.6964386701583862, 0.33822548389434814, 0.6517812609672546, 0.0014710002578794956, -0.7667048573493958, -1.0043227672576904, -0.9981917142868042, -1.3730425834655762, -1.0677419900894165, 1.7612661123275757, 0.7540956735610962, -0.6250274181365967, -0.3903926908969879, 0.11255753040313721, -0.6555450558662415, 0.06751685589551926, 0.7776041626930237, -0.035742733627557755, 0.3360157310962677, 0.8864915370941162, -0.2721317708492279, 0.28479060530662537, -0.3093775808811188, -0.028528869152069092, -0.3247302770614624, -0.5288698673248291, 0.1737118512392044, 0.566545307636261, 0.1463044434785843, 0.4987269639968872, -0.7379317879676819, -1.2037352323532104, 0.4170435070991516, 0.6878814101219177, 0.04985726624727249, 1.3480358123779297, 0.9076988101005554, 2.6805708408355713, -0.20080851018428802, -0.9988487958908081, -0.7401368021965027, -0.5654978156089783, 0.4760313928127289, -2.1580686569213867, 1.3185510635375977, -0.2392965853214264, -0.24679355323314667, -1.0793431997299194, -0.11422555148601532, 0.013239767402410507, -0.12194492667913437, 0.3390592634677887, -0.5896320343017578, -0.8958157896995544, 0.5483281016349792, 0.0986674502491951, 0.19718106091022491, 1.0590271949768066, -1.02256441116333, -0.8552404642105103, 1.257219672203064, -1.482883334159851, -1.3094121217727661, 0.8178618550300598, 0.23820018768310547, 0.1052321344614029, -0.09165941178798676, 0.031267546117305756, -0.09211211651563644, 1.3554426431655884, -0.3981481194496155, -0.1613735407590866, 1.7944488525390625, 0.027509702369570732, 2.2320163249969482, -0.10497970134019852, 1.367414951324463, -1.655344009399414, 0.15364445745944977, -1.5844736099243164, 0.844454288482666, -1.2128678560256958, 0.28376954793930054, -0.2821958661079407, -1.1582032442092896, -1.6193599700927734, -0.511040449142456, 1.7406294345855713, -0.29348504543304443, 0.9172215461730957, -0.057042866945266724, 0.8767267465591431, -1.8269113302230835, -0.4031883180141449, 0.9494055509567261, -0.16325494647026062, -0.08645528554916382, -0.43046191334724426, 1.1493793725967407, 0.2975143492221832, 0.04402227699756622, 0.6430545449256897, 0.5882249474525452, 0.21258704364299774, 1.5470315217971802, -0.060287535190582275, 0.2780810594558716, -0.642952561378479, 0.1501152217388153, 1.5877615213394165, -0.6432576179504395, -1.1335928440093994, 0.9967596530914307, -0.1487661451101303, 0.09600420296192169, -0.045113302767276764, 0.07912172377109528, 0.8505306839942932, -0.8391242027282715, -1.0117740631103516, 0.08496813476085663, -1.6064397096633911, -1.3730535507202148, 1.8666831254959106, 0.7574683427810669, -0.010056471452116966, 1.2380069494247437, -1.0405992269515991, -0.3156031370162964, 0.6234536170959473, 0.8906716704368591, 0.5129168629646301, -2.541238784790039, -0.9680821299552917, 0.47706809639930725, -0.3559514880180359, 2.540231704711914, 0.9265583157539368, 0.558081865310669, -1.1169495582580566, -0.035296738147735596, 0.24120396375656128, 1.1277836561203003, 0.881131112575531, 1.0329891443252563, -0.923911988735199, 1.4121516942977905, -1.3804306983947754, -0.5359145402908325, 0.430771142244339, -0.14989158511161804, -1.0060368776321411, -0.8215498328208923, -1.548254370689392, 0.5319746136665344, 1.2605688571929932, -0.10039350390434265, -0.40034881234169006, -1.472322940826416, 0.9132019281387329, 2.2113044261932373, -1.7974557876586914, -1.0634329319000244, -0.679593026638031, -0.5643178820610046, 0.22734594345092773, 1.614249587059021, 1.0085972547531128, 0.5275973677635193, -0.723928689956665, -1.1196281909942627, -0.7967752814292908, 1.5480668544769287, -0.061743300408124924, -0.4468362629413605, -0.18375572562217712, 0.8246182203292847, -1.3128496408462524, 1.4148740768432617, 0.15647625923156738, -0.2163439840078354, 0.4428461194038391, 0.21839706599712372, -0.34419646859169006, -0.2527106702327728, -0.8688625693321228, 0.6563907265663147, -0.5319938063621521, -0.9562584161758423, 0.1658635288476944, 1.3291412591934204, -0.04834462329745293, -0.6081012487411499, 0.4038960337638855, 1.9367125034332275, -1.4519054889678955, 0.38220277428627014, 0.2050866186618805, 1.1615338325500488, 0.9909091591835022, -0.18670910596847534, -1.68451726436615, 0.8065637946128845, -0.8351926803588867, -0.9467403888702393, 1.1483505964279175, -0.9108504056930542, 1.402844786643982, 0.3358447253704071, 0.3191184103488922, 0.3072647750377655, -1.6384236812591553, -1.7763886451721191, 0.21555306017398834, 0.5680073499679565, 0.08261103183031082, -0.8215345144271851, 0.018922103568911552, -0.0820341557264328, -0.957158088684082, 1.0139721632003784, -1.730276107788086, 0.5887424349784851, 0.3843234181404114, 1.0097118616104126, -1.0053118467330933, 0.10140714794397354, 2.1711649894714355, 0.6620742678642273, 0.10058120638132095, 0.5391612648963928, 0.08617684245109558, 2.1908979415893555, 0.983636200428009, -0.08561495691537857, 0.2523314356803894, -0.39079800248146057, 1.2098500728607178, -1.4061048030853271, -1.604738473892212, 1.4587147235870361, 2.1531198024749756, 0.46830490231513977, 0.11273793876171112, 0.657267689704895, -0.6470535397529602, 0.1712435483932495, 0.0389087051153183, 0.6265642642974854, -1.557998538017273, -0.5070347785949707, 0.8449956178665161, -0.6755938529968262, -0.9933613538742065, 2.042072057723999, 0.03811800107359886, -0.5789181590080261, -1.6923704147338867, 0.7293463349342346, 0.6991361379623413, -0.2987596094608307, -1.102230191230774, -0.024549422785639763, -0.8358560800552368, -0.9420936107635498, -0.10321275144815445, -1.0513904094696045, 0.24664895236492157, 0.6079925298690796, -0.8396324515342712, -1.3682451248168945, 1.5612796545028687, -0.9402702450752258, -0.6599426865577698, 0.21301716566085815, 0.5993693470954895, -0.2563169002532959, 0.4607943296432495, -0.4009861648082733, -0.9711706638336182, 1.4263168573379517, 2.4884417057037354, 1.695969581604004, 0.14180663228034973, 1.8334354162216187, 0.3557035028934479, -0.47728627920150757, 0.4663795828819275, -0.09439250826835632, -0.9831181764602661, -0.8983219861984253, 0.8020517230033875, -1.8465319871902466, 0.6041367650032043, -1.6295835971832275, -2.1211764812469482, -1.8388465642929077, 1.966763973236084, -0.19623395800590515, 0.08658318221569061, 1.419255018234253, 0.9341797232627869, -1.391505241394043, 0.869006335735321, 0.18418125808238983, -0.34167808294296265, 0.024290913715958595, 1.279811978340149, -0.8859664797782898, 0.400885671377182, -0.009657236747443676, -1.7971645593643188, -0.8022531867027283, 0.193213552236557, 1.29734206199646, 1.0013309717178345, 0.5972124934196472, -0.8152756690979004, 1.8012139797210693, 0.2152404636144638, -1.0063655376434326, -0.18290497362613678, 0.8962484002113342, 0.007617498282343149, 0.8868646621704102, 1.103693962097168, 0.40053069591522217, -0.8577026128768921, 0.1354546695947647, 0.045165855437517166, 1.8593463897705078, -1.6263219118118286, -0.13482245802879333, -0.5840935707092285, 0.33510562777519226, -2.4375643730163574, 1.1149245500564575, 0.013748487457633018, -1.8447011709213257, -0.36111313104629517, 0.60896235704422, -1.5914478302001953, 0.003222216386348009, -1.0574736595153809, -0.5559850335121155, 0.026738382875919342, 0.18345025181770325, -0.47074249386787415, 0.2727963924407959, 0.8179776072502136, -0.27891427278518677, 1.4315677881240845, 1.4622141122817993, -0.42870205640792847, -0.6378405690193176, -1.6641730070114136, -0.12656933069229126, -0.3634377717971802, 0.7790512442588806, -1.5096615552902222, -0.2773914039134979, 0.9687443971633911, -0.7303571105003357, -0.7623615264892578, -1.446940302848816, 2.6205737590789795, -0.7474731802940369, -1.300346851348877, -0.8038504123687744, -0.7742950916290283, -0.2693897783756256, 0.8253722190856934, -0.2983231544494629, -0.9228233098983765, -1.451338529586792, 0.021857358515262604, 0.0425390750169754, 1.5309323072433472, 0.09244773536920547, -0.09900831431150436, -1.0506538152694702, -0.3059525787830353, -0.4384744465351105, -0.370164155960083, -0.9592553973197937, 0.5383296012878418, -0.1424454152584076, -0.2003534734249115, -1.7140461206436157, 0.4936440885066986, 0.48701533675193787, -0.8391293883323669, 0.9901213645935059, -1.3647582530975342, -0.021869909018278122, -0.271207332611084, -1.3171747922897339, 0.1897026151418686, 1.7025701999664307, 0.0676342323422432, -0.46302175521850586, 0.4470241665840149, 0.10571999847888947, 0.02776213176548481, -0.4255422055721283, 1.4219756126403809, 0.45636335015296936, -0.5286706686019897, -0.10800383985042572, -0.7408667206764221, -0.6082911491394043, -0.6407257318496704, -1.134311556816101, 0.7772769927978516, -0.29104146361351013, 0.55412757396698, -0.6701259016990662, -0.060362495481967926, -0.7110406160354614, 0.7196681499481201, -0.24841929972171783, -0.7308735847473145, -1.6417032480239868, 0.2756665349006653, -0.7083850502967834, -0.015779217705130577, -0.49173009395599365, 0.9541895985603333, 0.5441447496414185, 0.4472121000289917, -0.6161211133003235, 0.46629005670547485, 1.7148315906524658, -0.8321860432624817, 0.17233914136886597, -1.6492170095443726, 1.3985620737075806, -0.39791208505630493, 0.7825788855552673, -1.7232282161712646, 1.7975393533706665, -0.35687151551246643, 0.5456573367118835, 0.15081819891929626, -0.25547078251838684, 1.685792326927185, -1.6480462551116943, 0.29871365427970886, 0.9106456637382507, -0.02985612116754055, -0.11817078292369843, -0.14268770813941956, -1.227636456489563, 0.03812738507986069, 0.5127175450325012, 0.06859922409057617, -0.2722761034965515, -0.4897250235080719, -0.2792966663837433, 1.2577441930770874, -2.086634874343872, 0.040071457624435425, -0.3277549147605896, 1.4558079242706299, 0.05549222603440285, 1.484925627708435, -2.123889923095703, 0.45958489179611206, 0.2800578474998474, 1.3905339241027832, -1.6413486003875732, -0.1550358086824417, 0.06606025993824005, -0.49579548835754395, 1.2165777683258057, -0.3386821746826172, 2.0347626209259033, 1.0541778802871704, 0.9508336782455444, 0.5592989921569824, -1.0636955499649048, -0.4310963451862335, 0.5727513432502747, 0.6775570511817932, 1.307183861732483, -0.46744102239608765, -0.8601533770561218, 0.8591042160987854, -0.809626579284668, 0.8733118176460266, 1.1997361183166504, 0.4561530351638794, -0.3575790226459503, 0.0410822257399559, 0.5934659242630005, 0.01018551830202341, 2.198296308517456, -0.990670919418335, -1.0026686191558838, -0.9768953919410706, -0.5895799398422241, -2.178931474685669, -0.6296504139900208, -0.6532847285270691, 0.07851402461528778, 0.41780057549476624, -1.2402163743972778, 0.9000542163848877, 1.8022422790527344, -0.2082851082086563, 1.5743712186813354, 0.19898949563503265, 1.988731861114502, 1.1172834634780884, -1.5639046430587769, 0.01862736977636814, 1.054324984550476, 0.030546581372618675, -0.036883529275655746, 1.26976478099823, -0.7098541855812073, 0.01751561276614666, 0.323625773191452, -0.33379095792770386, -0.02012910321354866, 0.7750232815742493, 0.4328376352787018, -0.8087175488471985, -1.1041239500045776, -0.7891021966934204, 0.0012484558392316103, -0.15993978083133698, -0.8319575190544128, -0.5981504321098328, -1.5200393199920654, 0.4178537130355835, -0.040018726140260696, -1.2597873210906982, 0.028620503842830658, 1.3426220417022705, -0.7399358749389648, 1.3151376247406006, -0.3234574794769287, 0.19782817363739014, 0.09775080531835556, 1.401523470878601, 0.15843383967876434, -1.1419013738632202, -1.310970425605774, -1.5329210758209229, -1.7119702100753784, 0.046135060489177704, -0.9583745002746582, -0.08081161230802536, -0.7038590312004089, -0.770784318447113, -0.4808453321456909, 0.7035855650901794, 0.9291451573371887, 0.37117254734039307, -0.9898225665092468, 0.6436312794685364, 0.688896656036377, 0.27464720606803894, -0.6036204099655151, 0.7088595628738403, 0.4228185713291168, -3.116856575012207, 0.6444520354270935, -1.9137426614761353, 0.6635615825653076, -0.15407240390777588, 1.1936116218566895, -0.09816121309995651, -0.8866142630577087, -0.1473536640405655, 1.0598063468933105, 0.02624661847949028, -0.11433515697717667, 0.7435535192489624, 0.2103593647480011, -0.005927405785769224, 1.3660600185394287, 1.5551140308380127, 0.6133262515068054, -0.2859591543674469, 1.4969110488891602, 1.183119535446167, 0.7188971638679504, -1.2160766124725342, 0.14067190885543823, -0.7436721920967102, -0.15901225805282593, 0.24005693197250366, 0.1001594066619873, -0.4751751124858856, 1.272953748703003, -1.6961312294006348, 0.7301835417747498, -1.8574832677841187, 0.3825981318950653, -0.8869042992591858, 0.8783037662506104, 0.08645252138376236, 0.24770638346672058, -1.0182793140411377, -0.6545701622962952, 0.20721739530563354, 0.5835699439048767, 2.929096221923828, 0.22285832464694977, 0.9760375022888184, -1.556933879852295, -1.3298919200897217, -0.35549476742744446, -1.197427749633789, 1.4863992929458618, -0.4102186858654022, 1.3821818828582764, 1.486782431602478, 0.042779721319675446, 0.5017997622489929, -0.05609947443008423, 0.538437008857727, 0.48334184288978577, -0.12364962697029114, 0.5049699544906616, 1.723696231842041, 0.7130162119865417, 0.3257996141910553, 0.12476952373981476, -1.0126731395721436, -1.0272969007492065, 0.3233565390110016, -1.3693910837173462, -0.7663276195526123, 1.2815113067626953, 1.9142297506332397, -1.6659560203552246, 1.6266496181488037, -0.21143829822540283, -0.015005087479948997, -0.11341162770986557, 1.080544114112854, -1.60767662525177, 0.456163614988327, -0.9448701739311218, 0.5707885026931763, 1.5427963733673096, -0.0004173264023847878, 0.37415507435798645, 0.4095517694950104, -0.7995935082435608, 1.5116393566131592, 1.7064682245254517, 0.7017833590507507, 0.07328543066978455, -0.46189382672309875, -0.6264902353286743, 1.7108365297317505, 1.4144150018692017, -0.06366148591041565, -1.5799305438995361, -2.8320119380950928, -1.0834267139434814, -0.13062039017677307, 1.4006890058517456, -0.6516562104225159, 0.5048154592514038, 1.3031809329986572, 0.12853631377220154, -0.14244787395000458, -1.3087635040283203, -1.2024753093719482, 0.4160996377468109, -0.20090752840042114, 0.12253131717443466, -0.04727771505713463, 0.6641440391540527, -0.7846873998641968, -0.33558064699172974, 1.8961821794509888, -0.7997861504554749, -0.28157544136047363, -0.5893867015838623, 0.4447813630104065, 1.0223922729492188, -0.4982116222381592, -0.43141433596611023, -0.27898159623146057, 0.5298337936401367, -0.7393953204154968, -0.37595996260643005, -2.3721938133239746, -1.3817449808120728, -0.11244375258684158, 0.8978641629219055, 0.29507577419281006, -1.0987684726715088, -1.4002561569213867, 0.17468009889125824, -1.652803659439087, 1.0659267902374268, 0.06389619410037994, -1.6073201894760132, -0.9659538865089417, -0.7243112921714783, -0.7731925249099731, -1.4899330139160156, -0.8746625185012817, -0.6844015717506409, -0.7112857699394226, 1.1279566287994385, 0.10482780635356903, -0.9932572245597839, -0.3346216082572937, -0.8795570731163025, -0.3000066578388214, 0.8755091428756714, 0.25227078795433044, 2.2856011390686035, 0.3759274184703827, -0.9135944843292236, 0.8097407221794128, 1.0799312591552734, 1.0941669940948486, -1.0942409038543701, -0.14763741195201874, 1.1318119764328003, -1.684728980064392, -0.4994167685508728, -1.4269376993179321, -0.932570219039917, -1.0124571323394775, 1.2505698204040527, -0.2345380336046219, -0.8633555769920349, -1.035605788230896, 0.1416671723127365, -0.011135627515614033, 1.3440743684768677, 0.5000166893005371, -1.431797742843628, -0.6289806962013245, 1.0700725317001343, -0.6210827231407166, 1.734572172164917, -1.0982894897460938, 0.5726133584976196, -0.8612155318260193, -0.5095951557159424, 1.0985816717147827, -0.12706716358661652, 0.8134522438049316, 0.4732905924320221, 0.753865659236908, -0.8881881833076477, -0.22157439589500427, 0.42425262928009033, -0.8490728735923767, 1.6295000314712524, -0.777228057384491, -0.3000035881996155, -1.0065590143203735, -2.143308162689209, 1.796918511390686, -0.204338937997818, -0.44791483879089355, -0.19871506094932556, 1.4198639392852783, -0.9651066064834595, 0.6795678734779358, -0.42378824949264526, -0.5966708660125732, 0.5670582056045532, 0.9882405996322632, -0.5139029622077942, -0.7688491344451904, -1.169095754623413, 1.1035038232803345, -0.5752559900283813, -1.8491307497024536, 1.409952163696289, -1.3698594570159912, 0.7794605493545532, 0.18342864513397217, 0.28791543841362, -0.584375262260437, 0.36559146642684937, -1.6677799224853516, 0.5880377292633057, 1.5570100545883179, 0.8840271830558777, -2.0195400714874268, -0.9842090010643005, -0.18779492378234863, 0.4869373142719269, -0.10665267705917358, -0.4932143986225128, 0.5953003168106079, 1.1641517877578735, -0.2322940081357956, 0.728929877281189, -2.5790507793426514, -0.9375093579292297, -0.32125893235206604, -0.48856621980667114, 0.33279821276664734, 1.0137505531311035, 0.5066690444946289, -0.6222254633903503, -1.5227681398391724, 0.556964099407196, -1.8381767272949219, 0.6530373096466064, -0.18844908475875854, -1.1758350133895874, 0.2872573137283325, -0.00287610269151628, -0.03659729287028313, -0.08422330021858215, 0.41952410340309143, 0.9244340062141418, 0.4966152012348175, 1.012133240699768, -0.04413972049951553, 1.6184593439102173, 0.5711098313331604, -0.543694019317627, -1.0938950777053833, 0.20579680800437927, -1.3065215349197388, -0.9733759760856628, 0.2390870749950409, -0.6078874468803406, -0.9333162307739258, -0.03447504714131355, 0.07267789542675018, -0.2058340311050415, -0.37754690647125244, 0.8546427488327026, 0.3424273431301117, -0.22342611849308014, 2.4643218517303467, 0.19383174180984497, 1.1320050954818726, -0.5609809756278992, -1.3629409074783325, -0.7917565107345581, -0.2680097818374634, -0.4966081976890564, 1.3363862037658691, -0.120041124522686, 0.4614688754081726, -0.04648115485906601, -0.4335543215274811, 0.03799601271748543, 1.7140514850616455, -0.767948567867279, 0.7669904232025146, -1.0260072946548462, -0.4596264362335205, 0.0035832058638334274, 0.3263750970363617, 1.4831286668777466, -0.05008264258503914, -0.8436155915260315, 0.6500419974327087, -0.36416980624198914, 0.23868156969547272, -0.11622244119644165, -1.9434568881988525, 0.5082991719245911, 0.5833680033683777, 0.9266047477722168, 1.8004627227783203, -1.1951037645339966, 0.5165074467658997, 0.409294992685318, -0.41908198595046997, 0.39710623025894165, 0.49964696168899536, -1.2186838388442993, 0.24622276425361633, -0.9179843068122864, -0.6518564820289612, -1.7747448682785034, -0.47336092591285706, -0.2035706788301468, 0.5498568415641785, 0.0008999266428872943, -1.5422881841659546, 0.8621480464935303, -0.11858662217855453, 0.4883705973625183, 0.9659361243247986, 1.4226047992706299, 1.9612269401550293, -0.07223875820636749, 0.31112444400787354, -1.0783610343933105, 1.0616002082824707, -1.184887409210205, -1.8052517175674438, 0.8303859829902649, -0.5216965079307556, 0.777607262134552, 0.40807464718818665, -1.6300026178359985, -2.719679355621338, -1.0966017246246338, 0.016491487622261047, -1.2217763662338257, -0.6527614593505859, -1.4589407444000244, 0.16987796127796173, 0.09082593023777008, -0.48139262199401855, 1.397065281867981, 1.4977149963378906, 0.5652672052383423, -1.7997711896896362, -1.1046901941299438, 0.40713033080101013, -0.628557562828064, -0.48709142208099365, 0.8989673852920532, 0.5108748078346252, 1.3141543865203857, -0.42920929193496704, 1.3752254247665405, -0.554131269454956, 1.4994914531707764, 0.10583464056253433, -0.8605097532272339, -1.631219506263733, -0.3014723062515259, -0.25623270869255066, 0.8576619029045105, -0.11059050261974335, -0.4324319660663605, 1.0770374536514282, -0.22482655942440033, -0.5762417912483215, 0.5746089220046997, -0.4898282289505005, 0.6588021516799927, -0.5969170928001404, -0.22295917570590973, 0.15217697620391846, -0.3741263151168823, -0.013451469130814075, 0.8154719471931458, 0.41060179471969604, 0.4809698462486267, -0.6354304552078247, 0.8528297543525696, 0.6695623397827148, 1.004419207572937, -0.7263658046722412, -0.17245860397815704, 0.6335338950157166, -0.6088151335716248, -0.22612246870994568, 1.925805687904358, 1.95176100730896, 1.2399405241012573, 0.9385851621627808, -1.0192511081695557, 0.5125622153282166, -0.3591165840625763, -1.0585719347000122, -0.5090058445930481, 0.11566507071256638, -0.547355592250824, -0.5507994294166565, 0.7920414805412292, 0.14410649240016937, 0.23345808684825897, 0.11187239736318588, -0.6757031679153442, -1.3705719709396362, 0.31056469678878784, -0.5070366263389587, -2.010782241821289, -0.3925672471523285, -1.0922179222106934, 0.6986502408981323, 0.5216252207756042, 0.49689313769340515, -0.6650416254997253, 0.7315515875816345, 0.3196497857570648, -0.409854531288147, -0.4533374309539795, 0.8927081823348999, -0.4736040532588959, 0.3036564588546753, 1.0339570045471191, 1.909342646598816, 1.6638730764389038, 0.9008227586746216, -1.5059113502502441, -0.6890484094619751, -0.5480871796607971, 1.6531498432159424, -0.6993179321289062, 0.38616636395454407, 0.10086706280708313, -0.9351271986961365, 0.3818240165710449, 0.3982960879802704, -1.2557748556137085, 1.2228775024414062, -2.086509943008423, -0.5907571315765381, 0.9719703197479248, -1.1932578086853027, 0.3502659201622009, -1.2963603734970093, -0.09302414208650589, -2.3137731552124023, -0.8425716757774353, -1.5429214239120483, -0.4017637372016907, -0.4152314066886902, -0.6736641526222229, 0.7979131937026978, -0.8868796229362488, 0.6343866586685181, 1.6292757987976074, 0.13906414806842804, -0.8576701879501343, -1.2493385076522827, -0.7097851037979126, 0.7046427130699158, 0.1555907279253006, 0.9367952346801758, 0.7703309059143066, 0.14081065356731415, 0.4734882712364197, 1.8552461862564087, 1.4156562089920044, -0.3027460277080536, 0.9896794557571411, 0.5858508348464966, 1.1363880634307861, 0.6716165542602539, -0.9741674065589905, -1.6196845769882202, 0.5726270079612732, 1.902618169784546, -0.7756640911102295, -0.1880897432565689, -1.035747766494751, 1.1778295040130615, -2.3051669597625732, -2.263660192489624, 0.375019907951355, -0.08234364539384842, -0.479623019695282, -0.30109480023384094, 0.5369879007339478, -0.41380399465560913, -1.0969250202178955, -0.9273629188537598, 0.8883388638496399, -0.5247419476509094, -1.3852776288986206, 0.10217832773923874, 0.5049947500228882, 1.3289607763290405, 0.21790339052677155, -0.6597112417221069, 0.47400787472724915, 0.7271748781204224, -0.0389053076505661, -0.044599391520023346, 0.26013290882110596, -0.06985649466514587, 0.25011390447616577, -1.0219132900238037, -1.1504377126693726, -0.8361113667488098, 0.6422109603881836, 0.2587975561618805, 1.0402389764785767, -0.18669092655181885, -1.1436413526535034, 1.144553542137146, -0.01876705512404442, 1.2834550142288208, 0.5979464650154114, 2.1886186599731445, -0.21977297961711884, 0.900723934173584, 0.8913640975952148, -0.5551263689994812, -0.17248231172561646, -1.4617383480072021, -1.5487961769104004, 0.12656879425048828, 0.7930070757865906, 0.6380240321159363, 0.34002459049224854, 0.8630171418190002, -0.5896977782249451, -0.27253276109695435, 0.7375215291976929, 0.4331187307834625, -0.2101888209581375, 1.3207943439483643, -1.2920012474060059, -0.5186786651611328, -0.28339776396751404, 0.8165348768234253, 0.0023851979058235884, -1.2614917755126953, 0.5140041708946228, 1.0875463485717773, 0.7393045425415039, 0.6191549301147461, -1.874313473701477, -0.8998864889144897, 0.4820806086063385, -0.05488818511366844, 0.5225576162338257, -1.2663426399230957, -0.06149476394057274, -1.3897809982299805, -1.9536786079406738, 0.2957790791988373, 0.8425887823104858, 0.24561642110347748, -0.03299647942185402, -1.5620143413543701, 1.0061070919036865, -0.044044896960258484, 1.959562063217163, 0.9423143267631531, -2.0051255226135254, 0.7550497055053711, -1.3965352773666382, -0.7594954967498779, -0.2507566809654236, -0.0940624475479126, 0.39756521582603455, -1.0228550434112549, -1.1506919860839844, 0.6006051898002625, -0.013250268064439297, 0.17437304556369781, -2.193683385848999, -0.17713738977909088, -0.8907291889190674, -0.9206264019012451, 0.9219347834587097, -1.0956711769104004, -1.092896580696106, -0.3310106098651886, 0.4502888321876526, -0.8840147256851196, 1.2341440916061401, 1.4498475790023804, -0.8814470767974854, -0.24508175253868103, -0.7786754965782166, -1.6853821277618408, 0.30301105976104736, 0.7335948944091797, 2.011864185333252, -0.8974094986915588, 1.3362350463867188, 1.3423537015914917, 0.19785331189632416, 0.6021634936332703, 0.8732730746269226, 1.9740999937057495, 0.47780856490135193, -0.06013788655400276, -0.8661687970161438, 0.30532076954841614, 1.0241649150848389, 0.24461035430431366, -0.7799232602119446, 0.0890762060880661, -0.12915347516536713, 0.2647387683391571, -1.6618484258651733, 0.5507886409759521, 0.59542316198349, 0.44485342502593994, -0.003762817243114114, -1.8059362173080444, -0.019322792068123817, 1.0607149600982666, -0.8601288795471191, -1.989269495010376, -1.5405579805374146, 0.3140257000923157, 0.37287601828575134, 0.8862931728363037, -0.05525899678468704, -1.5003284215927124, -0.8185041546821594, 0.8188393712043762, 0.1404959112405777, 0.649829626083374, 0.4347887933254242, -0.20496055483818054, -0.17400683462619781, 1.8571022748947144, 0.4146742522716522, -0.128587543964386, 0.45541998744010925, 0.22290581464767456, -2.1573562622070312, 0.6500844955444336, 1.820939302444458, -0.7802798748016357, 1.454035758972168, -0.25686970353126526, 0.29347139596939087, 1.0703600645065308, -0.7200014591217041, 1.2424938678741455, -1.2142173051834106, -0.8751547336578369, -0.5935203433036804, 0.6620053648948669, -0.34087440371513367, -1.5199744701385498, -0.2165328711271286, -0.7842214107513428, 0.7312936186790466, -0.343235045671463, 0.07077407836914062, -0.40547245740890503, 0.43393898010253906, -0.18359076976776123, 0.3251987099647522, -2.593388557434082, 0.09725087881088257, 0.41391366720199585, -0.1992800533771515, 0.669392466545105, 0.7386070489883423, 1.3042138814926147, 0.10481160879135132, -1.9138007164001465, -2.285499334335327, -1.6018409729003906, -0.037907060235738754, -0.1573052853345871, 0.2762398421764374, -0.6252459287643433, -0.7364911437034607, 0.5550479292869568, 0.6559244394302368, -0.2566501498222351, -0.03847665712237358, 0.4043143391609192, 0.504343569278717, -1.1439807415008545, -0.7195738554000854, -1.230545997619629, -0.5069066286087036, 0.8123335838317871, 0.5462718605995178, -1.0980979204177856, 0.5122667551040649, 0.08584310859441757, -0.4939267039299011, -1.4064596891403198, -0.17482337355613708, 0.6799439787864685, -2.163097620010376, -0.3961232006549835, 2.2542836666107178, 0.6726367473602295, 0.259832501411438, -0.7371851801872253, -0.6783298254013062, -0.08328839391469955, 1.6028636693954468, 0.4655891954898834, -0.872158408164978, 1.17678701877594, -0.29259419441223145, 1.6973464488983154, -0.5666030049324036, -1.0032657384872437, 0.1746295839548111, 0.9823269844055176, 1.037444829940796, 0.1591917723417282, -0.9880967140197754, -0.5053406953811646, -2.018281936645508, -0.9131215214729309, -0.17845681309700012, 0.38900214433670044, -0.33945432305336, -0.05697905644774437, -0.3961854577064514, 0.7510253190994263, -0.8991129398345947, 0.8375478982925415, 1.9608807563781738, 0.4727896451950073, -0.5270916223526001, -0.5362701416015625, 1.2098371982574463, -1.1265894174575806, -0.9538044333457947, -1.1644484996795654, -1.278513789176941, -1.0448163747787476, 0.7899049520492554, 1.1022825241088867, -0.6970731019973755, 0.20733404159545898, 0.7591567039489746, 0.10056420415639877, -0.9549427628517151, -1.4704017639160156, 1.0104275941848755, 0.49617940187454224, 0.5769559144973755, -1.1076469421386719, 0.23497718572616577, 0.6289995908737183, 0.3140338361263275, -0.7450231909751892, 1.0122605562210083, -1.5276319980621338, 0.9287419319152832, 1.081055998802185, 1.572330355644226, -0.3424921929836273, -0.9994300007820129, 0.7938803434371948, -0.699215292930603, 0.043995510786771774, -0.3174622058868408, -0.9020719528198242, 0.32099947333335876, -1.3920159339904785, 0.5922057032585144, -0.9669311046600342, -1.7317312955856323, -0.05010746046900749, 0.431633859872818, 0.5769345760345459, 0.8183537125587463, -2.35364031791687, -1.005144476890564, 0.10665229707956314, 1.5190032720565796, 0.7837445139884949, 1.9013400077819824, -0.5249394178390503, 0.274416983127594, -1.099970817565918, -0.40435221791267395, -0.7352957129478455, -0.6339886784553528, -0.3934491276741028, 0.0027175399009138346, 0.022212663665413857, 0.5434534549713135, 0.1399884670972824, -0.34404563903808594, -0.5225785374641418, -0.30713170766830444, -0.4490371346473694, 0.49097105860710144, 0.8655251860618591, 1.2740445137023926, -0.7977027893066406, 0.4693722128868103, -1.3946796655654907, 0.3731747269630432, 1.0826722383499146, -0.14958950877189636, 1.0726360082626343, -1.1385679244995117, -0.8886452913284302, -0.13580983877182007, 1.0222103595733643, -0.41742944717407227, -0.45355311036109924, -0.9916283488273621, 0.20288103818893433, 1.2466951608657837, 0.700680136680603, 0.6966506838798523, -0.20697447657585144, -0.563309371471405, 0.6772459149360657, -0.03191107511520386, -0.1736082285642624, 0.8982406258583069, -0.19778744876384735, -0.837776243686676, 0.9091885089874268, 0.08071988821029663, -1.0370293855667114, -1.1129058599472046, 0.09541187435388565, 2.337409734725952, -0.3928205966949463, -0.33627384901046753, 1.5237711668014526, -0.05728119984269142, -1.4484668970108032, -1.5727964639663696, 1.2266639471054077, 0.6663545370101929, 0.8261256814002991, -0.05775655806064606, -0.7267120480537415, -0.2171631157398224, 0.13603121042251587, -0.8383111357688904, 0.5614498853683472, -1.2595961093902588, -0.33275875449180603, -0.20400787889957428, -0.6910198330879211, -2.20550537109375, 0.4478696584701538, -0.7557507753372192, 1.3257079124450684, -0.34198227524757385, -0.5413596034049988, 0.09152194857597351, 1.053439736366272, -0.5634076595306396, 1.0147377252578735, 1.4403036832809448, 0.9903228282928467, 1.6264314651489258, 1.292646050453186, 1.5148823261260986, 1.6043263673782349, 0.20806953310966492, -0.429223895072937, -2.2622437477111816, -1.3227331638336182, -0.44828280806541443, -0.38173508644104004, -0.1527944654226303, -1.0007604360580444, -1.5957776308059692, -0.13022316992282867, -0.18941792845726013, -0.8075540661811829, -0.7421521544456482, -0.9401565790176392, -0.39652374386787415, -0.856302797794342, 1.2598752975463867, 0.24099673330783844, -0.9723179340362549, -0.280447781085968, -1.1802855730056763, 1.012168288230896, 1.3841867446899414, 1.2520020008087158, -1.1446926593780518, -0.09126701951026917, -0.4015706777572632, 0.5620130896568298, -1.0079097747802734, -0.6758916974067688, -0.41321703791618347, 0.15328846871852875, 0.694128692150116, -0.32872769236564636, 0.6639650464057922, 0.8220763802528381, -0.21321523189544678, -1.2456581592559814, -1.1711903810501099, 0.5917269587516785, -0.476224422454834, -1.7126293182373047, 0.6129523515701294, 0.12955452501773834, -1.405967116355896, 1.179419994354248, 0.8366360068321228, 0.1387452483177185, -1.2743194103240967, -1.4023305177688599, -0.30706849694252014, -1.7139153480529785, 0.40508025884628296, -1.4108233451843262, 0.16491273045539856, -0.288131445646286, 0.7117852568626404, -0.9379475712776184, 0.27372944355010986, -1.3948402404785156, 0.7955495715141296, -0.11496176570653915, 0.49585068225860596, -1.3205252885818481, 0.4990842640399933, 0.3062033951282501, 0.36369788646698, 0.3126339614391327, -0.19346387684345245, 1.2412992715835571, -0.15589798986911774, -0.739169180393219, -0.05872619152069092, -0.9505179524421692, -0.46399641036987305, -0.17724661529064178, -0.3795541226863861, 0.19939707219600677, 1.9457614421844482, 0.5709498524665833, 1.072300672531128, -0.5037094354629517, -0.5870162844657898, -0.37817806005477905, 0.8528891205787659, -2.148118495941162, -1.0331647396087646, 0.1023358479142189, -0.22409236431121826, 1.9677296876907349, 0.4476832151412964, -0.6621914505958557, -1.5776070356369019, -0.34056004881858826, -1.3032200336456299, 0.4667506515979767, 0.16110631823539734, 0.32003194093704224, 2.079176664352417, -0.9074659943580627, -0.19240421056747437, -1.2125157117843628, -0.08059851825237274, 1.593273639678955, 0.5687224268913269, -0.11448704451322556, 0.2516302466392517, -1.2108556032180786, -0.3937337100505829, 0.08525257557630539, 0.09942198544740677, -1.530616283416748, 0.327623188495636, 0.27919650077819824, -0.3770512044429779, 0.004174998961389065, -1.4834915399551392, -1.4797955751419067, 0.13468725979328156, -0.6677231788635254, -0.011555519886314869, 0.8394906520843506, -0.17392992973327637, -2.8106679916381836, -0.1506536453962326, -0.4810440242290497, -0.23469436168670654, 0.8997308015823364, -1.578530192375183, 0.24395662546157837, 1.5703039169311523, -0.625943124294281, 0.4723278880119324, 0.9663057923316956, 0.21023143827915192, -0.6850969791412354, -0.7095209956169128, 0.743800163269043, 0.5921490788459778, -0.7864683866500854, -1.1764731407165527, -1.2808066606521606, 1.661651849746704, -0.06794512271881104, 2.3602285385131836, 0.5555456280708313, 0.43952232599258423, 0.3062724769115448, 0.9991498589515686, -0.9660632014274597, 2.160013198852539, -0.10030170530080795, -0.7034000754356384, 0.3025610148906708, 1.0923389196395874, -1.0075548887252808, 0.5668693780899048, -0.7164441347122192, -0.5062735080718994, -0.48948243260383606, 0.7635414600372314, -1.1090726852416992, 0.19261610507965088, -0.34341785311698914, -0.847210168838501, -1.2135236263275146, -1.2028883695602417, -1.633795976638794, 0.8961672186851501, -0.24165315926074982, 0.1586519330739975, 1.1781893968582153, -1.220117211341858, -0.9415456652641296, 0.25471553206443787],
4
  "lp2_2d_kernel2_stride1_input_x": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
 
562
  },
563
  {
564
  "name": "autopad_same_upper_stride2_p3",
565
+ "provenance": { "notes": "SAME_UPPER with p=3 exercises the general exponent path and auto-pad layout." },
 
 
566
  "attrs": { "auto_pad": "SAME_UPPER", "p": 3, "kernel_shape": [3, 3], "strides": [2, 2] },
567
  "inputs": {
568
  "x": {
 
635
  },
636
  {
637
  "name": "f32_2d_k2s2_p2_unrolled_2x16x32x32",
638
+ "provenance": { "notes": "A compact dense float32 NCHW input exercises unrolled k2/s2 p=2 LpPool." },
 
 
639
  "attrs": { "p": 2, "kernel_shape": [2, 2], "strides": [2, 2] },
640
  "inputs": {
641
  "x": {
 
649
  {
650
  "name": "f32_3d_ncdhw_k2s2_p2_volumetric_1x4x8x8x8",
651
  "provenance": {
652
+ "notes": "A compact float32 rank-5 NCDHW input exercises volumetric k2/s2 p=2 pooling with nontrivial channel and depth work."
653
  },
654
  "attrs": { "p": 2, "kernel_shape": [2, 2, 2], "strides": [2, 2, 2] },
655
  "inputs": {
 
768
  "name": "lppool3d_depth_dilation2_compact",
769
  "provenance": {
770
  "source": "ONNX LpPool-22 volumetric dilation semantics",
771
+ "notes": "Depth dilation 2 spaces the two volumetric pooling taps across three input planes."
772
  },
773
  "attrs": { "p": 2, "kernel_shape": [2, 1, 1], "dilations": [2, 1, 1] },
774
  "inputs": {
 
783
  {
784
  "name": "ncl1d_k4s2_p2_x4_tail_two_planes",
785
  "provenance": {
786
+ "notes": "Two planes exercise four-output L2 reuse followed by a three-output final block. Distinct generated values make any read beyond the final plane observable."
787
  },
788
  "attrs": { "p": 2, "kernel_shape": [4], "strides": [2] },
789
  "inputs": {
 
857
  }
858
  },
859
  "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 7], "tolerance": 0.01 } }
860
+ },
861
+ {
862
+ "name": "autopad_same_upper_rank3_effective_pad",
863
+ "provenance": {
864
+ "notes": "A rank-3 one-dimensional SAME_UPPER pool resolves padding per spatial axis. Its windows are (pad,1,2), (2,3,4), and (4,5,pad), producing sqrt(5), sqrt(29), and sqrt(41)."
865
+ },
866
+ "attrs": { "auto_pad": "SAME_UPPER", "p": 2, "kernel_shape": [3], "strides": [2] },
867
+ "inputs": {
868
+ "x": {
869
+ "dtype": "float32",
870
+ "shape": [1, 1, 5],
871
+ "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0] }
872
+ }
873
+ },
874
+ "outputs": {
875
+ "y": {
876
+ "dtype": "float32",
877
+ "shape": [1, 1, 3],
878
+ "data": { "kind": "values", "values": [2.23606797749979, 5.385164807134504, 6.4031242374328485] },
879
+ "tolerance": 0.0001
880
+ }
881
+ }
882
+ },
883
+ {
884
+ "name": "autopad_same_upper_rank5_effective_pad",
885
+ "provenance": {
886
+ "notes": "A rank-5 SAME_UPPER pool derives leading padding independently for depth, row, and column. Every output changes if any spatial-axis pad is incorrect."
887
+ },
888
+ "attrs": { "auto_pad": "SAME_UPPER", "p": 2, "kernel_shape": [3, 3, 3], "strides": [2, 2, 2] },
889
+ "inputs": {
890
+ "x": {
891
+ "dtype": "float32",
892
+ "shape": [1, 1, 3, 3, 3],
893
+ "data": { "kind": "fillFloat32", "sinStep": 0.31, "cosStep": 0.17, "scale": 2.0 }
894
+ }
895
+ },
896
+ "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 2, 2, 2], "tolerance": 0.0001 } }
897
  }
898
  ]
899
  }