tensorgrad 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +119 -119
  2. package/dist/buffers.js +1 -6
  3. package/dist/buffers.js.map +1 -1
  4. package/dist/codegen.js +30 -28
  5. package/dist/codegen.js.map +1 -1
  6. package/dist/compile.js +39 -68
  7. package/dist/compile.js.map +1 -1
  8. package/dist/grad.js +1 -14
  9. package/dist/grad.js.map +1 -1
  10. package/dist/index.d.ts +740 -14
  11. package/dist/runtime.js +9 -11
  12. package/dist/runtime.js.map +1 -1
  13. package/dist/trace.js +8 -13
  14. package/dist/trace.js.map +1 -1
  15. package/package.json +67 -61
  16. package/src/buffers.ts +1 -6
  17. package/src/codegen.ts +31 -28
  18. package/src/compile.ts +45 -91
  19. package/src/grad.ts +1 -11
  20. package/src/index.ts +47 -47
  21. package/src/runtime.ts +520 -515
  22. package/src/trace.ts +12 -9
  23. package/dist/adam.d.ts +0 -65
  24. package/dist/adam.d.ts.map +0 -1
  25. package/dist/buffers.d.ts +0 -57
  26. package/dist/buffers.d.ts.map +0 -1
  27. package/dist/capture.d.ts +0 -3
  28. package/dist/capture.d.ts.map +0 -1
  29. package/dist/codegen.d.ts +0 -23
  30. package/dist/codegen.d.ts.map +0 -1
  31. package/dist/compile.d.ts +0 -130
  32. package/dist/compile.d.ts.map +0 -1
  33. package/dist/grad.d.ts +0 -8
  34. package/dist/grad.d.ts.map +0 -1
  35. package/dist/index.d.ts.map +0 -1
  36. package/dist/ir.d.ts +0 -207
  37. package/dist/ir.d.ts.map +0 -1
  38. package/dist/module.d.ts +0 -55
  39. package/dist/module.d.ts.map +0 -1
  40. package/dist/nn.d.ts +0 -42
  41. package/dist/nn.d.ts.map +0 -1
  42. package/dist/ops.d.ts +0 -48
  43. package/dist/ops.d.ts.map +0 -1
  44. package/dist/runtime.d.ts +0 -108
  45. package/dist/runtime.d.ts.map +0 -1
  46. package/dist/shape.d.ts +0 -24
  47. package/dist/shape.d.ts.map +0 -1
  48. package/dist/trace.d.ts +0 -9
  49. package/dist/trace.d.ts.map +0 -1
package/README.md CHANGED
@@ -1,119 +1,119 @@
1
- # tensorgrad
2
-
3
- A tiny TypeScript-native tensor library with autograd that compiles directly
4
- to WebGPU. Designed for training small models in the browser — without
5
- hand-writing WGSL kernels and without dragging in a 5 MB ML framework.
6
-
7
- ```sh
8
- npm i tensorgrad
9
- ```
10
-
11
- Roughly **3000 lines of zero-dependency TypeScript**, ~10 KB gzipped after
12
- build. Targets WebGPU only. Static shapes only. Forward + reverse-mode
13
- autograd; Adam optimizer; the whole training pipeline runs as compiled WGSL.
14
-
15
- ## Quick example
16
-
17
- A 2-layer MLP fitting `y = sin(x)`:
18
-
19
- ```ts
20
- import {
21
- Module, compileModule,
22
- add, mul, sub, sumLast, reshape, matmul, relu,
23
- type Tensor,
24
- } from 'tensorgrad'
25
-
26
- class Linear extends Module {
27
- W: Tensor; b: Tensor
28
- constructor(public inDim: number, public outDim: number) {
29
- super()
30
- this.W = this.param([inDim, outDim]) // randn, scale 0.02
31
- this.b = this.param([outDim], { init: 'zeros' })
32
- }
33
- }
34
-
35
- class MLP extends Module {
36
- l1 = new Linear(1, 64)
37
- l2 = new Linear(64, 64)
38
- l3 = new Linear(64, 1)
39
- }
40
-
41
- const linear = (p: Linear, x: Tensor) => add(matmul(x, p.W), p.b)
42
-
43
- function forward(m: MLP, x: Tensor): Tensor {
44
- return linear(m.l3, relu(linear(m.l2, relu(linear(m.l1, x)))))
45
- }
46
-
47
- function loss(m: MLP, { x, y }: { x: Tensor; y: Tensor }): Tensor {
48
- const diff = sub(forward(m, x), y)
49
- return mul(sumLast(reshape(mul(diff, diff), [B])), 1 / B)
50
- }
51
-
52
- const B = 256
53
- const compiled = await compileModule(() => new MLP(), loss, {
54
- adam: { lr: 0.005 },
55
- inputs: {
56
- x: { shape: [B, 1], dtype: 'f32' },
57
- y: { shape: [B, 1], dtype: 'f32' },
58
- },
59
- })
60
-
61
- // Initial params are uploaded automatically — no manual step needed.
62
-
63
- for (let step = 0; step < 1000; step++) {
64
- const { x, y } = generateBatch()
65
- const lossVal = await compiled.step({ x, y })
66
- if (step % 100 === 0) console.log('step', step, 'loss', lossVal)
67
- }
68
- ```
69
-
70
- That's the whole user-facing surface for this model: `Module` for parameter
71
- storage, plain functions for the forward pass, `compileModule` to JIT-compile
72
- to WGSL with autograd + Adam wired in. No decorators, no `tf.GradientTape`,
73
- no `register_pytree_node`.
74
-
75
- For a more involved example — a 3-layer transformer trained from scratch on
76
- 2-digit addition — see the [`samples/`](./samples) workspace
77
- (`pnpm --filter samples dev`).
78
-
79
- ## What this library is for
80
-
81
- Small browser-side ML where you want to *train* the model, not just run
82
- inference of a pretrained model. Educational artifacts, interactive
83
- demos, on-device personalization, "transformer from scratch in your browser"
84
- blog posts. Roughly the niche where the model is small enough to fit
85
- comfortably in a browser tab but where you still want autograd and a real
86
- optimizer.
87
-
88
- If you want to ship inference of a pretrained model, use
89
- [ONNX Runtime Web](https://github.com/microsoft/onnxruntime) or
90
- [transformers.js](https://github.com/xenova/transformers.js).
91
- If you need full JAX (vmap / pmap / dynamic shapes / multi-backend), use
92
- [jax-js](https://github.com/jax-js/jax).
93
-
94
- ## Scope (deliberately small)
95
-
96
- The library only does what it does because of what it doesn't do. The
97
- load-bearing "out of scope" decisions are:
98
-
99
- - **WebGPU only** — no Wasm or WebGL fallback.
100
- - **Static shapes only** — every shape is fixed at compile time. This is
101
- what lets us bake constants into the WGSL instead of carrying shape
102
- uniforms.
103
- - **`grad` is the only transformation** — no `vmap`, `pmap`, `jvp`,
104
- `custom_vjp`. Batch your data explicitly.
105
- - **`f32` only** — no dtype promotion, no mixed precision.
106
- - **Closed op set** — about 25 ops, listed in `SPEC.md`. Compositions of
107
- those handle most needs (GELU, RMS norm, etc. are a few lines on top).
108
- - **Adam lives in the IR** — bias correction included; no CPU↔GPU
109
- round-trip per step.
110
-
111
- ## Status
112
-
113
- Alpha. Two real working models (a transformer training to <0.1 loss on
114
- addition, an MLP fitting `sin`). API may change before 1.0. Filing issues
115
- welcome.
116
-
117
- ## License
118
-
119
- MIT
1
+ # tensorgrad
2
+
3
+ A tiny TypeScript-native tensor library with autograd that compiles directly
4
+ to WebGPU. Designed for training small models in the browser — without
5
+ hand-writing WGSL kernels and without dragging in a 5 MB ML framework.
6
+
7
+ ```sh
8
+ npm i tensorgrad
9
+ ```
10
+
11
+ Roughly **3000 lines of zero-dependency TypeScript**, ~10 KB gzipped after
12
+ build. Targets WebGPU only. Static shapes only. Forward + reverse-mode
13
+ autograd; Adam optimizer; the whole training pipeline runs as compiled WGSL.
14
+
15
+ ## Quick example
16
+
17
+ A 2-layer MLP fitting `y = sin(x)`:
18
+
19
+ ```ts
20
+ import {
21
+ Module, compileModule,
22
+ add, mul, sub, sumLast, reshape, matmul, relu,
23
+ type Tensor,
24
+ } from 'tensorgrad'
25
+
26
+ class Linear extends Module {
27
+ W: Tensor; b: Tensor
28
+ constructor(public inDim: number, public outDim: number) {
29
+ super()
30
+ this.W = this.param([inDim, outDim]) // randn, scale 0.02
31
+ this.b = this.param([outDim], { init: 'zeros' })
32
+ }
33
+ }
34
+
35
+ class MLP extends Module {
36
+ l1 = new Linear(1, 64)
37
+ l2 = new Linear(64, 64)
38
+ l3 = new Linear(64, 1)
39
+ }
40
+
41
+ const linear = (p: Linear, x: Tensor) => add(matmul(x, p.W), p.b)
42
+
43
+ function forward(m: MLP, x: Tensor): Tensor {
44
+ return linear(m.l3, relu(linear(m.l2, relu(linear(m.l1, x)))))
45
+ }
46
+
47
+ function loss(m: MLP, { x, y }: { x: Tensor; y: Tensor }): Tensor {
48
+ const diff = sub(forward(m, x), y)
49
+ return mul(sumLast(reshape(mul(diff, diff), [B])), 1 / B)
50
+ }
51
+
52
+ const B = 256
53
+ const compiled = await compileModule(() => new MLP(), loss, {
54
+ adam: { lr: 0.005 },
55
+ inputs: {
56
+ x: { shape: [B, 1], dtype: 'f32' },
57
+ y: { shape: [B, 1], dtype: 'f32' },
58
+ },
59
+ })
60
+
61
+ // Initial params are uploaded automatically — no manual step needed.
62
+
63
+ for (let step = 0; step < 1000; step++) {
64
+ const { x, y } = generateBatch()
65
+ const lossVal = await compiled.step({ x, y })
66
+ if (step % 100 === 0) console.log('step', step, 'loss', lossVal)
67
+ }
68
+ ```
69
+
70
+ That's the whole user-facing surface for this model: `Module` for parameter
71
+ storage, plain functions for the forward pass, `compileModule` to JIT-compile
72
+ to WGSL with autograd + Adam wired in. No decorators, no `tf.GradientTape`,
73
+ no `register_pytree_node`.
74
+
75
+ For a more involved example — a 3-layer transformer trained from scratch on
76
+ 2-digit addition — see the [`samples/`](./samples) workspace
77
+ (`pnpm --filter samples dev`).
78
+
79
+ ## What this library is for
80
+
81
+ Small browser-side ML where you want to *train* the model, not just run
82
+ inference of a pretrained model. Educational artifacts, interactive
83
+ demos, on-device personalization, "transformer from scratch in your browser"
84
+ blog posts. Roughly the niche where the model is small enough to fit
85
+ comfortably in a browser tab but where you still want autograd and a real
86
+ optimizer.
87
+
88
+ If you want to ship inference of a pretrained model, use
89
+ [ONNX Runtime Web](https://github.com/microsoft/onnxruntime) or
90
+ [transformers.js](https://github.com/xenova/transformers.js).
91
+ If you need full JAX (vmap / pmap / dynamic shapes / multi-backend), use
92
+ [jax-js](https://github.com/jax-js/jax).
93
+
94
+ ## Scope (deliberately small)
95
+
96
+ The library only does what it does because of what it doesn't do. The
97
+ load-bearing "out of scope" decisions are:
98
+
99
+ - **WebGPU only** — no Wasm or WebGL fallback.
100
+ - **Static shapes only** — every shape is fixed at compile time. This is
101
+ what lets us bake constants into the WGSL instead of carrying shape
102
+ uniforms.
103
+ - **`grad` is the only transformation** — no `vmap`, `pmap`, `jvp`,
104
+ `custom_vjp`. Batch your data explicitly.
105
+ - **`f32` only** — no dtype promotion, no mixed precision.
106
+ - **Closed op set** — about 25 ops, listed in `SPEC.md`. Compositions of
107
+ those handle most needs (GELU, RMS norm, etc. are a few lines on top).
108
+ - **Adam lives in the IR** — bias correction included; no CPU↔GPU
109
+ round-trip per step.
110
+
111
+ ## Status
112
+
113
+ Alpha. Two real working models (a transformer training to <0.1 loss on
114
+ addition, an MLP fitting `sin`). API may change before 1.0. Filing issues
115
+ welcome.
116
+
117
+ ## License
118
+
119
+ MIT
package/dist/buffers.js CHANGED
@@ -11,13 +11,8 @@
11
11
  // * tensor_input — uploaded each step (tokens, targets, masks)
12
12
  // * intermediate — produced by an op; lifetime = within a single step
13
13
  // * output — special intermediate that should be made readable (loss)
14
+ import { shapeSize } from './shape.js';
14
15
  const dtypeBytes = { f32: 4, i32: 4, bool: 4 };
15
- function shapeSize(shape) {
16
- let n = 1;
17
- for (const d of shape)
18
- n *= d;
19
- return n;
20
- }
21
16
  /**
22
17
  * Build a BufferPlan from a graph + the param-grad map produced by appendGrad.
23
18
  * @param graph the full graph (forward + backward + any optimizer ops)
@@ -1 +1 @@
1
- {"version":3,"file":"buffers.js","sourceRoot":"","sources":["../src/buffers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buffers.js","sourceRoot":"","sources":["../src/buffers.ts"],"names":[],"mappings":"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"}
package/dist/codegen.js CHANGED
@@ -9,10 +9,18 @@
9
9
  // Most kernels are direct ports of `transformer-gpu.bulb.md`'s WGSL — those
10
10
  // are already debugged and tuned. The autograd ops (broadcast_to, sum_to_shape,
11
11
  // relu_grad, etc.) are new.
12
+ import { shapeSize } from './shape.js';
12
13
  // Workgroup size of 256 means even our biggest kernel (~8M threads in
13
14
  // matmul_bwd_dW) needs only ~32K workgroups, well under WebGPU's 65535-per-dim
14
15
  // dispatch cap. Smaller WG_SIZE forced 2D dispatch with significant over-dispatch.
15
16
  const WG_SIZE = 256;
17
+ // Global thread index, packed across the 2D dispatch grid that lets us route
18
+ // past WebGPU's 65535-per-dim cap. Every kernel uses this exact line — keep
19
+ // the formula consistent with the dispatch-stride math in runtime.ts (MAX_X
20
+ // = 65535, so per-row stride = 65535 * WG_SIZE = 16776960). Inlined into
21
+ // each WGSL string via interpolation rather than a function so the WGSL
22
+ // compiler still sees a literal constant.
23
+ const GID_LINE = 'let i = gid.x + gid.y * 16776960u;';
16
24
  // ============================================================================
17
25
  // Public entry point
18
26
  // ============================================================================
@@ -26,12 +34,6 @@ export function emitKernels(graph, plan) {
26
34
  }
27
35
  return out;
28
36
  }
29
- function shapeSize(shape) {
30
- let n = 1;
31
- for (const d of shape)
32
- n *= d;
33
- return n;
34
- }
35
37
  function emitKernel(op, graph, plan, opIndex) {
36
38
  const tof = (id) => graph.tensors[id];
37
39
  const buf = (tensorId) => plan.tensorToBuffer.get(tensorId);
@@ -49,7 +51,7 @@ function emitKernel(op, graph, plan, opIndex) {
49
51
  @group(0) @binding(0) var<storage, read_write> buf : array<${wgslDtype(out.dtype)}>;
50
52
  @compute @workgroup_size(${WG_SIZE})
51
53
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
52
- let i = gid.x + gid.y * 16776960u;
54
+ ${GID_LINE}
53
55
  if (i >= ${op.n}u) { return; }
54
56
  buf[i] = ${castFromI32('i32(i)', out.dtype)};
55
57
  }`.trim();
@@ -80,7 +82,7 @@ fn main() {
80
82
  @group(0) @binding(2) var<storage, read_write> out : array<${wgslDtype(out.dtype)}>;
81
83
  @compute @workgroup_size(${WG_SIZE})
82
84
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
83
- let i = gid.x + gid.y * 16776960u;
85
+ ${GID_LINE}
84
86
  if (i >= ${total}u) { return; }
85
87
  ${broadcastIndexBlock('i', out.shape, a.shape, 'aIdx')}
86
88
  ${broadcastIndexBlock('i', out.shape, b.shape, 'bIdx')}
@@ -101,7 +103,7 @@ ${broadcastIndexBlock('i', out.shape, b.shape, 'bIdx')}
101
103
  @group(0) @binding(1) var<storage, read_write> out : array<${wgslDtype(out.dtype)}>;
102
104
  @compute @workgroup_size(${WG_SIZE})
103
105
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
104
- let i = gid.x + gid.y * 16776960u;
106
+ ${GID_LINE}
105
107
  if (i >= ${total}u) { return; }
106
108
  out[i] = a[i] ${opStr} ${lit};
107
109
  }`.trim();
@@ -126,7 +128,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
126
128
  @group(0) @binding(1) var<storage, read_write> out : array<${wgslDtype(out.dtype)}>;
127
129
  @compute @workgroup_size(${WG_SIZE})
128
130
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
129
- let i = gid.x + gid.y * 16776960u;
131
+ ${GID_LINE}
130
132
  if (i >= ${total}u) { return; }
131
133
  let x = a[i];
132
134
  out[i] = ${expr};
@@ -148,7 +150,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
148
150
  @group(0) @binding(2) var<storage, read_write> out : array<u32>;
149
151
  @compute @workgroup_size(${WG_SIZE})
150
152
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
151
- let i = gid.x + gid.y * 16776960u;
153
+ ${GID_LINE}
152
154
  if (i >= ${total}u) { return; }
153
155
  ${broadcastIndexBlock('i', out.shape, a.shape, 'aIdx')}
154
156
  ${broadcastIndexBlock('i', out.shape, b.shape, 'bIdx')}
@@ -169,7 +171,7 @@ ${broadcastIndexBlock('i', out.shape, b.shape, 'bIdx')}
169
171
  @group(0) @binding(3) var<storage, read_write> out : array<${wgslDtype(out.dtype)}>;
170
172
  @compute @workgroup_size(${WG_SIZE})
171
173
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
172
- let i = gid.x + gid.y * 16776960u;
174
+ ${GID_LINE}
173
175
  if (i >= ${total}u) { return; }
174
176
  ${broadcastIndexBlock('i', out.shape, cond.shape, 'cIdx')}
175
177
  ${broadcastIndexBlock('i', out.shape, a.shape, 'aIdx')}
@@ -187,7 +189,7 @@ ${broadcastIndexBlock('i', out.shape, b.shape, 'bIdx')}
187
189
  @group(0) @binding(2) var<storage, read_write> out : array<f32>;
188
190
  @compute @workgroup_size(${WG_SIZE})
189
191
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
190
- let i = gid.x + gid.y * 16776960u;
192
+ ${GID_LINE}
191
193
  if (i >= ${total}u) { return; }
192
194
  out[i] = select(0.0, dy[i], x[i] > 0.0);
193
195
  }`.trim();
@@ -205,7 +207,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
205
207
  @group(0) @binding(1) var<storage, read_write> out : array<f32>;
206
208
  @compute @workgroup_size(${WG_SIZE})
207
209
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
208
- let i = gid.x + gid.y * 16776960u;
210
+ ${GID_LINE}
209
211
  if (i >= ${outerSize}u) { return; }
210
212
  let base = i * ${D}u;
211
213
  var s : f32 = 0.0;
@@ -229,7 +231,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
229
231
  @group(0) @binding(1) var<storage, read_write> out : array<${wgslDtype(out.dtype)}>;
230
232
  @compute @workgroup_size(${WG_SIZE})
231
233
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
232
- let i = gid.x + gid.y * 16776960u;
234
+ ${GID_LINE}
233
235
  if (i >= ${total}u) { return; }
234
236
  out[i] = a[i];
235
237
  }`.trim();
@@ -254,7 +256,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
254
256
  @group(0) @binding(1) var<storage, read_write> out : array<${wgslDtype(out.dtype)}>;
255
257
  @compute @workgroup_size(${WG_SIZE})
256
258
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
257
- let i = gid.x + gid.y * 16776960u;
259
+ ${GID_LINE}
258
260
  if (i >= ${total}u) { return; }
259
261
  ${outDimDecls}
260
262
  let srcIdx = ${srcExpr.join(' + ')};
@@ -279,7 +281,7 @@ ${outDimDecls}
279
281
  @group(0) @binding(2) var<storage, read_write> c : array<f32>;
280
282
  @compute @workgroup_size(${WG_SIZE})
281
283
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
282
- let i = gid.x + gid.y * 16776960u;
284
+ ${GID_LINE}
283
285
  if (i >= ${total}u) { return; }
284
286
  let bi = i / ${M * N}u; // batch index
285
287
  let mn = i % ${M * N}u;
@@ -309,7 +311,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
309
311
  @group(0) @binding(2) var<storage, read_write> c : array<f32>;
310
312
  @compute @workgroup_size(${WG_SIZE})
311
313
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
312
- let i = gid.x + gid.y * 16776960u;
314
+ ${GID_LINE}
313
315
  if (i >= ${total}u) { return; }
314
316
  let bi = i / ${M * N}u;
315
317
  let mn = i % ${M * N}u;
@@ -338,7 +340,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
338
340
  @group(0) @binding(1) var<storage, read_write> out : array<${wgslDtype(out.dtype)}>;
339
341
  @compute @workgroup_size(${WG_SIZE})
340
342
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
341
- let i = gid.x + gid.y * 16776960u;
343
+ ${GID_LINE}
342
344
  if (i >= ${total}u) { return; }
343
345
  let outerIdx = i / ${depth}u;
344
346
  let depthIdx = i % ${depth}u;
@@ -357,7 +359,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
357
359
  @group(0) @binding(1) var<storage, read_write> out : array<f32>;
358
360
  @compute @workgroup_size(${WG_SIZE})
359
361
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
360
- let i = gid.x + gid.y * 16776960u;
362
+ ${GID_LINE}
361
363
  if (i >= ${outerSize}u) { return; }
362
364
  let base = i * ${D}u;
363
365
  var m : f32 = -1.0e30;
@@ -387,7 +389,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
387
389
  @compute @workgroup_size(${WG_SIZE})
388
390
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
389
391
  // Each thread handles one (..., qpos)-row, softmaxing over kpos∈[0..qpos].
390
- let i = gid.x + gid.y * 16776960u;
392
+ ${GID_LINE}
391
393
  if (i >= ${outerSize}u) { return; }
392
394
  let qpos = i % ${T}u;
393
395
  let base = i * ${T}u;
@@ -421,7 +423,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
421
423
  @group(0) @binding(1) var<storage, read_write> out : array<f32>;
422
424
  @compute @workgroup_size(${WG_SIZE})
423
425
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
424
- let i = gid.x + gid.y * 16776960u;
426
+ ${GID_LINE}
425
427
  if (i >= ${total}u) { return; }
426
428
  let kpos = i % ${T}u;
427
429
  let qpos = (i / ${T}u) % ${T}u;
@@ -445,7 +447,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
445
447
  @group(0) @binding(1) var<storage, read_write> out : array<${wgslDtype(out.dtype)}>;
446
448
  @compute @workgroup_size(${WG_SIZE})
447
449
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
448
- let i = gid.x + gid.y * 16776960u;
450
+ ${GID_LINE}
449
451
  if (i >= ${total}u) { return; }
450
452
  let outer = i / ${D_out}u;
451
453
  let inner = i % ${D_out}u;
@@ -463,7 +465,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
463
465
  @group(0) @binding(1) var<storage, read_write> out : array<${wgslDtype(out.dtype)}>;
464
466
  @compute @workgroup_size(${WG_SIZE})
465
467
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
466
- let i = gid.x + gid.y * 16776960u;
468
+ ${GID_LINE}
467
469
  if (i >= ${total}u) { return; }
468
470
  ${broadcastIndexBlock('i', out.shape, a.shape, 'srcIdx')}
469
471
  out[i] = a[srcIdx];
@@ -483,7 +485,7 @@ ${broadcastIndexBlock('i', out.shape, a.shape, 'srcIdx')}
483
485
  @group(0) @binding(2) var<storage, read_write> out : array<f32>;
484
486
  @compute @workgroup_size(${WG_SIZE})
485
487
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
486
- let i = gid.x + gid.y * 16776960u;
488
+ ${GID_LINE}
487
489
  if (i >= ${total}u) { return; }
488
490
  out[i] = ${wgslLiteral(b1, 'f32')} * m[i] + ${wgslLiteral(oneMinusB1, 'f32')} * g[i];
489
491
  }`.trim();
@@ -501,7 +503,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
501
503
  @group(0) @binding(2) var<storage, read_write> out : array<f32>;
502
504
  @compute @workgroup_size(${WG_SIZE})
503
505
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
504
- let i = gid.x + gid.y * 16776960u;
506
+ ${GID_LINE}
505
507
  if (i >= ${total}u) { return; }
506
508
  let gv = g[i];
507
509
  out[i] = ${wgslLiteral(b2, 'f32')} * v[i] + ${wgslLiteral(oneMinusB2, 'f32')} * gv * gv;
@@ -531,7 +533,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
531
533
  ${shrinkBinding}
532
534
  @compute @workgroup_size(${WG_SIZE})
533
535
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
534
- let i = gid.x + gid.y * 16776960u;
536
+ ${GID_LINE}
535
537
  if (i >= ${total}u) { return; }
536
538
  out[i] = ${shrinkExpr} * p[i] - lrt[0] * mNew[i] / (sqrt(vNew[i]) + ${wgslLiteral(op.eps, 'f32')});
537
539
  }`.trim();
@@ -711,7 +713,7 @@ function emitSumToShape(srcShape, tgtShape, dtype) {
711
713
  @group(0) @binding(1) var<storage, read_write> out : array<${wgslDtype(dtype)}>;
712
714
  @compute @workgroup_size(${WG_SIZE})
713
715
  fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
714
- let i = gid.x + gid.y * 16776960u;
716
+ ${GID_LINE}
715
717
  if (i >= ${total}u) { return; }
716
718
  ${decompose}
717
719
  var s : ${wgslDtype(dtype)} = ${dtype === 'f32' ? '0.0f' : (dtype === 'i32' ? '0i' : '0u')};
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}