@graphty/webgpu-graph-algorithms 0.2.1 → 0.4.0

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 (131) hide show
  1. package/README.md +50 -39
  2. package/dist/browser.js +1 -1
  3. package/dist/chunks/{context-E6iKaeuJ.js → context-CRbw2Wyo.js} +178 -19
  4. package/dist/chunks/{context-E6iKaeuJ.js.map → context-CRbw2Wyo.js.map} +1 -1
  5. package/dist/node.js +1 -1
  6. package/dist/src/accelerator.d.ts +12 -7
  7. package/dist/src/accelerator.d.ts.map +1 -1
  8. package/dist/src/accelerator.js +88 -7
  9. package/dist/src/accelerator.js.map +1 -1
  10. package/dist/src/algorithms/components.d.ts +30 -0
  11. package/dist/src/algorithms/components.d.ts.map +1 -0
  12. package/dist/src/algorithms/components.js +300 -0
  13. package/dist/src/algorithms/components.js.map +1 -0
  14. package/dist/src/algorithms/pagerank.d.ts +39 -0
  15. package/dist/src/algorithms/pagerank.d.ts.map +1 -0
  16. package/dist/src/algorithms/pagerank.js +298 -0
  17. package/dist/src/algorithms/pagerank.js.map +1 -0
  18. package/dist/src/algorithms/power-iteration.d.ts +109 -0
  19. package/dist/src/algorithms/power-iteration.d.ts.map +1 -0
  20. package/dist/src/algorithms/power-iteration.js +206 -0
  21. package/dist/src/algorithms/power-iteration.js.map +1 -0
  22. package/dist/src/algorithms/scope.d.ts +26 -0
  23. package/dist/src/algorithms/scope.d.ts.map +1 -0
  24. package/dist/src/algorithms/scope.js +41 -0
  25. package/dist/src/algorithms/scope.js.map +1 -0
  26. package/dist/src/algorithms/spectral.d.ts +50 -0
  27. package/dist/src/algorithms/spectral.d.ts.map +1 -0
  28. package/dist/src/algorithms/spectral.js +247 -0
  29. package/dist/src/algorithms/spectral.js.map +1 -0
  30. package/dist/src/index.d.ts +4 -0
  31. package/dist/src/index.d.ts.map +1 -1
  32. package/dist/src/index.js +4 -0
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/kernel/dispatch.d.ts +4 -1
  35. package/dist/src/kernel/dispatch.d.ts.map +1 -1
  36. package/dist/src/kernel/dispatch.js +12 -5
  37. package/dist/src/kernel/dispatch.js.map +1 -1
  38. package/dist/src/kernels.d.ts +20 -4
  39. package/dist/src/kernels.d.ts.map +1 -1
  40. package/dist/src/kernels.js +172 -2
  41. package/dist/src/kernels.js.map +1 -1
  42. package/dist/src/layouts/seed.d.ts +3 -1
  43. package/dist/src/layouts/seed.d.ts.map +1 -1
  44. package/dist/src/layouts/seed.js +3 -1
  45. package/dist/src/layouts/seed.js.map +1 -1
  46. package/dist/src/memory/residency.d.ts.map +1 -1
  47. package/dist/src/memory/residency.js +164 -11
  48. package/dist/src/memory/residency.js.map +1 -1
  49. package/dist/src/primitives/core-shape.d.ts +41 -0
  50. package/dist/src/primitives/core-shape.d.ts.map +1 -0
  51. package/dist/src/primitives/core-shape.js +89 -0
  52. package/dist/src/primitives/core-shape.js.map +1 -0
  53. package/dist/src/primitives/segmented-reduce.d.ts.map +1 -1
  54. package/dist/src/primitives/segmented-reduce.js +4 -30
  55. package/dist/src/primitives/segmented-reduce.js.map +1 -1
  56. package/dist/src/primitives/spmv.d.ts +56 -0
  57. package/dist/src/primitives/spmv.d.ts.map +1 -0
  58. package/dist/src/primitives/spmv.js +101 -0
  59. package/dist/src/primitives/spmv.js.map +1 -0
  60. package/dist/src/types/accelerator.d.ts +24 -31
  61. package/dist/src/types/accelerator.d.ts.map +1 -1
  62. package/dist/src/types/accelerator.js +5 -4
  63. package/dist/src/types/accelerator.js.map +1 -1
  64. package/dist/src/types/algorithms.d.ts +74 -0
  65. package/dist/src/types/algorithms.d.ts.map +1 -0
  66. package/dist/src/types/algorithms.js +18 -0
  67. package/dist/src/types/algorithms.js.map +1 -0
  68. package/dist/src/types/layout.d.ts +2 -2
  69. package/dist/src/types/layout.d.ts.map +1 -1
  70. package/dist/src/types/layout.js +1 -1
  71. package/dist/src/types/options.d.ts +8 -49
  72. package/dist/src/types/options.d.ts.map +1 -1
  73. package/dist/src/types/options.js +5 -3
  74. package/dist/src/types/options.js.map +1 -1
  75. package/dist/src/wgsl/pr-finalize.wgsl.d.ts +11 -0
  76. package/dist/src/wgsl/pr-finalize.wgsl.d.ts.map +1 -0
  77. package/dist/src/wgsl/pr-finalize.wgsl.js +36 -0
  78. package/dist/src/wgsl/pr-finalize.wgsl.js.map +1 -0
  79. package/dist/src/wgsl/pr-scale.wgsl.d.ts +14 -0
  80. package/dist/src/wgsl/pr-scale.wgsl.d.ts.map +1 -0
  81. package/dist/src/wgsl/pr-scale.wgsl.js +48 -0
  82. package/dist/src/wgsl/pr-scale.wgsl.js.map +1 -0
  83. package/dist/src/wgsl/spmv-pull.wgsl.d.ts +15 -0
  84. package/dist/src/wgsl/spmv-pull.wgsl.d.ts.map +1 -0
  85. package/dist/src/wgsl/spmv-pull.wgsl.js +47 -0
  86. package/dist/src/wgsl/spmv-pull.wgsl.js.map +1 -0
  87. package/dist/src/wgsl/wcc-compress.wgsl.d.ts +9 -0
  88. package/dist/src/wgsl/wcc-compress.wgsl.d.ts.map +1 -0
  89. package/dist/src/wgsl/wcc-compress.wgsl.js +26 -0
  90. package/dist/src/wgsl/wcc-compress.wgsl.js.map +1 -0
  91. package/dist/src/wgsl/wcc-link-edges.wgsl.d.ts +13 -0
  92. package/dist/src/wgsl/wcc-link-edges.wgsl.d.ts.map +1 -0
  93. package/dist/src/wgsl/wcc-link-edges.wgsl.js +46 -0
  94. package/dist/src/wgsl/wcc-link-edges.wgsl.js.map +1 -0
  95. package/dist/src/wgsl/wcc-link-sample.wgsl.d.ts +11 -0
  96. package/dist/src/wgsl/wcc-link-sample.wgsl.d.ts.map +1 -0
  97. package/dist/src/wgsl/wcc-link-sample.wgsl.js +45 -0
  98. package/dist/src/wgsl/wcc-link-sample.wgsl.js.map +1 -0
  99. package/dist/src/wgsl/wcc-sample.wgsl.d.ts +10 -0
  100. package/dist/src/wgsl/wcc-sample.wgsl.d.ts.map +1 -0
  101. package/dist/src/wgsl/wcc-sample.wgsl.js +18 -0
  102. package/dist/src/wgsl/wcc-sample.wgsl.js.map +1 -0
  103. package/dist/tsconfig.build.tsbuildinfo +1 -1
  104. package/dist/webgpu-graph-algorithms.js +1550 -29
  105. package/dist/webgpu-graph-algorithms.js.map +1 -1
  106. package/package.json +5 -4
  107. package/src/accelerator.ts +104 -8
  108. package/src/algorithms/components.ts +348 -0
  109. package/src/algorithms/pagerank.ts +343 -0
  110. package/src/algorithms/power-iteration.ts +278 -0
  111. package/src/algorithms/scope.ts +52 -0
  112. package/src/algorithms/spectral.ts +300 -0
  113. package/src/index.ts +20 -1
  114. package/src/kernel/dispatch.ts +12 -5
  115. package/src/kernels.ts +206 -5
  116. package/src/layouts/seed.ts +3 -1
  117. package/src/memory/residency.ts +200 -11
  118. package/src/primitives/core-shape.ts +103 -0
  119. package/src/primitives/segmented-reduce.ts +4 -36
  120. package/src/primitives/spmv.ts +155 -0
  121. package/src/types/accelerator.ts +40 -32
  122. package/src/types/algorithms.ts +83 -0
  123. package/src/types/layout.ts +2 -2
  124. package/src/types/options.ts +22 -53
  125. package/src/wgsl/pr-finalize.wgsl.ts +36 -0
  126. package/src/wgsl/pr-scale.wgsl.ts +48 -0
  127. package/src/wgsl/spmv-pull.wgsl.ts +47 -0
  128. package/src/wgsl/wcc-compress.wgsl.ts +26 -0
  129. package/src/wgsl/wcc-link-edges.wgsl.ts +46 -0
  130. package/src/wgsl/wcc-link-sample.wgsl.ts +45 -0
  131. package/src/wgsl/wcc-sample.wgsl.ts +18 -0
@@ -6,7 +6,9 @@
6
6
  * test and PipelineCache.warm() iterate this table. P1-T4 lands degree, reduce, fill, fa2-repulsion-exact (K3)
7
7
  * and fa2-speed-finalize (K4) together with every generated block of contract 3.10.2; P2-T2 lands
8
8
  * segmented-reduce; P3-T2 adds fa2-stats-finalize (K1), fa2-attraction (K2), fa2-integrate (K5) and
9
- * fa2-to-scene. This file is the only importer of src/wgsl/** (spec 3.2; test/layers.test.ts).
9
+ * fa2-to-scene; M8b-T3 adds the seven P7 entries: spmv-pull, pr-scale, pr-finalize, wcc-link-sample,
10
+ * wcc-link-edges, wcc-compress and wcc-sample. This file is the only importer of src/wgsl/** (spec 3.2;
11
+ * test/layers.test.ts).
10
12
  */
11
13
  import { STATE_HEADER_BYTES } from "./constants.js";
12
14
  import { WebGpuGraphError } from "./errors.js";
@@ -19,8 +21,15 @@ import { fa2SpeedFinalizeWgsl } from "./wgsl/fa2-speed-finalize.wgsl.js";
19
21
  import { fa2StatsFinalizeWgsl } from "./wgsl/fa2-stats-finalize.wgsl.js";
20
22
  import { fa2ToSceneWgsl } from "./wgsl/fa2-to-scene.wgsl.js";
21
23
  import { fillWgsl } from "./wgsl/fill.wgsl.js";
24
+ import { prFinalizeWgsl } from "./wgsl/pr-finalize.wgsl.js";
25
+ import { prScaleWgsl } from "./wgsl/pr-scale.wgsl.js";
22
26
  import { reduceWgsl } from "./wgsl/reduce.wgsl.js";
23
27
  import { segmentedReduceWgsl } from "./wgsl/segmented-reduce.wgsl.js";
28
+ import { spmvPullWgsl } from "./wgsl/spmv-pull.wgsl.js";
29
+ import { wccCompressWgsl } from "./wgsl/wcc-compress.wgsl.js";
30
+ import { wccLinkEdgesWgsl } from "./wgsl/wcc-link-edges.wgsl.js";
31
+ import { wccLinkSampleWgsl } from "./wgsl/wcc-link-sample.wgsl.js";
32
+ import { wccSampleWgsl } from "./wgsl/wcc-sample.wgsl.js";
24
33
  // ---- the generated blocks (spec 5.3; contract 3.10.2): field order = byte order, offsets in the JSDoc
25
34
  /** `RangeParams` (uniform, 32 B): rows `[start, end)` @0 / @4 of the dispatch, the bound arc window `[arcBase, arcEnd)` @8 / @12 (0 and arcCount when not windowed), `accumulate` @16 (1 combines into `out[i]` instead of overwriting: the P4 windowed loop), `n` @20 (the node count that bounds neighbour indices), `pad0` @24, `pad1` @28. */
26
35
  export const RANGE_PARAMS = UniformBlock.define("RangeParams", [
@@ -115,6 +124,56 @@ export const FA2_PARTIAL = UniformBlock.define("Fa2Partial", [
115
124
  ["swingTraction", "vec2f"],
116
125
  ["dispFree", "vec2f"],
117
126
  ], { layout: "storage" });
127
+ /** `SpmvParams` (uniform, 32 B; spec 8.2): `n` @0 rows of the pull, the bound arc window `[arcBase, arcEnd)` @4 / @8 (0 and arcCount when not windowed), the grid-stride step `stride` @12, `alpha` @16, `beta` @20 (the `1 - alpha` term), `uniformP` @24 (the uniform personalization mass `1 / n`, 0 for a pure SpMV), `pad0` @28. */
128
+ export const SPMV_PARAMS = UniformBlock.define("SpmvParams", [
129
+ ["n", "u32"],
130
+ ["arcBase", "u32"],
131
+ ["arcEnd", "u32"],
132
+ ["stride", "u32"],
133
+ ["alpha", "f32"],
134
+ ["beta", "f32"],
135
+ ["uniformP", "f32"],
136
+ ["pad0", "u32"],
137
+ ]);
138
+ /** `PrParams` (uniform, 32 B; spec 8.2): `n` @0, `groups` @4 (the per-workgroup partial count the finalize folds), `iteration` @8 (1-based), `trackConvergence` @12 (1 records firstConverged), `convergeThreshold` @16 (`tolerance * n`, the design's `delta < tol * n`), `pad0` @20, `pad1` @24, `pad2` @28. */
139
+ export const PR_PARAMS = UniformBlock.define("PrParams", [
140
+ ["n", "u32"],
141
+ ["groups", "u32"],
142
+ ["iteration", "u32"],
143
+ ["trackConvergence", "u32"],
144
+ ["convergeThreshold", "f32"],
145
+ ["pad0", "u32"],
146
+ ["pad1", "u32"],
147
+ ["pad2", "u32"],
148
+ ]);
149
+ /**
150
+ * `PrPartial` (storage record, 32 B; spec 8.2). Element 0 is the HEADER, whose first 16 bytes are exactly the four
151
+ * fields the design names -- `danglingMass` @0, `delta` @4, `firstConvergedIteration` @8, `iteration` @12 -- plus
152
+ * `norm` @16, which M8b adds so HITS / eigenvector / Katz keep their normaliser on the device (PD-10). Element
153
+ * `1 + g` is workgroup g's partial: it uses `danglingMass`, `delta` and `norm` as three sums and leaves the two u32
154
+ * fields zero.
155
+ */
156
+ export const PR_PARTIAL = UniformBlock.define("PrPartial", [
157
+ ["danglingMass", "f32"],
158
+ ["delta", "f32"],
159
+ ["firstConverged", "u32"],
160
+ ["iteration", "u32"],
161
+ ["norm", "f32"],
162
+ ["pad0", "f32"],
163
+ ["pad1", "f32"],
164
+ ["pad2", "f32"],
165
+ ], { layout: "storage" });
166
+ /** `WccParams` (uniform, 32 B; spec 8.3): `n` @0, `items` @4 (rows for a sample round, edges for an edge round, 1024 for the sampler), `stride` @8, `r` @12 (the neighbour index of the sampled round, and the sampler's seed), `flagIndex` @16 (the changed word inside `comp`, PD-4), `giant` @20 (`U32_MAX` before the sample), `maxSteps` @24, `pad0` @28. */
167
+ export const WCC_PARAMS = UniformBlock.define("WccParams", [
168
+ ["n", "u32"],
169
+ ["items", "u32"],
170
+ ["stride", "u32"],
171
+ ["r", "u32"],
172
+ ["flagIndex", "u32"],
173
+ ["giant", "u32"],
174
+ ["maxSteps", "u32"],
175
+ ["pad0", "u32"],
176
+ ]);
118
177
  // ---- the entries (contract 3.10.1; group 0 = graph, 1 = state, 2 = params, 3 = cold)
119
178
  /**
120
179
  * One binding declaration of contract 3.9, so the tables below read like the rows of 3.10.1.
@@ -304,13 +363,117 @@ const FA2_TO_SCENE = {
304
363
  snippetSlots: [],
305
364
  phase: "P3",
306
365
  };
366
+ /** `spmv-pull` (spec 8.10): the grid-stride pull SpMV over the reverse adjacency; HAS_PERSONALIZATION / USE_DANGLING plus the standard USE_PERM / HAS_WEIGHTS; 8 storage bindings (the design's count). */
367
+ const SPMV_PULL = {
368
+ id: "spmv-pull",
369
+ body: spmvPullWgsl,
370
+ entryPoint: "spmv_pull",
371
+ bindings: GRAPH_SLOTS.concat(decl(1, 0, "xNorm", "storage-ro", "array<f32>"), decl(1, 1, "rankOut", "storage", "array<f32>"), decl(1, 2, "personalization", "storage-ro", "array<f32>"), decl(1, 3, "partials", "storage-ro", "array<PrPartial>"), decl(2, 0, "P", "uniform", "SpmvParams")),
372
+ overrideDecls: [
373
+ { name: "HAS_PERSONALIZATION", type: "bool", default: false },
374
+ { name: "USE_DANGLING", type: "bool", default: false },
375
+ ],
376
+ uniforms: [SPMV_PARAMS, PR_PARTIAL],
377
+ needs: [],
378
+ snippetSlots: [],
379
+ phase: "P7",
380
+ };
381
+ /** `pr-scale` (spec 8.2 dispatch (a), 8.10): the per-node normaliser and the per-workgroup partials; NORM_MODE 0 PageRank / 1 L1 pass / 2 L2 pass / 3 scale / 4 identity; 5 storage bindings; calls the reduction helpers. */
382
+ const PR_SCALE = {
383
+ id: "pr-scale",
384
+ body: prScaleWgsl,
385
+ entryPoint: "pr_scale",
386
+ bindings: [
387
+ decl(1, 0, "rankIn", "storage-ro", "array<f32>"),
388
+ decl(1, 1, "rankPrev", "storage-ro", "array<f32>"),
389
+ decl(1, 2, "outWeightSum", "storage-ro", "array<f32>"),
390
+ decl(1, 3, "xNorm", "storage", "array<f32>"),
391
+ decl(1, 4, "partials", "storage", "array<PrPartial>"),
392
+ decl(2, 0, "P", "uniform", "PrParams"),
393
+ ],
394
+ overrideDecls: [{ name: "NORM_MODE", type: "u32", default: 0 }],
395
+ uniforms: [PR_PARAMS, PR_PARTIAL],
396
+ needs: ["subgroups"],
397
+ snippetSlots: [],
398
+ phase: "P7",
399
+ };
400
+ /** `pr-finalize` (spec 8.2 dispatch (b), 8.10): the one-workgroup fold of the partials into the header at partials[0] and the firstConverged record; NORM_MODE 2 takes the square root; 1 storage binding; calls the reduction helpers. */
401
+ const PR_FINALIZE = {
402
+ id: "pr-finalize",
403
+ body: prFinalizeWgsl,
404
+ entryPoint: "pr_finalize",
405
+ bindings: [decl(1, 0, "partials", "storage", "array<PrPartial>"), decl(2, 0, "P", "uniform", "PrParams")],
406
+ overrideDecls: [{ name: "NORM_MODE", type: "u32", default: 0 }],
407
+ uniforms: [PR_PARAMS, PR_PARTIAL],
408
+ needs: ["subgroups"],
409
+ snippetSlots: [],
410
+ phase: "P7",
411
+ };
412
+ /** `wcc-link-sample` (spec 8.3): Afforest's sampled link round over the CSR rows (every vertex links its r-th neighbour); the standard USE_PERM / HAS_WEIGHTS only; 5 storage bindings (the four graph slots and the atomic `comp`, whose word at P.flagIndex is the changed flag, PD-4). */
413
+ const WCC_LINK_SAMPLE = {
414
+ id: "wcc-link-sample",
415
+ body: wccLinkSampleWgsl,
416
+ entryPoint: "wcc_link_sample",
417
+ bindings: GRAPH_SLOTS.concat(decl(1, 0, "comp", "storage", "array<atomic<u32>>"), decl(2, 0, "P", "uniform", "WccParams")),
418
+ overrideDecls: [],
419
+ uniforms: [WCC_PARAMS],
420
+ needs: [],
421
+ snippetSlots: [],
422
+ phase: "P7",
423
+ };
424
+ /** `wcc-link-edges` (spec 8.3, 8.10): Afforest's each-edge-once link round over the edge list; no overrides; 3 storage bindings (the design's count: edgeSrc, edgeDst and the atomic `comp` carrying the changed flag). */
425
+ const WCC_LINK_EDGES = {
426
+ id: "wcc-link-edges",
427
+ body: wccLinkEdgesWgsl,
428
+ entryPoint: "wcc_link_edges",
429
+ bindings: [
430
+ decl(1, 0, "edgeSrc", "storage-ro", "array<u32>"),
431
+ decl(1, 1, "edgeDst", "storage-ro", "array<u32>"),
432
+ decl(1, 2, "comp", "storage", "array<atomic<u32>>"),
433
+ decl(2, 0, "P", "uniform", "WccParams"),
434
+ ],
435
+ overrideDecls: [],
436
+ uniforms: [WCC_PARAMS],
437
+ needs: [],
438
+ snippetSlots: [],
439
+ phase: "P7",
440
+ };
441
+ /** `wcc-compress` (spec 8.3, 8.10): Afforest's bounded pointer-jumping compress; no overrides; 1 storage binding. */
442
+ const WCC_COMPRESS = {
443
+ id: "wcc-compress",
444
+ body: wccCompressWgsl,
445
+ entryPoint: "wcc_compress",
446
+ bindings: [decl(1, 0, "comp", "storage", "array<atomic<u32>>"), decl(2, 0, "P", "uniform", "WccParams")],
447
+ overrideDecls: [],
448
+ uniforms: [WCC_PARAMS],
449
+ needs: [],
450
+ snippetSlots: [],
451
+ phase: "P7",
452
+ };
453
+ /** `wcc-sample` (spec 8.3, 8.10): the component-label sample of P.items pseudo-random vertices the host takes the mode of (PD-12); no overrides; 2 storage bindings. */
454
+ const WCC_SAMPLE = {
455
+ id: "wcc-sample",
456
+ body: wccSampleWgsl,
457
+ entryPoint: "wcc_sample",
458
+ bindings: [
459
+ decl(1, 0, "comp", "storage", "array<atomic<u32>>"),
460
+ decl(1, 1, "hist", "storage", "array<u32>"),
461
+ decl(2, 0, "P", "uniform", "WccParams"),
462
+ ],
463
+ overrideDecls: [],
464
+ uniforms: [WCC_PARAMS],
465
+ needs: [],
466
+ snippetSlots: [],
467
+ phase: "P7",
468
+ };
307
469
  /**
308
470
  * The entries by id, in dispatch order. PLAN DECISION: `KernelId` is declared in full (contract 3.10) while the
309
471
  * entries landed phase by phase, so the table is built as a Partial record and exported below through the
310
472
  * contract's `Readonly<Record<KernelId, KernelEntry>>` type by one assertion; the runtime membership check of
311
473
  * `entryOf` is the E_INVALID_ARGUMENT the contract documents for a JS caller's unknown id. P1-T4 landed the five
312
474
  * P1 entries, P2-T2 `"segmented-reduce"`, and P3-T2 `"fa2-stats-finalize"`, `"fa2-attraction"`, `"fa2-integrate"`
313
- * and `"fa2-to-scene"`, so every member of `KernelId` is present and the assertion is exact.
475
+ * and `"fa2-to-scene"`; M8b-T3 landed the seven P7 entries, so every member of `KernelId` is present and the
476
+ * assertion is exact.
314
477
  */
315
478
  const REGISTRY = Object.freeze({
316
479
  degree: DEGREE,
@@ -323,6 +486,13 @@ const REGISTRY = Object.freeze({
323
486
  "fa2-speed-finalize": FA2_SPEED_FINALIZE,
324
487
  "fa2-integrate": FA2_INTEGRATE,
325
488
  "fa2-to-scene": FA2_TO_SCENE,
489
+ "spmv-pull": SPMV_PULL,
490
+ "pr-scale": PR_SCALE,
491
+ "pr-finalize": PR_FINALIZE,
492
+ "wcc-link-sample": WCC_LINK_SAMPLE,
493
+ "wcc-link-edges": WCC_LINK_EDGES,
494
+ "wcc-compress": WCC_COMPRESS,
495
+ "wcc-sample": WCC_SAMPLE,
326
496
  });
327
497
  /** THE registry (spec 3.5): every entry, keyed by id. */
328
498
  export const KERNELS = REGISTRY;
@@ -1 +1 @@
1
- {"version":3,"file":"kernels.js","sourceRoot":"","sources":["../../src/kernels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kernels.js","sourceRoot":"","sources":["../../src/kernels.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,9 @@
2
2
  * The CPU port's random number generator, bit for bit, and the NaN-row seeding both paths share (spec 7.2 "Initial
3
3
  * positions", 9.3 seedPositions, 7.14 `pos`, 7.19 topology change): a seed gives the same start on the CPU and the
4
4
  * GPU because both write the same f32 values in index order. The package carries its own copy of the LCG for its
5
- * whole life (D27: it cannot import @graphty/layout); W1 cross-tests it against the real RandomNumberGenerator.
5
+ * whole life (D27: it cannot import @graphty/layout at runtime). The CANONICAL copy is
6
+ * layout/src/simulation/seed.ts; this one is cross-tested against it, bit for bit, by
7
+ * test/layouts/seed-cross.test.ts (W1b, Task M5b-T3).
6
8
  */
7
9
  import type { F32, GraphSnapshot } from "@graphty/graph-format";
8
10
  /** The CPU port's LCG constants (layout/src/utils/random.ts): m = 2^35 - 31, a = 185852, c = 1. */
@@ -1 +1 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/layouts/seed.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAIhE,mGAAmG;AACnG,eAAO,MAAM,KAAK,cAAc,CAAC;AACjC,0CAA0C;AAC1C,eAAO,MAAM,KAAK,SAAS,CAAC;AAC5B,yCAAyC;AACzC,eAAO,MAAM,KAAK,IAAI,CAAC;AAEvB;;;;GAIG;AACH,qBAAa,GAAG;IACZ,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,KAAK,CAAS;IAEtB;;;OAGG;gBACS,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B;;;OAGG;IACH,IAAI,IAAI,MAAM;CAIjB;AA0BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CACzB,CAAC,EAAE,aAAa,EAChB,SAAS,EAAE,GAAG,EACd,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,GAAG,EAAE,CAAC,GAAG,CAAC,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAChC,KAAK,EAAE,KAAK,GAAG,IAAI,GACpB,IAAI,CAgGN"}
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/layouts/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAIhE,mGAAmG;AACnG,eAAO,MAAM,KAAK,cAAc,CAAC;AACjC,0CAA0C;AAC1C,eAAO,MAAM,KAAK,SAAS,CAAC;AAC5B,yCAAyC;AACzC,eAAO,MAAM,KAAK,IAAI,CAAC;AAEvB;;;;GAIG;AACH,qBAAa,GAAG;IACZ,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,KAAK,CAAS;IAEtB;;;OAGG;gBACS,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B;;;OAGG;IACH,IAAI,IAAI,MAAM;CAIjB;AA0BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CACzB,CAAC,EAAE,aAAa,EAChB,SAAS,EAAE,GAAG,EACd,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,GAAG,EAAE,CAAC,GAAG,CAAC,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAChC,KAAK,EAAE,KAAK,GAAG,IAAI,GACpB,IAAI,CAgGN"}
@@ -2,7 +2,9 @@
2
2
  * The CPU port's random number generator, bit for bit, and the NaN-row seeding both paths share (spec 7.2 "Initial
3
3
  * positions", 9.3 seedPositions, 7.14 `pos`, 7.19 topology change): a seed gives the same start on the CPU and the
4
4
  * GPU because both write the same f32 values in index order. The package carries its own copy of the LCG for its
5
- * whole life (D27: it cannot import @graphty/layout); W1 cross-tests it against the real RandomNumberGenerator.
5
+ * whole life (D27: it cannot import @graphty/layout at runtime). The CANONICAL copy is
6
+ * layout/src/simulation/seed.ts; this one is cross-tested against it, bit for bit, by
7
+ * test/layouts/seed-cross.test.ts (W1b, Task M5b-T3).
6
8
  */
7
9
  import { WebGpuGraphError } from "../errors.js";
8
10
  /** The CPU port's LCG constants (layout/src/utils/random.ts): m = 2^35 - 31, a = 185852, c = 1. */
@@ -1 +1 @@
1
- {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../src/layouts/seed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../src/layouts/seed.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"residency.d.ts","sourceRoot":"","sources":["../../../src/memory/residency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAEH,KAAK,MAAM,EAEX,KAAK,cAAc,EACnB,KAAK,aAAa,EAErB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAYlE;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,IAAI,EACT,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,oBAAoB,GAAG,MAAM,CAAC;IAC9G,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACjE;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC5B,EAAE,CAAC;CACP"}
1
+ {"version":3,"file":"residency.d.ts","sourceRoot":"","sources":["../../../src/memory/residency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAEH,KAAK,MAAM,EAEX,KAAK,cAAc,EACnB,KAAK,aAAa,EAErB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAYlE;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,IAAI,EACT,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,oBAAoB,GAAG,MAAM,CAAC;IAC9G,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACjE;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC5B,EAAE,CAAC;CACP"}
@@ -10,6 +10,7 @@
10
10
  * decided from counts and flags, and the arcToEdge / edgeToArc getters are read only when a segment exists. Nothing
11
11
  * is freed by garbage collection; the once-only warning above warnUnreleasedSnapshots names the missing release.
12
12
  */
13
+ import { STORAGE_ALIGN } from "../constants.js";
13
14
  import { BufferUsage } from "../device/webgpu-constants.js";
14
15
  import { WebGpuGraphError } from "../errors.js";
15
16
  import { planUpload } from "./upload-plan.js";
@@ -194,22 +195,38 @@ export class GraphResidency {
194
195
  });
195
196
  }
196
197
  /**
197
- * Uploads (or finds) a view; P1-P3 support outDegree / inDegree / degreeOrder / reverseDegreeOrder; the others
198
- * -> E_UNSUPPORTED until P7. packViews is accepted and ignored until P7 (a `true` request is E_UNSUPPORTED
199
- * { option: "packViews" }, PLAN DECISION 9).
198
+ * Uploads (or finds) a view: outDegree / inDegree / degreeOrder / reverseDegreeOrder upload one array each;
199
+ * reverse and edgeList (P7) upload their arrays perArray, never into the arena, and are memoised per record so
200
+ * a second call uploads nothing (spec 4.3). coo and mate -> E_UNSUPPORTED until P11. packViews concatenates a
201
+ * reverse or edgeList view into ONE buffer at STORAGE_ALIGN offsets; on any other view `true` is E_UNSUPPORTED
202
+ * { option: "packViews" }.
200
203
  * @param s - the snapshot
201
204
  * @param name - the view
202
205
  * @param options - view options
203
- * @param options.packViews - P7's packed reverse upload; `true` is E_UNSUPPORTED until then
206
+ * @param options.packViews - pack the reverse / edgeList arrays into one buffer (a no-op on an undirected reverse)
204
207
  * @returns the view binding
205
208
  */
206
209
  view(s, name, options) {
207
210
  this.assertLive();
208
211
  assertAttached(s);
209
- if (options?.packViews === true) {
210
- throw new WebGpuGraphError("E_UNSUPPORTED", "packViews is not supported before the P7 view uploads", {
212
+ const packed = options?.packViews === true;
213
+ if (name === "reverse" || name === "edgeList") {
214
+ this.assertNotReleased(s);
215
+ this.assertNonEmpty(s);
216
+ const memoKey = packed ? `${name}:packed` : name;
217
+ const record = this.ensureRecord(s);
218
+ const memo = record.views.get(memoKey);
219
+ if (memo !== undefined) {
220
+ return memo;
221
+ }
222
+ const built = name === "reverse" ? this.buildReverse(s, record, packed) : this.buildEdgeList(s, record, packed);
223
+ record.views.set(memoKey, built);
224
+ return built;
225
+ }
226
+ if (packed) {
227
+ throw new WebGpuGraphError("E_UNSUPPORTED", "packViews applies to the reverse and edgeList views only", {
211
228
  option: "packViews",
212
- hint: "omit packViews; the four reverse arrays are uploaded separately",
229
+ hint: `the ${name} view uploads one array`,
213
230
  });
214
231
  }
215
232
  let array;
@@ -246,13 +263,11 @@ export class GraphResidency {
246
263
  scalars = { segmentOffsets: Array.from(order.segmentOffsets) };
247
264
  break;
248
265
  }
249
- case "reverse":
250
266
  case "coo":
251
- case "edgeList":
252
267
  case "mate":
253
- throw new WebGpuGraphError("E_UNSUPPORTED", `the ${name} view is not uploaded before P7`, {
268
+ throw new WebGpuGraphError("E_UNSUPPORTED", `the ${name} view is not uploaded before P11`, {
254
269
  feature: `view:${name}`,
255
- hint: "P1-P3 upload outDegree, inDegree, degreeOrder and reverseDegreeOrder",
270
+ hint: "outDegree, inDegree, degreeOrder, reverseDegreeOrder, reverse and edgeList are uploaded",
256
271
  });
257
272
  default:
258
273
  throw invalid("name", name, "a view name");
@@ -266,6 +281,140 @@ export class GraphResidency {
266
281
  scalars: Object.freeze(scalars),
267
282
  });
268
283
  }
284
+ /**
285
+ * The reverse adjacency's bindings. On an UNDIRECTED snapshot graph-format invariant I7 makes reverse() return
286
+ * the FORWARD arrays, so the core bindings ARE the reverse bindings and nothing is uploaded -- delegating to
287
+ * core() rather than re-uploading the arrays is what makes that true on the arena plan as well, where the
288
+ * per-array WeakMap key resolves to the whole-arena resident (spec 4.3 lines 1182-1186). `fwdArc` is never
289
+ * uploaded (spec 13 row P7). `packed` is ignored when undirected: there is nothing to pack.
290
+ * @param s - the snapshot
291
+ * @param record - its residency record
292
+ * @param packed - concatenate the arrays into one buffer (directed only)
293
+ * @returns the view binding
294
+ */
295
+ buildReverse(s, record, packed) {
296
+ const rev = s.reverse();
297
+ if (!s.directed) {
298
+ const core = this.core(s, ["rowPtr", "colIdx", "weights"]);
299
+ const bindings = { rowPtr: core.rowPtr };
300
+ if (core.colIdx !== null) {
301
+ bindings.colIdx = core.colIdx;
302
+ }
303
+ if (core.weights !== null) {
304
+ bindings.weights = core.weights;
305
+ }
306
+ return Object.freeze({
307
+ view: "reverse",
308
+ bindings: Object.freeze(bindings),
309
+ scalars: Object.freeze({ arcCount: [rev.arcCount], directed: [0] }),
310
+ });
311
+ }
312
+ const arrays = [
313
+ ["rowPtr", rev.rowPtr],
314
+ ["colIdx", rev.colIdx],
315
+ ];
316
+ if (rev.weights !== null) {
317
+ arrays.push(["weights", rev.weights]);
318
+ }
319
+ const bindings = packed
320
+ ? this.packArrays(record, arrays, this.packKey(record, "reverse:packed"), `residency:view:${record.serial}:reverse:packed`)
321
+ : this.separateArrays(record, arrays, `residency:view:${record.serial}:reverse`);
322
+ return Object.freeze({
323
+ view: "reverse",
324
+ bindings,
325
+ scalars: Object.freeze({ arcCount: [rev.arcCount], directed: [1] }),
326
+ });
327
+ }
328
+ /**
329
+ * The each-edge-once binding an edge-parallel kernel uses on directed and undirected snapshots alike (spec 8.1
330
+ * row 2); `arc` is not uploaded (no kernel of P7 reads it).
331
+ * @param s - the snapshot
332
+ * @param record - its residency record
333
+ * @param packed - concatenate into one buffer
334
+ * @returns the view binding
335
+ */
336
+ buildEdgeList(s, record, packed) {
337
+ const list = s.edgeList();
338
+ const arrays = [
339
+ ["src", list.src],
340
+ ["dst", list.dst],
341
+ ];
342
+ if (list.weights !== null) {
343
+ arrays.push(["weights", list.weights]);
344
+ }
345
+ const bindings = packed
346
+ ? this.packArrays(record, arrays, this.packKey(record, "edgeList:packed"), `residency:view:${record.serial}:edgeList:packed`)
347
+ : this.separateArrays(record, arrays, `residency:view:${record.serial}:edgeList`);
348
+ return Object.freeze({
349
+ view: "edgeList",
350
+ bindings,
351
+ scalars: Object.freeze({ edgeCount: [s.edgeCount] }),
352
+ });
353
+ }
354
+ /**
355
+ * One resident per array (spec 4.3: views upload in perArray mode, never into the arena).
356
+ * @param record - the owning record
357
+ * @param arrays - the named arrays
358
+ * @param label - the buffer label prefix
359
+ * @returns the bindings by name
360
+ */
361
+ separateArrays(record, arrays, label) {
362
+ const bindings = {};
363
+ for (const [name, array] of arrays) {
364
+ const resident = this.upload(record, array, array, `${label}:${name}`);
365
+ bindings[name] = { buffer: resident.buffer, offset: 0, size: resident.byteLength, window: null };
366
+ }
367
+ return Object.freeze(bindings);
368
+ }
369
+ /**
370
+ * The arrays concatenated into ONE buffer at STORAGE_ALIGN-aligned offsets (spec 4.3 packViews): one
371
+ * createBuffer and one writeBuffer instead of three of each, which is what the option buys. The resident is
372
+ * keyed on `key`, a marker object owned by the record (packKey), NOT on one of the snapshot's arrays: upload()
373
+ * returns an existing resident whenever the key matches and the serial matches, without comparing byte
374
+ * lengths, so keying the packed buffer on `rev.rowPtr` would make the packed and the unpacked view of one
375
+ * snapshot collide -- whichever was built second would get the other's buffer. The record still owns the
376
+ * resident, so release(s) destroys it with the rest. Offsets are STORAGE_ALIGN-aligned because Kernel.bind
377
+ * rejects any other offset synchronously (E_INVALID_ARGUMENT { argument: "offset" }).
378
+ * @param record - the owning record
379
+ * @param arrays - the named arrays, in buffer order
380
+ * @param key - the marker object the resident is keyed on
381
+ * @param label - the buffer label
382
+ * @returns the bindings by name, all into the one buffer
383
+ */
384
+ packArrays(record, arrays, key, label) {
385
+ const offsets = [];
386
+ let total = 0;
387
+ for (const [, array] of arrays) {
388
+ offsets.push(total);
389
+ total += Math.ceil(array.byteLength / STORAGE_ALIGN) * STORAGE_ALIGN;
390
+ }
391
+ const staging = new Uint8Array(total);
392
+ arrays.forEach(([, array], i) => {
393
+ staging.set(new Uint8Array(array.buffer, array.byteOffset, array.byteLength), offsets[i]);
394
+ });
395
+ const resident = this.upload(record, key, staging, label);
396
+ const bindings = {};
397
+ arrays.forEach(([name, array], i) => {
398
+ bindings[name] = { buffer: resident.buffer, offset: offsets[i], size: array.byteLength, window: null };
399
+ });
400
+ return Object.freeze(bindings);
401
+ }
402
+ /**
403
+ * The upload key of a packed view: a marker object allocated once per record and memo name, never one of the
404
+ * snapshot's arrays.
405
+ * @param record - the owning record
406
+ * @param memoKey - the `views` memo key of this packed view
407
+ * @returns the stable marker object
408
+ */
409
+ packKey(record, memoKey) {
410
+ const existing = record.packKeys.get(memoKey);
411
+ if (existing !== undefined) {
412
+ return existing;
413
+ }
414
+ const created = {};
415
+ record.packKeys.set(memoKey, created);
416
+ return created;
417
+ }
269
418
  /**
270
419
  * gpuView(name) + column.version; re-uploads in place when the version changed and the byte length did not
271
420
  * (spec 4.3). CONTRACT DECISION: `owner` is required so release(owner) can find the buffer (a table has no
@@ -508,6 +657,8 @@ export class GraphResidency {
508
657
  forget(record) {
509
658
  record.released = true;
510
659
  record.bindings.clear();
660
+ record.views.clear();
661
+ record.packKeys.clear();
511
662
  record.arena = null;
512
663
  record.plan = null;
513
664
  this.bySerial.delete(record.serial);
@@ -533,6 +684,8 @@ export class GraphResidency {
533
684
  plan: null,
534
685
  arena: null,
535
686
  bindings: new Map(),
687
+ views: new Map(),
688
+ packKeys: new Map(),
536
689
  released: false,
537
690
  };
538
691
  this.bySerial.set(s.serial, record);