Xenova HF Staff commited on
Commit
fded4e3
·
verified ·
1 Parent(s): a07b1ef

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.ReduceL1",
3
- "id": "_ai_onnx_reducel1_webgpu_e87da6b",
4
  "version": 1,
5
  "license": "Apache-2.0",
6
  "backend": { "type": "webgpu" },
@@ -8,7 +8,7 @@
8
  "algorithm": "sha256",
9
  "files": {
10
  "bench.json": "6CdMBdJcJcmqojiYJ7TTOwuZahC+ATAmfBrYMmpg+XA=",
11
- "manifest.json": "a2dG3zMl1zZMzY11NWVVo4PsFNdbWV1sf6c8PosRXRs=",
12
  "reduce-axis-split-reduce.wgsl.jinja": "zmUNWrksxeIyKh7XeGtDpd9vCFPlVAb0TnYaaT8ms1U=",
13
  "reduce-axis0-splitk-combine.wgsl.jinja": "uBBEUUxLWHWFF9sdlIgcdZ3y5SlI46mwaa0qtq4oP6E=",
14
  "reduce-axis0-splitk-reduce.wgsl.jinja": "n4zGB9k4EWYZSOQhzmBb9z44uSZxrevAyPR8to0qh4E=",
@@ -16,11 +16,11 @@
16
  "reduce-flat-partial.wgsl.jinja": "BJmlZP3LPWyimOzMoMUXwiabiWRufbvRhtkUipbT4FQ=",
17
  "reduce-noop-empty-axes.wgsl.jinja": "DQcEtPCo2qVgQJIRTC4r4E9q+HK0Eb/RXXvQsX/KPIE=",
18
  "reduce-row-subgroup.wgsl.jinja": "ep3UMZGxlHvepW9mrW+sXXBNd08lhOCWW+uEgdbDQx0=",
19
- "reduce-row-tree.wgsl.jinja": "LH8uPBr6y/J7ECkKxduQfO0GrdKR4pjd0PAQlMBmnMs=",
20
  "reduce-serial-axis.wgsl.jinja": "fGric1T+h/OXnOAkV5Sfy1Q0McAIEujeFp40NoRB55g=",
21
  "test.json": "WRAMnh9YpOsaleP/oem7Cms6z/yUfq0pL5uFRrZq6XQ="
22
  }
23
  },
24
- "provenance": { "kernel": { "sha": "2e7068faf55e7f43df740015f6d1ee49391a41c5", "dirty": false } },
25
  "webgpu": { "manifestSpec": "1.0", "specialized": true, "opPath": "ops/ai.onnx.ReduceL1" }
26
  }
 
1
  {
2
  "name": "ai.onnx.ReduceL1",
3
+ "id": "_ai_onnx_reducel1_webgpu_e23def9",
4
  "version": 1,
5
  "license": "Apache-2.0",
6
  "backend": { "type": "webgpu" },
 
8
  "algorithm": "sha256",
9
  "files": {
10
  "bench.json": "6CdMBdJcJcmqojiYJ7TTOwuZahC+ATAmfBrYMmpg+XA=",
11
+ "manifest.json": "STzEqMsezR4EsAZ+7DDuAn5r+YkDxcHiC5tjsKpPrHE=",
12
  "reduce-axis-split-reduce.wgsl.jinja": "zmUNWrksxeIyKh7XeGtDpd9vCFPlVAb0TnYaaT8ms1U=",
13
  "reduce-axis0-splitk-combine.wgsl.jinja": "uBBEUUxLWHWFF9sdlIgcdZ3y5SlI46mwaa0qtq4oP6E=",
14
  "reduce-axis0-splitk-reduce.wgsl.jinja": "n4zGB9k4EWYZSOQhzmBb9z44uSZxrevAyPR8to0qh4E=",
 
16
  "reduce-flat-partial.wgsl.jinja": "BJmlZP3LPWyimOzMoMUXwiabiWRufbvRhtkUipbT4FQ=",
17
  "reduce-noop-empty-axes.wgsl.jinja": "DQcEtPCo2qVgQJIRTC4r4E9q+HK0Eb/RXXvQsX/KPIE=",
18
  "reduce-row-subgroup.wgsl.jinja": "ep3UMZGxlHvepW9mrW+sXXBNd08lhOCWW+uEgdbDQx0=",
19
+ "reduce-row-tree.wgsl.jinja": "Jd4qcDiCGbZRItuF7qp1JYuX1XvqQM9+5hO9U+h6qVQ=",
20
  "reduce-serial-axis.wgsl.jinja": "fGric1T+h/OXnOAkV5Sfy1Q0McAIEujeFp40NoRB55g=",
21
  "test.json": "WRAMnh9YpOsaleP/oem7Cms6z/yUfq0pL5uFRrZq6XQ="
22
  }
23
  },
24
+ "provenance": { "kernel": { "sha": "c928d21e6cc1310861cba3bafb75f5f679ecf5f3", "dirty": false } },
25
  "webgpu": { "manifestSpec": "1.0", "specialized": true, "opPath": "ops/ai.onnx.ReduceL1" }
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