Xenova HF Staff commited on
Commit
9392de2
·
verified ·
1 Parent(s): 9663d5f

sync c928d21e6cc1

Browse files
build/webgpu/binary-broadcast.wgsl.jinja CHANGED
@@ -4,23 +4,14 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups)
4
  // 2D-folded flat index: gid.y carries the high bits when the element count exceeds the
5
  // maxComputeWorkgroupsPerDimension limit (the dispatch caps x and spills the rest into y).
6
  let invocation = gid.x + gid.y * nwg.x * {{ tunables.WORKGROUP_SIZE }}u;
7
- {% if source.itemsPerInvocation is defined %}
8
  // Tail-safe scalar x4 keeps vector-like dispatch density without requiring
9
  // the logical tensor length (or its storage binding) to be vec4 aligned.
10
  let begin = invocation * {{ source.itemsPerInvocation }}u;
11
  let end = min(begin + {{ source.itemsPerInvocation }}u, params.count);
12
  for (var i = begin; i < end; i = i + 1u) {
13
- {%- else %}
14
- let i = invocation;
15
- if (i >= params.count) {
16
- return;
17
- }
18
- {%- endif %}
19
- {% endmacro %}
20
  {% macro flat_tail_close() %}
21
- {% if source.itemsPerInvocation is defined %}
22
  }
23
- {% endif %}
24
  {% endmacro %}
25
 
26
  {% macro offset_fn(fn_name, opShape, opRank, op_same, op_numel, outShape, outRank, out_numel) %}
 
4
  // 2D-folded flat index: gid.y carries the high bits when the element count exceeds the
5
  // maxComputeWorkgroupsPerDimension limit (the dispatch caps x and spills the rest into y).
6
  let invocation = gid.x + gid.y * nwg.x * {{ tunables.WORKGROUP_SIZE }}u;
 
7
  // Tail-safe scalar x4 keeps vector-like dispatch density without requiring
8
  // the logical tensor length (or its storage binding) to be vec4 aligned.
9
  let begin = invocation * {{ source.itemsPerInvocation }}u;
10
  let end = min(begin + {{ source.itemsPerInvocation }}u, params.count);
11
  for (var i = begin; i < end; i = i + 1u) {
12
+ {%- endmacro %}
 
 
 
 
 
 
13
  {% macro flat_tail_close() %}
 
14
  }
 
15
  {% endmacro %}
16
 
17
  {% macro offset_fn(fn_name, opShape, opRank, op_same, op_numel, outShape, outRank, out_numel) %}
build/webgpu/manifest.json CHANGED
@@ -200,7 +200,8 @@
200
  "bRank": "ranks.B",
201
  "cRank": "ranks.C",
202
  "op": "\"add\"",
203
- "cDtype": "tensorDtypes.C"
 
204
  }
205
  },
206
  "bindings": [
@@ -226,7 +227,7 @@
226
  "struct": { "name": "Params", "fields": [{ "name": "count", "type": "u32", "value": "numel(shapes.C)" }] }
227
  }
228
  ],
229
- "dispatch": { "threads": "numel(shapes.C)", "workgroupSize": "tunables.WORKGROUP_SIZE" }
230
  }
231
  ]
232
  }
 
200
  "bRank": "ranks.B",
201
  "cRank": "ranks.C",
202
  "op": "\"add\"",
203
+ "cDtype": "tensorDtypes.C",
204
+ "itemsPerInvocation": 4
205
  }
206
  },
207
  "bindings": [
 
227
  "struct": { "name": "Params", "fields": [{ "name": "count", "type": "u32", "value": "numel(shapes.C)" }] }
228
  }
229
  ],
230
+ "dispatch": { "threads": "ceilDiv(numel(shapes.C), 4)", "workgroupSize": "tunables.WORKGROUP_SIZE" }
231
  }
232
  ]
233
  }
build/webgpu/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "ai.onnx.Add",
3
- "id": "_ai_onnx_add_webgpu_a199e91",
4
  "version": 1,
5
  "license": "Apache-2.0",
6
  "backend": { "type": "webgpu" },
@@ -9,12 +9,12 @@
9
  "files": {
10
  "bench.json": "U0RcZ6cEwHaPzKmWjxkZIosg9WgaFSUCYGWbCefJhGY=",
11
  "binary-broadcast-vec4.wgsl.jinja": "i2NgmeStm8zKVGrhtYRJoRwj1sT9hK7l23JOsnkSPaM=",
12
- "binary-broadcast.wgsl.jinja": "JRtdDC2eKRvRIbOXPZ6/cnt1J6mD2xx/w+aBs5stGH8=",
13
  "binary-vec4.wgsl.jinja": "mnGHNzK6EqW5t1KCp51LQgMM5tG3ufJTHiAGLGNtjqg=",
14
- "manifest.json": "g9eLFcjl3csJ5qlpqOuRrAcpVBzLhRlrbZa2LHEH/tE=",
15
  "test.json": "X1RwOC4YQxALtpaNkTZWgM4UQQqNU7llruve1sWX3uo="
16
  }
17
  },
18
- "provenance": { "kernel": { "sha": "2e7068faf55e7f43df740015f6d1ee49391a41c5", "dirty": false } },
19
  "webgpu": { "manifestSpec": "1.0", "specialized": true, "opPath": "ops/ai.onnx.Add" }
20
  }
 
1
  {
2
  "name": "ai.onnx.Add",
3
+ "id": "_ai_onnx_add_webgpu_c702c37",
4
  "version": 1,
5
  "license": "Apache-2.0",
6
  "backend": { "type": "webgpu" },
 
9
  "files": {
10
  "bench.json": "U0RcZ6cEwHaPzKmWjxkZIosg9WgaFSUCYGWbCefJhGY=",
11
  "binary-broadcast-vec4.wgsl.jinja": "i2NgmeStm8zKVGrhtYRJoRwj1sT9hK7l23JOsnkSPaM=",
12
+ "binary-broadcast.wgsl.jinja": "OARLrDsJW/gFuLicGept3Zg81d2iusgKd+FNBx4NqNU=",
13
  "binary-vec4.wgsl.jinja": "mnGHNzK6EqW5t1KCp51LQgMM5tG3ufJTHiAGLGNtjqg=",
14
+ "manifest.json": "H+A5C9nJwxRWenku9NZ2kRYej0VXZ3x3sFai7RjQ5Io=",
15
  "test.json": "X1RwOC4YQxALtpaNkTZWgM4UQQqNU7llruve1sWX3uo="
16
  }
17
  },
18
+ "provenance": { "kernel": { "sha": "c928d21e6cc1310861cba3bafb75f5f679ecf5f3", "dirty": false } },
19
  "webgpu": { "manifestSpec": "1.0", "specialized": true, "opPath": "ops/ai.onnx.Add" }
20
  }