Xenova HF Staff commited on
Commit
21a9210
·
verified ·
1 Parent(s): df3596d

sync c928d21e6cc1

Browse files
build/webgpu/manifest.json CHANGED
@@ -553,7 +553,7 @@
553
  "id": "tree_last_axis_vec4",
554
  "priority": 23,
555
  "demoteWhen": ["rowSerialPreferred"],
556
- "when": ["not flatParallelCovered", "(dtypes.T == \"f32\" or dtypes.T == \"f16\")", "f16Ok(dtypes.T)", "ranks.data >= 1", "reduceAxis == ranks.data - 1", "numel(shapes.reduced) == rows(shapes.data, ranks.data - 1)", "attrs.noop_with_empty_axes == 0", "lastAxisCols >= tunables.ROW_PARALLEL_MIN_COLS", "lastAxisCols % tunables.VECTOR_WIDTH == 0", "treeWorkgroupOk"],
557
  "constants": {
558
  "scalar": "dtypes.T",
559
  "vectorScalar": "\"vec4<\" ~ dtypes.T ~ \">\"",
@@ -630,8 +630,11 @@
630
  "id": "axis1_parallel",
631
  "priority": 20,
632
  "demoteWhen": ["rowSerialPreferred"],
633
- "when": ["not flatParallelCovered", "(dtypes.T == \"f32\" or dtypes.T == \"f16\")", "f16Ok(dtypes.T)", "ranks.data >= 2", "reduceAxis == ranks.data - 1", "numel(shapes.reduced) == rows(shapes.data, ranks.data - 1)", "lastAxisCols >= tunables.ROW_PARALLEL_MIN_COLS", "treeWorkgroupOk"],
634
- "constants": { "workgroupSize": "min(reduceWorkgroupSize, pow2ceil(dim(shapes.data, ranks.data - 1)))" },
 
 
 
635
  "passes": [
636
  {
637
  "id": "main",
 
553
  "id": "tree_last_axis_vec4",
554
  "priority": 23,
555
  "demoteWhen": ["rowSerialPreferred"],
556
+ "when": ["not flatParallelCovered", "(dtypes.T == \"f32\" or dtypes.T == \"f16\" or dtypes.T == \"i32\")", "f16Ok(dtypes.T)", "ranks.data >= 1", "reduceAxis == ranks.data - 1", "numel(shapes.reduced) == rows(shapes.data, ranks.data - 1)", "attrs.noop_with_empty_axes == 0", "lastAxisCols >= tunables.ROW_PARALLEL_MIN_COLS", "lastAxisCols % tunables.VECTOR_WIDTH == 0", "treeWorkgroupOk"],
557
  "constants": {
558
  "scalar": "dtypes.T",
559
  "vectorScalar": "\"vec4<\" ~ dtypes.T ~ \">\"",
 
630
  "id": "axis1_parallel",
631
  "priority": 20,
632
  "demoteWhen": ["rowSerialPreferred"],
633
+ "when": ["not flatParallelCovered", "(dtypes.T == \"f32\" or dtypes.T == \"f16\" or dtypes.T == \"i32\")", "f16Ok(dtypes.T)", "ranks.data >= 2", "reduceAxis == ranks.data - 1", "numel(shapes.reduced) == rows(shapes.data, ranks.data - 1)", "lastAxisCols >= tunables.ROW_PARALLEL_MIN_COLS", "treeWorkgroupOk"],
634
+ "constants": {
635
+ "scalar": "dtypes.T",
636
+ "workgroupSize": "min(reduceWorkgroupSize, pow2ceil(dim(shapes.data, ranks.data - 1)))"
637
+ },
638
  "passes": [
639
  {
640
  "id": "main",
build/webgpu/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "ai.onnx.ReduceSumSquare",
3
- "id": "_ai_onnx_reducesumsquare_webgpu_25f2fae",
4
  "version": 1,
5
  "license": "Apache-2.0",
6
  "backend": { "type": "webgpu" },
@@ -8,7 +8,7 @@
8
  "algorithm": "sha256",
9
  "files": {
10
  "bench.json": "aZf98col1XbXbVIoh/XRcLCd6d8Gdlh/YSfwK7AOqfQ=",
11
- "manifest.json": "x2HMgsrZw4cgL5Gh2PY6YGJkTPOsaevYthFvwP0cKQ0=",
12
  "reduce-axis-split-reduce.wgsl.jinja": "9UQRFKPFo6Lb7C7m26ZsL9fW7CTHoevQYVpUyRtk2Ws=",
13
  "reduce-axis0-splitk-combine.wgsl.jinja": "uBBEUUxLWHWFF9sdlIgcdZ3y5SlI46mwaa0qtq4oP6E=",
14
  "reduce-axis0-splitk-reduce.wgsl.jinja": "IGQCu1A7k3Mk3057oCR4O7A/A4+ndPIU5gkSMuwKIa4=",
@@ -16,11 +16,11 @@
16
  "reduce-flat-partial.wgsl.jinja": "Ay7IA9d0BGy3QYtX0mE3rGZAXtbRDkOfYH/Fwtw02t8=",
17
  "reduce-noop-empty-axes.wgsl.jinja": "Ul3dEo3ytFa8wBd8Ng8FYoKuF8wHNgc7TcR0Sl84rak=",
18
  "reduce-row-subgroup.wgsl.jinja": "NmtliJf2VnRoM8VeuY6GeaunndcsSrB2Tq6h6w7Erxc=",
19
- "reduce-row-tree.wgsl.jinja": "gSbBBSgX6OV76ntiRJjFfII2zOxsyVSM5TBbBItfDfU=",
20
  "reduce-serial-axis.wgsl.jinja": "TIEXwXzMzjDGjqUqtgHWTx5pWhrQ6o48+5GCB1FXL8I=",
21
  "test.json": "JMhu8FpuiqOOu4A66ZAFaogmyb2EdnuMM5NYwZTftsc="
22
  }
23
  },
24
- "provenance": { "kernel": { "sha": "2e7068faf55e7f43df740015f6d1ee49391a41c5", "dirty": false } },
25
  "webgpu": { "manifestSpec": "1.0", "specialized": true, "opPath": "ops/ai.onnx.ReduceSumSquare" }
26
  }
 
1
  {
2
  "name": "ai.onnx.ReduceSumSquare",
3
+ "id": "_ai_onnx_reducesumsquare_webgpu_24bc15b",
4
  "version": 1,
5
  "license": "Apache-2.0",
6
  "backend": { "type": "webgpu" },
 
8
  "algorithm": "sha256",
9
  "files": {
10
  "bench.json": "aZf98col1XbXbVIoh/XRcLCd6d8Gdlh/YSfwK7AOqfQ=",
11
+ "manifest.json": "6ZqJDP++WuQjIJUm/mDQod6awvAQRoonRnzJ5nPU2+c=",
12
  "reduce-axis-split-reduce.wgsl.jinja": "9UQRFKPFo6Lb7C7m26ZsL9fW7CTHoevQYVpUyRtk2Ws=",
13
  "reduce-axis0-splitk-combine.wgsl.jinja": "uBBEUUxLWHWFF9sdlIgcdZ3y5SlI46mwaa0qtq4oP6E=",
14
  "reduce-axis0-splitk-reduce.wgsl.jinja": "IGQCu1A7k3Mk3057oCR4O7A/A4+ndPIU5gkSMuwKIa4=",
 
16
  "reduce-flat-partial.wgsl.jinja": "Ay7IA9d0BGy3QYtX0mE3rGZAXtbRDkOfYH/Fwtw02t8=",
17
  "reduce-noop-empty-axes.wgsl.jinja": "Ul3dEo3ytFa8wBd8Ng8FYoKuF8wHNgc7TcR0Sl84rak=",
18
  "reduce-row-subgroup.wgsl.jinja": "NmtliJf2VnRoM8VeuY6GeaunndcsSrB2Tq6h6w7Erxc=",
19
+ "reduce-row-tree.wgsl.jinja": "NYIcJeg9W49teJHKbEYoSEL97UAjDnx+WBeMpG7kA3w=",
20
  "reduce-serial-axis.wgsl.jinja": "TIEXwXzMzjDGjqUqtgHWTx5pWhrQ6o48+5GCB1FXL8I=",
21
  "test.json": "JMhu8FpuiqOOu4A66ZAFaogmyb2EdnuMM5NYwZTftsc="
22
  }
23
  },
24
+ "provenance": { "kernel": { "sha": "c928d21e6cc1310861cba3bafb75f5f679ecf5f3", "dirty": false } },
25
  "webgpu": { "manifestSpec": "1.0", "specialized": true, "opPath": "ops/ai.onnx.ReduceSumSquare" }
26
  }
build/webgpu/reduce-row-tree.wgsl.jinja CHANGED
@@ -26,7 +26,8 @@ enable f16;
26
  const WG: u32 = {{ workgroupSize }}u;
27
 
28
  {% set is_int = scalar == "i32" or scalar == "u32" %}
29
- {% set intAdditive = is_int and (source.op == "sum" or source.op == "l1" or source.op == "sumsquare") %}
 
30
  {% set accType = scalar if source.op == "max" or source.op == "min" or source.op == "prod" or intAdditive else "f32" %}
31
  fn identity() -> {{ accType }} { return {{ accType }}(0); }
32
 
 
26
  const WG: u32 = {{ workgroupSize }}u;
27
 
28
  {% set is_int = scalar == "i32" or scalar == "u32" %}
29
+ {% set intAdditive = is_int and (source.op == "sum" or source.op == "l1" or source.op == "sumsquare"
30
+ or source.op == "l2" or source.op == "mean") %}
31
  {% set accType = scalar if source.op == "max" or source.op == "min" or source.op == "prod" or intAdditive else "f32" %}
32
  fn identity() -> {{ accType }} { return {{ accType }}(0); }
33