@graphty/webgpu-graph-algorithms 0.5.1 → 0.6.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.
- package/README.md +98 -52
- package/dist/browser.js +1 -1
- package/dist/chunks/{context-BR7fx3vR.js → context-BXqgCifx.js} +190 -40
- package/dist/chunks/context-BXqgCifx.js.map +1 -0
- package/dist/node.js +1 -1
- package/dist/src/algorithms/components.d.ts.map +1 -1
- package/dist/src/algorithms/components.js +12 -13
- package/dist/src/algorithms/components.js.map +1 -1
- package/dist/src/algorithms/degree.d.ts +6 -8
- package/dist/src/algorithms/degree.d.ts.map +1 -1
- package/dist/src/algorithms/degree.js +58 -35
- package/dist/src/algorithms/degree.js.map +1 -1
- package/dist/src/algorithms/pagerank.d.ts.map +1 -1
- package/dist/src/algorithms/pagerank.js +16 -14
- package/dist/src/algorithms/pagerank.js.map +1 -1
- package/dist/src/algorithms/power-iteration.d.ts +2 -2
- package/dist/src/algorithms/power-iteration.d.ts.map +1 -1
- package/dist/src/algorithms/power-iteration.js +17 -14
- package/dist/src/algorithms/power-iteration.js.map +1 -1
- package/dist/src/constants.d.ts +38 -8
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +38 -8
- package/dist/src/constants.js.map +1 -1
- package/dist/src/errors.d.ts +3 -2
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +2 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +6 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/kernel/dispatch.d.ts +8 -3
- package/dist/src/kernel/dispatch.d.ts.map +1 -1
- package/dist/src/kernel/dispatch.js +18 -7
- package/dist/src/kernel/dispatch.js.map +1 -1
- package/dist/src/kernel/kernel.d.ts +30 -1
- package/dist/src/kernel/kernel.d.ts.map +1 -1
- package/dist/src/kernel/kernel.js +49 -5
- package/dist/src/kernel/kernel.js.map +1 -1
- package/dist/src/kernel/prelude.d.ts.map +1 -1
- package/dist/src/kernel/prelude.js +6 -1
- package/dist/src/kernel/prelude.js.map +1 -1
- package/dist/src/kernel/profiler.d.ts +15 -3
- package/dist/src/kernel/profiler.d.ts.map +1 -1
- package/dist/src/kernel/profiler.js +27 -4
- package/dist/src/kernel/profiler.js.map +1 -1
- package/dist/src/kernels.d.ts +17 -7
- package/dist/src/kernels.d.ts.map +1 -1
- package/dist/src/kernels.js +323 -16
- package/dist/src/kernels.js.map +1 -1
- package/dist/src/layouts/calibrate.d.ts +51 -0
- package/dist/src/layouts/calibrate.d.ts.map +1 -0
- package/dist/src/layouts/calibrate.js +172 -0
- package/dist/src/layouts/calibrate.js.map +1 -0
- package/dist/src/layouts/force-simulation.d.ts +39 -4
- package/dist/src/layouts/force-simulation.d.ts.map +1 -1
- package/dist/src/layouts/force-simulation.js +71 -19
- package/dist/src/layouts/force-simulation.js.map +1 -1
- package/dist/src/layouts/forceatlas2.d.ts +107 -36
- package/dist/src/layouts/forceatlas2.d.ts.map +1 -1
- package/dist/src/layouts/forceatlas2.js +296 -100
- package/dist/src/layouts/forceatlas2.js.map +1 -1
- package/dist/src/layouts/fruchterman-reingold.d.ts +73 -27
- package/dist/src/layouts/fruchterman-reingold.d.ts.map +1 -1
- package/dist/src/layouts/fruchterman-reingold.js +230 -70
- package/dist/src/layouts/fruchterman-reingold.js.map +1 -1
- package/dist/src/layouts/model-common.d.ts +41 -3
- package/dist/src/layouts/model-common.d.ts.map +1 -1
- package/dist/src/layouts/model-common.js +74 -3
- package/dist/src/layouts/model-common.js.map +1 -1
- package/dist/src/layouts/repulsion-grid.d.ts +152 -0
- package/dist/src/layouts/repulsion-grid.d.ts.map +1 -0
- package/dist/src/layouts/repulsion-grid.js +318 -0
- package/dist/src/layouts/repulsion-grid.js.map +1 -0
- package/dist/src/layouts/spring-electrical.d.ts +75 -30
- package/dist/src/layouts/spring-electrical.d.ts.map +1 -1
- package/dist/src/layouts/spring-electrical.js +231 -74
- package/dist/src/layouts/spring-electrical.js.map +1 -1
- package/dist/src/memory/residency.d.ts +6 -2
- package/dist/src/memory/residency.d.ts.map +1 -1
- package/dist/src/memory/residency.js +84 -14
- package/dist/src/memory/residency.js.map +1 -1
- package/dist/src/primitives/core-shape.d.ts +38 -2
- package/dist/src/primitives/core-shape.d.ts.map +1 -1
- package/dist/src/primitives/core-shape.js +71 -3
- package/dist/src/primitives/core-shape.js.map +1 -1
- package/dist/src/primitives/grid-pyramid.d.ts +71 -0
- package/dist/src/primitives/grid-pyramid.d.ts.map +1 -0
- package/dist/src/primitives/grid-pyramid.js +143 -0
- package/dist/src/primitives/grid-pyramid.js.map +1 -0
- package/dist/src/primitives/grid.d.ts +118 -0
- package/dist/src/primitives/grid.d.ts.map +1 -0
- package/dist/src/primitives/grid.js +225 -0
- package/dist/src/primitives/grid.js.map +1 -0
- package/dist/src/primitives/histogram.d.ts +67 -0
- package/dist/src/primitives/histogram.d.ts.map +1 -0
- package/dist/src/primitives/histogram.js +190 -0
- package/dist/src/primitives/histogram.js.map +1 -0
- package/dist/src/primitives/radix-sort.d.ts +75 -0
- package/dist/src/primitives/radix-sort.d.ts.map +1 -0
- package/dist/src/primitives/radix-sort.js +168 -0
- package/dist/src/primitives/radix-sort.js.map +1 -0
- package/dist/src/primitives/scan.d.ts +44 -0
- package/dist/src/primitives/scan.d.ts.map +1 -0
- package/dist/src/primitives/scan.js +151 -0
- package/dist/src/primitives/scan.js.map +1 -0
- package/dist/src/primitives/segmented-reduce.d.ts +25 -17
- package/dist/src/primitives/segmented-reduce.d.ts.map +1 -1
- package/dist/src/primitives/segmented-reduce.js +166 -47
- package/dist/src/primitives/segmented-reduce.js.map +1 -1
- package/dist/src/primitives/spmv.d.ts +18 -14
- package/dist/src/primitives/spmv.d.ts.map +1 -1
- package/dist/src/primitives/spmv.js +94 -58
- package/dist/src/primitives/spmv.js.map +1 -1
- package/dist/src/primitives/verify.d.ts +49 -0
- package/dist/src/primitives/verify.d.ts.map +1 -0
- package/dist/src/primitives/verify.js +229 -0
- package/dist/src/primitives/verify.js.map +1 -0
- package/dist/src/types/context.d.ts +53 -0
- package/dist/src/types/context.d.ts.map +1 -1
- package/dist/src/types/layout.d.ts +20 -0
- package/dist/src/types/layout.d.ts.map +1 -1
- package/dist/src/wgsl/counting-scatter.wgsl.d.ts +8 -0
- package/dist/src/wgsl/counting-scatter.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/counting-scatter.wgsl.js +17 -0
- package/dist/src/wgsl/counting-scatter.wgsl.js.map +1 -0
- package/dist/src/wgsl/fa2-attraction.wgsl.d.ts +23 -11
- package/dist/src/wgsl/fa2-attraction.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/fa2-attraction.wgsl.js +98 -20
- package/dist/src/wgsl/fa2-attraction.wgsl.js.map +1 -1
- package/dist/src/wgsl/fa2-stats-finalize.wgsl.d.ts +6 -2
- package/dist/src/wgsl/fa2-stats-finalize.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/fa2-stats-finalize.wgsl.js +22 -1
- package/dist/src/wgsl/fa2-stats-finalize.wgsl.js.map +1 -1
- package/dist/src/wgsl/grid-cell-key.wgsl.d.ts +8 -0
- package/dist/src/wgsl/grid-cell-key.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/grid-cell-key.wgsl.js +30 -0
- package/dist/src/wgsl/grid-cell-key.wgsl.js.map +1 -0
- package/dist/src/wgsl/grid-centroid-hub.wgsl.d.ts +8 -0
- package/dist/src/wgsl/grid-centroid-hub.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/grid-centroid-hub.wgsl.js +29 -0
- package/dist/src/wgsl/grid-centroid-hub.wgsl.js.map +1 -0
- package/dist/src/wgsl/grid-centroid.wgsl.d.ts +8 -0
- package/dist/src/wgsl/grid-centroid.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/grid-centroid.wgsl.js +29 -0
- package/dist/src/wgsl/grid-centroid.wgsl.js.map +1 -0
- package/dist/src/wgsl/grid-downsample.wgsl.d.ts +7 -0
- package/dist/src/wgsl/grid-downsample.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/grid-downsample.wgsl.js +28 -0
- package/dist/src/wgsl/grid-downsample.wgsl.js.map +1 -0
- package/dist/src/wgsl/grid-far-field.wgsl.d.ts +13 -0
- package/dist/src/wgsl/grid-far-field.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/grid-far-field.wgsl.js +98 -0
- package/dist/src/wgsl/grid-far-field.wgsl.js.map +1 -0
- package/dist/src/wgsl/grid-near-field.wgsl.d.ts +19 -0
- package/dist/src/wgsl/grid-near-field.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/grid-near-field.wgsl.js +129 -0
- package/dist/src/wgsl/grid-near-field.wgsl.js.map +1 -0
- package/dist/src/wgsl/histogram.wgsl.d.ts +7 -0
- package/dist/src/wgsl/histogram.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/histogram.wgsl.js +15 -0
- package/dist/src/wgsl/histogram.wgsl.js.map +1 -0
- package/dist/src/wgsl/indirect-finalize.wgsl.d.ts +8 -0
- package/dist/src/wgsl/indirect-finalize.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/indirect-finalize.wgsl.js +26 -0
- package/dist/src/wgsl/indirect-finalize.wgsl.js.map +1 -0
- package/dist/src/wgsl/radix-hist.wgsl.d.ts +9 -0
- package/dist/src/wgsl/radix-hist.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/radix-hist.wgsl.js +31 -0
- package/dist/src/wgsl/radix-hist.wgsl.js.map +1 -0
- package/dist/src/wgsl/radix-scatter.wgsl.d.ts +9 -0
- package/dist/src/wgsl/radix-scatter.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/radix-scatter.wgsl.js +40 -0
- package/dist/src/wgsl/radix-scatter.wgsl.js.map +1 -0
- package/dist/src/wgsl/scan-add.wgsl.d.ts +6 -0
- package/dist/src/wgsl/scan-add.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/scan-add.wgsl.js +14 -0
- package/dist/src/wgsl/scan-add.wgsl.js.map +1 -0
- package/dist/src/wgsl/scan-block.wgsl.d.ts +8 -0
- package/dist/src/wgsl/scan-block.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/scan-block.wgsl.js +30 -0
- package/dist/src/wgsl/scan-block.wgsl.js.map +1 -0
- package/dist/src/wgsl/segmented-reduce.wgsl.d.ts +22 -8
- package/dist/src/wgsl/segmented-reduce.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/segmented-reduce.wgsl.js +84 -15
- package/dist/src/wgsl/segmented-reduce.wgsl.js.map +1 -1
- package/dist/src/wgsl/spmv-pull.wgsl.d.ts +22 -11
- package/dist/src/wgsl/spmv-pull.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/spmv-pull.wgsl.js +110 -36
- package/dist/src/wgsl/spmv-pull.wgsl.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/webgpu-graph-algorithms.js +3815 -1003
- package/dist/webgpu-graph-algorithms.js.map +1 -1
- package/package.json +5 -4
- package/src/algorithms/components.ts +12 -16
- package/src/algorithms/degree.ts +58 -43
- package/src/algorithms/pagerank.ts +20 -18
- package/src/algorithms/power-iteration.ts +19 -18
- package/src/constants.ts +38 -8
- package/src/errors.ts +3 -1
- package/src/index.ts +14 -4
- package/src/kernel/dispatch.ts +18 -7
- package/src/kernel/kernel.ts +59 -5
- package/src/kernel/prelude.ts +9 -0
- package/src/kernel/profiler.ts +28 -4
- package/src/kernels.ts +356 -18
- package/src/layouts/calibrate.ts +187 -0
- package/src/layouts/force-simulation.ts +91 -23
- package/src/layouts/forceatlas2.ts +331 -106
- package/src/layouts/fruchterman-reingold.ts +255 -74
- package/src/layouts/model-common.ts +98 -3
- package/src/layouts/repulsion-grid.ts +451 -0
- package/src/layouts/spring-electrical.ts +257 -78
- package/src/memory/residency.ts +126 -20
- package/src/primitives/core-shape.ts +91 -4
- package/src/primitives/grid-pyramid.ts +221 -0
- package/src/primitives/grid.ts +349 -0
- package/src/primitives/histogram.ts +273 -0
- package/src/primitives/radix-sort.ts +246 -0
- package/src/primitives/scan.ts +197 -0
- package/src/primitives/segmented-reduce.ts +214 -56
- package/src/primitives/spmv.ts +125 -65
- package/src/primitives/verify.ts +249 -0
- package/src/types/context.ts +56 -0
- package/src/types/layout.ts +22 -0
- package/src/wgsl/counting-scatter.wgsl.ts +16 -0
- package/src/wgsl/fa2-attraction.wgsl.ts +98 -20
- package/src/wgsl/fa2-stats-finalize.wgsl.ts +22 -1
- package/src/wgsl/grid-cell-key.wgsl.ts +29 -0
- package/src/wgsl/grid-centroid-hub.wgsl.ts +28 -0
- package/src/wgsl/grid-centroid.wgsl.ts +28 -0
- package/src/wgsl/grid-downsample.wgsl.ts +27 -0
- package/src/wgsl/grid-far-field.wgsl.ts +97 -0
- package/src/wgsl/grid-near-field.wgsl.ts +128 -0
- package/src/wgsl/histogram.wgsl.ts +14 -0
- package/src/wgsl/indirect-finalize.wgsl.ts +25 -0
- package/src/wgsl/radix-hist.wgsl.ts +30 -0
- package/src/wgsl/radix-scatter.wgsl.ts +39 -0
- package/src/wgsl/scan-add.wgsl.ts +13 -0
- package/src/wgsl/scan-block.wgsl.ts +29 -0
- package/src/wgsl/segmented-reduce.wgsl.ts +84 -15
- package/src/wgsl/spmv-pull.wgsl.ts +110 -36
- package/dist/chunks/context-BR7fx3vR.js.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Fruchterman-Reingold on the exact repulsion tier (spec 7.20; contract 3.13): the ForceModel that
|
|
3
|
-
* drives -- the K1 K2 K3 K5 sequence per iteration
|
|
4
|
-
*
|
|
2
|
+
* Fruchterman-Reingold on the exact or the grid repulsion tier (spec 7.20, 7.8; contract 3.13): the ForceModel that
|
|
3
|
+
* ForceSimulation drives -- the K1 K2 K3 K5 sequence per iteration on the exact tier (K1 K2 G1..G7 K5 on the grid
|
|
4
|
+
* tier, P4-T13) and toScene per batch (no K4: no speed controller), the constant override set (`LAW` 1 on K2 / K3
|
|
5
|
+
* and on G6 / G7, `APPLY` 1 on K5, `STATS_MODE` 1 on K1, PD-1), the per-iteration Fa2Params values
|
|
5
6
|
* with the cooling schedule's temperature (PD-5), the controller resets and the stats decoder -- plus the option
|
|
6
7
|
* resolver and `createFruchtermanReingold`. The model shares FA2's four kernels, buffers and blocks: `oldForce` is
|
|
7
8
|
* allocated, bound and never read (K5 compiles `SWING_MODE = 1`, PD-2 / PD-20); the mass lane is 1 for every node
|
|
@@ -15,18 +16,33 @@
|
|
|
15
16
|
* the CPU's reheat() does. The temperature is `max(0, 0.1 - dt * (global - tempOrigin))`, dt = 0.1 / (iterations + 1);
|
|
16
17
|
* at 0 nothing moves and the settle window closes the run (DEP-P5-C: the budget restarts at 0, the temperature does
|
|
17
18
|
* not).
|
|
19
|
+
*
|
|
20
|
+
* The grid tier (P4-T13, PD-22) is FA2's: `RepulsionGrid` with `LAW` 1 when `tierFor(tuning, n)` says so (PD-18),
|
|
21
|
+
* the grid buffers from `buffers()`, K1's grid block under `gridMax > 0` (PD-14) over the model's own `hubCounters`,
|
|
22
|
+
* the three passes `fr-k1` / `fr-attraction` / `fr-grid` before `fa2-to-scene` (PD-16), and the union stage list
|
|
23
|
+
* (PD-17: `upTo` stops after the last stage recorded at or before its position; K4 is never recorded).
|
|
18
24
|
*/
|
|
19
25
|
import { FA2_FLAG_ADAPTIVE, FR_ADAPTIVE_MAX_ITERATIONS, FR_DEFAULTS, FR_REHEAT_FRACTION, FR_START_TEMPERATURE, MAX_ITERATIONS_PER_STEP, TRACE_RECORD_BYTES, UNIFORM_SLOT_BYTES, } from "../constants.js";
|
|
20
26
|
import { BufferUsage } from "../device/webgpu-constants.js";
|
|
21
27
|
import { WebGpuGraphError } from "../errors.js";
|
|
22
28
|
import { plan1d } from "../kernel/dispatch.js";
|
|
23
|
-
import { FA2_PARAMS, FA2_STATE, FA2_TRACE, FILL_PARAMS,
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
29
|
+
import { FA2_PARAMS, FA2_STATE, FA2_TRACE, FILL_PARAMS, kernelSpec } from "../kernels.js";
|
|
30
|
+
import { arcCountOf } from "../primitives/core-shape.js";
|
|
31
|
+
import { gridSpecFor } from "../primitives/grid.js";
|
|
32
|
+
import { ForceSimulation, tierFor, } from "./force-simulation.js";
|
|
33
|
+
import { resolveLayoutTuning, writeGridFrame } from "./forceatlas2.js";
|
|
34
|
+
import { bindAttraction, describeValue, FILL_PARAMS_BUFFER, FORCE_BYTES_PER_NODE, invalid, isPositiveInteger, pickCenter, pickDim, pickNumber, pickSeed, recordAttraction, scalar, seedWord, subset, vector, } from "./model-common.js";
|
|
35
|
+
import { RepulsionGrid } from "./repulsion-grid.js";
|
|
27
36
|
// ============================================================ constants
|
|
28
|
-
/** The stage names of
|
|
29
|
-
const FR_STAGES = ["K1", "K2", "K3", "K5", "toScene"];
|
|
37
|
+
/** The stage names of both tiers in dispatch order plus the per-batch toScene (spec 7.20; P4 PD-17: the union list; the exact tier records K1 K2 K3 K5, the grid tier K1 K2 G1..G7 K5, K4 never). */
|
|
38
|
+
const FR_STAGES = ["K1", "K2", "K3", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "K4", "K5", "toScene"];
|
|
39
|
+
/** The FR_STAGES index of the first grid stage, of K4, of K5 and of toScene. */
|
|
40
|
+
const STAGE_G1 = 3;
|
|
41
|
+
const STAGE_K4 = 10;
|
|
42
|
+
const STAGE_K5 = 11;
|
|
43
|
+
const STAGE_TO_SCENE = 12;
|
|
44
|
+
/** The name of the model-owned hub-counter buffer K1 binds on every tier (P4 PD-14). */
|
|
45
|
+
const HUB_COUNTERS_BUFFER = "hubCounters";
|
|
30
46
|
/** The one-workgroup dispatch of K1 (spec 7.4). */
|
|
31
47
|
const ONE_WORKGROUP = { x: 1, y: 1, z: 1, items: 1, stride: null };
|
|
32
48
|
/** The model's override set, constant for every option record (PD-1, PD-20). */
|
|
@@ -41,6 +57,13 @@ const FR_OVERRIDES = Object.freeze({
|
|
|
41
57
|
APPLY: 1,
|
|
42
58
|
STATS_MODE: 1,
|
|
43
59
|
});
|
|
60
|
+
/** The grid stage's override set (G6 / G7 / K4; P4-T13, PD-22): K3's constant three and the FR law. */
|
|
61
|
+
const FR_GRID_OVERRIDES = Object.freeze({
|
|
62
|
+
SWING_MODE: 1,
|
|
63
|
+
STRONG_GRAVITY: false,
|
|
64
|
+
GRAVITY_CENTER: 0,
|
|
65
|
+
LAW: 1,
|
|
66
|
+
});
|
|
44
67
|
/** Every override each kernel accepts, with its default (the names its registry entry declares). */
|
|
45
68
|
const K1_DEFAULTS = { STATS_MODE: 0 };
|
|
46
69
|
const K2_DEFAULTS = {
|
|
@@ -166,7 +189,7 @@ function resolveFixed(s, spec) {
|
|
|
166
189
|
}
|
|
167
190
|
return null;
|
|
168
191
|
}
|
|
169
|
-
/** The Fruchterman-Reingold model (spec 7.20: K1 K2 K3 K5 per iteration; toScene once per batch). Stages:
|
|
192
|
+
/** The Fruchterman-Reingold model (spec 7.20: K1 K2 K3 K5 per iteration on the exact tier, K1 K2 G1..G7 K5 on the grid tier; toScene once per batch). Stages: the union list of PD-17. */
|
|
170
193
|
export class FruchtermanReingoldModel {
|
|
171
194
|
/**
|
|
172
195
|
* Creates the model for one simulation.
|
|
@@ -190,21 +213,26 @@ export class FruchtermanReingoldModel {
|
|
|
190
213
|
this.pendingReheat = false;
|
|
191
214
|
this.resources = null;
|
|
192
215
|
this.bound = null;
|
|
216
|
+
/** The grid of the load inputs() last resolved (null on the exact tier): onLoad() writes its frame, specs() lists its kernels. */
|
|
217
|
+
this.nextGrid = null;
|
|
193
218
|
/** The K1-K5 compute pass of the batch being recorded, keyed by CommandBatch.id (one pass per batch, contract 4.4). */
|
|
194
219
|
this.openPass = null;
|
|
195
220
|
this.tuning = tuning;
|
|
196
221
|
this.current = resolved;
|
|
197
222
|
}
|
|
198
223
|
/**
|
|
199
|
-
* force 12n and oldForce 12n (zeroed; bound and never read, PD-2)
|
|
200
|
-
* fill dispatch reads
|
|
224
|
+
* force 12n and oldForce 12n (zeroed; bound and never read, PD-2), the 256-byte FillParams uniform buffer the
|
|
225
|
+
* fill dispatch reads, the 16-byte `hubCounters` K1 binds on every tier (P4 PD-14), and the grid buffers of
|
|
226
|
+
* `RepulsionGrid.buffers` exactly when `tierFor(tuning, n)` is the grid tier (PD-18). n = 0 reports one node's
|
|
227
|
+
* worth of bytes so no zero-length buffer is ever created.
|
|
201
228
|
* @param n - the node count
|
|
202
|
-
* @param
|
|
203
|
-
* @returns the
|
|
229
|
+
* @param dim - the layout dimension (the force arrays are stride 3 in both; the grid's geometry differs)
|
|
230
|
+
* @returns the model-owned buffer specs
|
|
204
231
|
*/
|
|
205
|
-
buffers(n,
|
|
232
|
+
buffers(n, dim) {
|
|
206
233
|
const bytes = Math.max(1, n) * FORCE_BYTES_PER_NODE;
|
|
207
234
|
const usage = BufferUsage.STORAGE | BufferUsage.COPY_SRC | BufferUsage.COPY_DST;
|
|
235
|
+
const grid = tierFor(this.tuning, n) === "grid" ? RepulsionGrid.buffers(n, gridSpecFor(n, dim, this.tuning)) : [];
|
|
208
236
|
return [
|
|
209
237
|
{ name: "force", byteLength: bytes, usage, zero: true },
|
|
210
238
|
{ name: "oldForce", byteLength: bytes, usage, zero: true },
|
|
@@ -214,23 +242,29 @@ export class FruchtermanReingoldModel {
|
|
|
214
242
|
usage: BufferUsage.UNIFORM | BufferUsage.COPY_DST,
|
|
215
243
|
zero: false,
|
|
216
244
|
},
|
|
245
|
+
{ name: HUB_COUNTERS_BUFFER, byteLength: 16, usage, zero: true },
|
|
246
|
+
...grid,
|
|
217
247
|
];
|
|
218
248
|
}
|
|
219
249
|
/**
|
|
220
250
|
* Mass 1 for every node and no weights (PD-11: FR has no mass and ignores weights), the fixed mask of the
|
|
221
|
-
* `fixed` option applied at load (PD-6).
|
|
222
|
-
*
|
|
251
|
+
* `fixed` option applied at load (PD-6). Also remembers the grid of this load (`tierFor(tuning, n)`, spec 7.8)
|
|
252
|
+
* for onLoad() and specs(): the simulation calls inputs() first, then onLoad() before bind().
|
|
223
253
|
* @param s - the snapshot being loaded
|
|
224
254
|
* @param options - the simulation's current option record
|
|
225
255
|
* @returns the per-load inputs
|
|
226
256
|
*/
|
|
227
257
|
inputs(s, options) {
|
|
228
258
|
const resolved = resolveFruchtermanReingoldOptions(options, this.current);
|
|
229
|
-
|
|
259
|
+
// resolve first: a throwing mask resolution leaves the remembered grid of the previous load intact
|
|
260
|
+
const inputs = {
|
|
230
261
|
mass: new Float32Array(s.nodeCount).fill(1),
|
|
231
262
|
weights: { data: null, source: "none", column: null },
|
|
232
263
|
fixed: resolveFixed(s, resolved.fixed),
|
|
233
264
|
};
|
|
265
|
+
const n = s.nodeCount;
|
|
266
|
+
this.nextGrid = tierFor(this.tuning, n) === "grid" ? gridSpecFor(n, resolved.dim, this.tuning) : null;
|
|
267
|
+
return inputs;
|
|
234
268
|
}
|
|
235
269
|
/**
|
|
236
270
|
* The constant FR override set (PD-1): no option changes a law, so setParams never recompiles.
|
|
@@ -242,12 +276,15 @@ export class FruchtermanReingoldModel {
|
|
|
242
276
|
}
|
|
243
277
|
/**
|
|
244
278
|
* The six module specs of an override set in dispatch order -- K1, K2, K3, K5, toScene, fill -- each with only the
|
|
245
|
-
* override names its entry declares (K2 also USE_PERM / HAS_WEIGHTS), for warm() and the compile matrix
|
|
279
|
+
* override names its entry declares (K2 also USE_PERM / HAS_WEIGHTS), for warm() and the compile matrix,
|
|
280
|
+
* followed by the grid tier's specs (`RepulsionGrid.specs` under FR_GRID_OVERRIDES) when the load inputs() last
|
|
281
|
+
* resolved is a grid load (the pipeline key carries no geometry).
|
|
246
282
|
* @param overrides - the merged override set (the model's plus USE_PERM / HAS_WEIGHTS)
|
|
247
283
|
* @param _subgroups - accepted for the ForceModel interface and unused (the composer picks the twin from caps)
|
|
248
284
|
* @returns the specs
|
|
249
285
|
*/
|
|
250
286
|
specs(overrides, _subgroups) {
|
|
287
|
+
const grid = this.nextGrid === null ? [] : RepulsionGrid.specs(FR_GRID_OVERRIDES, this.nextGrid);
|
|
251
288
|
return [
|
|
252
289
|
kernelSpec("fa2-stats-finalize", subset(overrides, K1_DEFAULTS)),
|
|
253
290
|
kernelSpec("fa2-attraction", subset(overrides, K2_DEFAULTS)),
|
|
@@ -255,43 +292,55 @@ export class FruchtermanReingoldModel {
|
|
|
255
292
|
kernelSpec("fa2-integrate", subset(overrides, K5_DEFAULTS)),
|
|
256
293
|
kernelSpec("fa2-to-scene"),
|
|
257
294
|
kernelSpec("fill"),
|
|
295
|
+
...grid,
|
|
258
296
|
];
|
|
259
297
|
}
|
|
260
298
|
/**
|
|
261
|
-
* Compiles (through the cache) and binds every kernel against the buffers of this load(): K1, K2
|
|
262
|
-
* force when arcCount === 0), K3
|
|
263
|
-
*
|
|
299
|
+
* Compiles (through the cache) and binds every kernel against the buffers of this load(): K1, K2 over the degree
|
|
300
|
+
* tiers through bindAttraction (or the fill of force when arcCount === 0), K3 on the exact tier or G1-G7 through
|
|
301
|
+
* RepulsionGrid on the grid tier (PD-18), K5, toScene; writes the FillParams { count: 3n, value: 0, mode: 0 }
|
|
302
|
+
* into the model's uniform buffer. With n === 0 nothing is bound. The K2 TIER 1 / 2 pipelines compile on the
|
|
303
|
+
* first load whose degrees need them (P4 PD-7).
|
|
264
304
|
* @param resources - the graph, the shared and model buffers, the ring and the cache
|
|
265
305
|
* @param overrides - the merged override set
|
|
266
306
|
*/
|
|
267
307
|
async bind(resources, overrides) {
|
|
268
308
|
this.dropBound();
|
|
269
309
|
this.resources = resources;
|
|
270
|
-
const { n, pipelines, caps, core,
|
|
310
|
+
const { n, pipelines, caps, core, ring, device } = resources;
|
|
271
311
|
if (n === 0) {
|
|
272
312
|
return;
|
|
273
313
|
}
|
|
314
|
+
const pos = resources.buffer("positions");
|
|
315
|
+
const force = resources.buffer("force");
|
|
316
|
+
const params = ring.binding(FA2_PARAMS);
|
|
317
|
+
const hasArcs = core.colIdx !== null;
|
|
274
318
|
// sequential on purpose: PipelineCache.get compiles inside a validation scope, one stack per device
|
|
275
319
|
const k1 = await pipelines.kernel(kernelSpec("fa2-stats-finalize", subset(overrides, K1_DEFAULTS)));
|
|
276
|
-
const
|
|
277
|
-
|
|
320
|
+
const attraction = hasArcs
|
|
321
|
+
? await bindAttraction(resources, subset(overrides, K2_DEFAULTS), { pos, force, params })
|
|
322
|
+
: null;
|
|
323
|
+
const k3 = resources.tier === "grid"
|
|
324
|
+
? null
|
|
325
|
+
: await pipelines.kernel(kernelSpec("fa2-repulsion-exact", subset(overrides, K3_DEFAULTS)));
|
|
278
326
|
const k5 = await pipelines.kernel(kernelSpec("fa2-integrate", subset(overrides, K5_DEFAULTS)));
|
|
279
327
|
const toScene = await pipelines.kernel(kernelSpec("fa2-to-scene"));
|
|
280
328
|
const fill = await pipelines.kernel(kernelSpec("fill"));
|
|
329
|
+
const grid = resources.tier === "grid"
|
|
330
|
+
? await RepulsionGrid.create(resources, k1.workgroupSize, FR_GRID_OVERRIDES, gridSpecFor(n, resources.dim, this.tuning))
|
|
331
|
+
: null;
|
|
281
332
|
if (this.resources !== resources) {
|
|
282
333
|
// a newer bind() superseded this one while the pipelines compiled; its own bind groups stand
|
|
334
|
+
grid?.dispose();
|
|
283
335
|
return;
|
|
284
336
|
}
|
|
285
|
-
const pos = resources.buffer("positions");
|
|
286
337
|
const scene = resources.buffer("scenePositions");
|
|
287
338
|
const fixed = resources.buffer("fixed");
|
|
288
339
|
const partials = resources.buffer("partials");
|
|
289
340
|
const state = resources.buffer("state");
|
|
290
341
|
const trace = resources.buffer("trace");
|
|
291
|
-
const force = resources.buffer("force");
|
|
292
342
|
const oldForce = resources.buffer("oldForce");
|
|
293
343
|
const fillParamsBuffer = resources.buffer(FILL_PARAMS_BUFFER);
|
|
294
|
-
const params = ring.binding(FA2_PARAMS);
|
|
295
344
|
const fillParams = {
|
|
296
345
|
buffer: fillParamsBuffer.buffer,
|
|
297
346
|
offset: fillParamsBuffer.offset,
|
|
@@ -301,20 +350,47 @@ export class FruchtermanReingoldModel {
|
|
|
301
350
|
const fillBytes = new ArrayBuffer(FILL_PARAMS.byteLength);
|
|
302
351
|
FILL_PARAMS.write(new DataView(fillBytes), { count: 3 * n, value: 0, mode: 0 });
|
|
303
352
|
device.queue.writeBuffer(fillParamsBuffer.buffer, fillParamsBuffer.offset, fillBytes);
|
|
304
|
-
const
|
|
353
|
+
const hubCounters = resources.buffer(HUB_COUNTERS_BUFFER);
|
|
354
|
+
grid?.bind({
|
|
355
|
+
pos,
|
|
356
|
+
state,
|
|
357
|
+
trace,
|
|
358
|
+
force,
|
|
359
|
+
oldForce,
|
|
360
|
+
fixedMask: fixed,
|
|
361
|
+
partials,
|
|
362
|
+
params,
|
|
363
|
+
cellKey: resources.buffer("cellKey"),
|
|
364
|
+
cellVal: resources.buffer("cellVal"),
|
|
365
|
+
sortedKey: resources.buffer("sortedKey"),
|
|
366
|
+
sortedIdx: resources.buffer("sortedIdx"),
|
|
367
|
+
cellHist: resources.buffer("cellHist"),
|
|
368
|
+
cellStart: resources.buffer("cellStart"),
|
|
369
|
+
hubList: resources.buffer("hubList"),
|
|
370
|
+
hubCounters,
|
|
371
|
+
hubArgs: resources.buffer("hubArgs"),
|
|
372
|
+
pyramid: resources.buffer("pyramid"),
|
|
373
|
+
});
|
|
305
374
|
const wg = k1.workgroupSize;
|
|
306
375
|
this.bound = {
|
|
307
376
|
n,
|
|
308
377
|
plan: plan1d(n, wg, caps),
|
|
309
378
|
fillPlan: plan1d(3 * n, wg, caps),
|
|
310
379
|
k1,
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
:
|
|
380
|
+
// PD-14: on the exact tier K1's cellHist slot takes a dummy (partials, both read-only) and the block is
|
|
381
|
+
// dead under gridMax 0; hubCounters is the model's 16-byte buffer on every tier
|
|
382
|
+
k1Bound: k1.bind({
|
|
383
|
+
partials,
|
|
384
|
+
S: state,
|
|
385
|
+
T: trace,
|
|
386
|
+
cellHist: grid === null ? partials : resources.buffer("cellHist"),
|
|
387
|
+
hubCounters,
|
|
388
|
+
P: params,
|
|
389
|
+
}),
|
|
390
|
+
attraction,
|
|
316
391
|
k3,
|
|
317
|
-
k3Bound: k3
|
|
392
|
+
k3Bound: k3?.bind({ pos, S: state, force, oldForce, fixedMask: fixed, partials, P: params }) ?? null,
|
|
393
|
+
grid,
|
|
318
394
|
k5,
|
|
319
395
|
k5Bound: k5.bind({ force, oldForce, fixedMask: fixed, S: state, pos, partials, P: params }),
|
|
320
396
|
toScene,
|
|
@@ -334,15 +410,20 @@ export class FruchtermanReingoldModel {
|
|
|
334
410
|
* @returns the uniform values
|
|
335
411
|
*/
|
|
336
412
|
paramsFor(iteration, options) {
|
|
337
|
-
const { n } = this.requireResources();
|
|
413
|
+
const { n, core, tiers, tier, dim } = this.requireResources();
|
|
338
414
|
const resolved = resolveFruchtermanReingoldOptions(options, this.current);
|
|
339
415
|
const { nearMax, extentFactor } = this.tuning;
|
|
340
416
|
const adaptive = resolved.cooling === "adaptive";
|
|
417
|
+
const grid = tier === "grid" ? gridSpecFor(n, dim, this.tuning) : null;
|
|
418
|
+
// P4 PD-7: TIER 2 reads [0, hiEnd), TIER 1 [hiEnd, midEnd), TIER 0 [tierStart, tierEnd) = [midEnd, n)
|
|
419
|
+
const so = tiers?.segmentOffsets;
|
|
420
|
+
const hiEnd = so?.[1] ?? 0;
|
|
421
|
+
const midEnd = so?.[2] ?? 0;
|
|
341
422
|
return {
|
|
342
423
|
n,
|
|
343
424
|
dim: resolved.dim,
|
|
344
425
|
flags: adaptive ? FA2_FLAG_ADAPTIVE : 0,
|
|
345
|
-
tierStart:
|
|
426
|
+
tierStart: midEnd,
|
|
346
427
|
tierEnd: n,
|
|
347
428
|
iterationIndex: iteration,
|
|
348
429
|
seed: seedWord(resolved.seed),
|
|
@@ -354,32 +435,34 @@ export class FruchtermanReingoldModel {
|
|
|
354
435
|
center: [resolved.center[0], resolved.center[1], resolved.center[2], 0],
|
|
355
436
|
settleThreshold: resolved.settleThreshold,
|
|
356
437
|
extentFactor,
|
|
357
|
-
gridMax: 0,
|
|
358
|
-
levels: 0,
|
|
359
|
-
|
|
438
|
+
gridMax: grid?.g ?? 0,
|
|
439
|
+
levels: grid?.levels ?? 0,
|
|
440
|
+
arcBase: 0,
|
|
441
|
+
arcEnd: arcCountOf(core),
|
|
442
|
+
accumulate: 0,
|
|
443
|
+
hiEnd,
|
|
444
|
+
midEnd,
|
|
360
445
|
frK: resolved.k ?? 1 / Math.sqrt(n),
|
|
361
446
|
temperature: adaptive ? FR_START_TEMPERATURE : this.temperatureAt(iteration, resolved),
|
|
362
447
|
};
|
|
363
448
|
}
|
|
364
449
|
/**
|
|
365
|
-
* Records one iteration into the batch
|
|
366
|
-
*
|
|
367
|
-
*
|
|
368
|
-
*
|
|
450
|
+
* Records one iteration into the batch, stopping after stage `upTo` when given (PD-17: `upTo` names a position
|
|
451
|
+
* in the union list and the recording stops after the last stage recorded at or before it, so "K3" on the grid
|
|
452
|
+
* tier stops after K2 and "G5" on the exact tier after K3). The exact tier: K1, K2 (or the fill of force when
|
|
453
|
+
* arcCount === 0), K3, K5 in the batch's ONE compute pass (opened by the first call of a batch and reused by
|
|
454
|
+
* every later call with the same batch.id), then toScene in a second pass that ends it. The grid tier (PD-16):
|
|
455
|
+
* the passes `fr-k1` (K1), `fr-attraction` (K2's tiers) and `fr-grid` (G1-G7, K5) per iteration, then
|
|
456
|
+
* `fa2-to-scene`. With n === 0 nothing is recorded; a call before bind() completed is E_NOT_LOADED (never a
|
|
457
|
+
* silent no-op).
|
|
369
458
|
* @param batch - the batch being recorded
|
|
370
459
|
* @param slot - the UniformRing slot holding this iteration's Fa2Params
|
|
371
|
-
* @param tier -
|
|
460
|
+
* @param tier - the tier the simulation resolved at load() (the same rule bind() applied, PD-18)
|
|
372
461
|
* @param upTo - a stage name to stop after; undefined records every stage including toScene
|
|
373
462
|
*/
|
|
374
463
|
recordIteration(batch, slot, tier, upTo) {
|
|
375
|
-
if (tier === "grid") {
|
|
376
|
-
throw new WebGpuGraphError("E_UNSUPPORTED", "the grid repulsion tier lands in P4", {
|
|
377
|
-
feature: "repulsion.grid",
|
|
378
|
-
hint: 'pass repulsion: "exact"',
|
|
379
|
-
});
|
|
380
|
-
}
|
|
381
464
|
const resources = this.requireResources();
|
|
382
|
-
const stop = upTo === undefined ?
|
|
465
|
+
const stop = upTo === undefined ? STAGE_TO_SCENE : this.stageIndex(upTo);
|
|
383
466
|
const { bound } = this;
|
|
384
467
|
if (bound === null) {
|
|
385
468
|
if (resources.n === 0) {
|
|
@@ -388,36 +471,99 @@ export class FruchtermanReingoldModel {
|
|
|
388
471
|
throw new WebGpuGraphError("E_NOT_LOADED", "the Fruchterman-Reingold model is not bound (bind() has not completed)", { state: "loaded" });
|
|
389
472
|
}
|
|
390
473
|
const offset = resources.ring.offsetOf(slot);
|
|
474
|
+
if (tier === "grid") {
|
|
475
|
+
this.recordGridIteration(batch, bound, offset, stop);
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
const { k3, k3Bound } = bound;
|
|
479
|
+
if (k3 === null || k3Bound === null) {
|
|
480
|
+
throw new WebGpuGraphError("E_NOT_LOADED", "the Fruchterman-Reingold model was bound on the grid tier", {
|
|
481
|
+
state: "loaded",
|
|
482
|
+
});
|
|
483
|
+
}
|
|
391
484
|
const pass = this.openPass !== null && this.openPass.id === batch.id ? this.openPass.pass : batch.pass("fr");
|
|
392
485
|
this.openPass = { id: batch.id, pass };
|
|
393
486
|
bound.k1.dispatch(pass, bound.k1Bound, ONE_WORKGROUP, [offset]);
|
|
394
487
|
if (stop < 1) {
|
|
395
488
|
return;
|
|
396
489
|
}
|
|
397
|
-
|
|
398
|
-
|
|
490
|
+
this.recordK2(pass, bound, offset);
|
|
491
|
+
if (stop < 2) {
|
|
492
|
+
return;
|
|
399
493
|
}
|
|
400
|
-
|
|
401
|
-
|
|
494
|
+
k3.dispatch(pass, k3Bound, bound.plan, [offset]);
|
|
495
|
+
if (stop < STAGE_K5) {
|
|
496
|
+
return;
|
|
402
497
|
}
|
|
403
|
-
|
|
498
|
+
bound.k5.dispatch(pass, bound.k5Bound, bound.plan, [offset]);
|
|
499
|
+
if (stop < STAGE_TO_SCENE) {
|
|
404
500
|
return;
|
|
405
501
|
}
|
|
406
|
-
|
|
407
|
-
|
|
502
|
+
this.recordToScene(batch, bound, offset);
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* The grid tier's iteration (PD-16): three compute passes before toScene; no K4.
|
|
506
|
+
* @param batch - the batch being recorded
|
|
507
|
+
* @param bound - the bound model
|
|
508
|
+
* @param offset - the Fa2Params dynamic offset of the iteration
|
|
509
|
+
* @param stop - the FR_STAGES index to stop after
|
|
510
|
+
*/
|
|
511
|
+
recordGridIteration(batch, bound, offset, stop) {
|
|
512
|
+
const { grid } = bound;
|
|
513
|
+
if (grid === null) {
|
|
514
|
+
throw new WebGpuGraphError("E_NOT_LOADED", "the Fruchterman-Reingold model was bound on the exact tier", {
|
|
515
|
+
state: "loaded",
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
this.openPass = null;
|
|
519
|
+
bound.k1.dispatch(batch.pass("fr-k1"), bound.k1Bound, ONE_WORKGROUP, [offset]);
|
|
520
|
+
if (stop < 1) {
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
this.recordK2(batch.pass("fr-attraction"), bound, offset);
|
|
524
|
+
if (stop < STAGE_G1) {
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
const pass = batch.pass("fr-grid");
|
|
528
|
+
const gridStop = stop < STAGE_K4 ? FR_STAGES[stop] : undefined;
|
|
529
|
+
grid.recordRepulsion(pass, bound.n, offset, gridStop);
|
|
530
|
+
if (stop < STAGE_K5) {
|
|
408
531
|
return;
|
|
409
532
|
}
|
|
410
533
|
bound.k5.dispatch(pass, bound.k5Bound, bound.plan, [offset]);
|
|
411
|
-
if (stop <
|
|
534
|
+
if (stop < STAGE_TO_SCENE) {
|
|
412
535
|
return;
|
|
413
536
|
}
|
|
537
|
+
this.recordToScene(batch, bound, offset);
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* K2's tier dispatches, or the fill of force when the graph has no arcs (spec 7.5).
|
|
541
|
+
* @param pass - the open compute pass
|
|
542
|
+
* @param bound - the bound model
|
|
543
|
+
* @param offset - the Fa2Params dynamic offset
|
|
544
|
+
*/
|
|
545
|
+
recordK2(pass, bound, offset) {
|
|
546
|
+
if (bound.attraction !== null) {
|
|
547
|
+
recordAttraction(pass, bound.attraction, offset);
|
|
548
|
+
}
|
|
549
|
+
else if (bound.fillForceBound !== null) {
|
|
550
|
+
bound.fill.dispatch(pass, bound.fillForceBound, bound.fillPlan, [0]);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* The toScene pass that ends the iteration's pass; the batch is complete after it, so nothing reuses the pass.
|
|
555
|
+
* @param batch - the batch
|
|
556
|
+
* @param bound - the bound model
|
|
557
|
+
* @param offset - the Fa2Params dynamic offset
|
|
558
|
+
*/
|
|
559
|
+
recordToScene(batch, bound, offset) {
|
|
414
560
|
this.openPass = null;
|
|
415
561
|
const scenePass = batch.pass("fa2-to-scene");
|
|
416
562
|
bound.toScene.dispatch(scenePass, bound.toSceneBound, bound.plan, [offset]);
|
|
417
563
|
}
|
|
418
564
|
/**
|
|
419
565
|
* temperature = 0.1 (what stats reads before the first batch lands), kineticEnergy = 0; the temperature index
|
|
420
|
-
* restarts at 0 (PD-5).
|
|
566
|
+
* restarts at 0 (PD-5). On a grid load the frame of the first build (K1 folds nothing on the first iteration).
|
|
421
567
|
* @param state - the state writer of the simulation
|
|
422
568
|
*/
|
|
423
569
|
onLoad(state) {
|
|
@@ -425,6 +571,9 @@ export class FruchtermanReingoldModel {
|
|
|
425
571
|
state.set("kineticEnergy", 0);
|
|
426
572
|
this.tempOrigin = 0;
|
|
427
573
|
this.pendingReheat = false;
|
|
574
|
+
if (this.nextGrid !== null) {
|
|
575
|
+
writeGridFrame(state, this.nextGrid, this.tuning.extentFactor);
|
|
576
|
+
}
|
|
428
577
|
}
|
|
429
578
|
/**
|
|
430
579
|
* temperature = 0.1, the adaptive controller's energy = +infinity (the first fold always counts as a fall) and
|
|
@@ -458,8 +607,9 @@ export class FruchtermanReingoldModel {
|
|
|
458
607
|
this.current = resolveFruchtermanReingoldOptions(patch, this.current);
|
|
459
608
|
}
|
|
460
609
|
/**
|
|
461
|
-
* Decodes the state header and the k trace records of a completed batch into FruchtermanReingoldStats:
|
|
462
|
-
* tier
|
|
610
|
+
* Decodes the state header and the k trace records of a completed batch into FruchtermanReingoldStats:
|
|
611
|
+
* `repulsionTier` is the bound tier, the grid fields are the header's on the grid tier and null on the exact
|
|
612
|
+
* tier, msPerIteration null (the simulation owns the clock), the temperature K1 wrote.
|
|
463
613
|
* @param state - a DataView over the 256-byte state header
|
|
464
614
|
* @param trace - a DataView over the k Fa2Trace records of the batch
|
|
465
615
|
* @returns the stats
|
|
@@ -477,15 +627,16 @@ export class FruchtermanReingoldModel {
|
|
|
477
627
|
settledCount: scalar(record, "settledCount"),
|
|
478
628
|
});
|
|
479
629
|
}
|
|
630
|
+
const grid = this.resources?.tier === "grid";
|
|
480
631
|
return {
|
|
481
632
|
iteration: scalar(header, "iteration"),
|
|
482
633
|
meanDisplacement: scalar(header, "meanDisplacement"),
|
|
483
634
|
rmsRadius: scalar(header, "rmsRadius"),
|
|
484
635
|
layoutRadius: scalar(header, "radius"),
|
|
485
636
|
centroid: [centroid[0], centroid[1], centroid[2]],
|
|
486
|
-
repulsionTier: "exact",
|
|
487
|
-
maxCellOccupancy: null,
|
|
488
|
-
outsideGrid: null,
|
|
637
|
+
repulsionTier: grid ? "grid" : "exact",
|
|
638
|
+
maxCellOccupancy: grid ? scalar(header, "maxCellOccupancy") : null,
|
|
639
|
+
outsideGrid: grid ? scalar(header, "outsideGrid") : null,
|
|
489
640
|
msPerIteration: null,
|
|
490
641
|
temperature: scalar(header, "temperature"),
|
|
491
642
|
trace: records,
|
|
@@ -529,16 +680,25 @@ export class FruchtermanReingoldModel {
|
|
|
529
680
|
}
|
|
530
681
|
throw invalid("upTo", upTo, FR_STAGES.join(" | "));
|
|
531
682
|
}
|
|
532
|
-
/**
|
|
683
|
+
/** Releases the grid stage's lease and the bind groups (the simulation calls it from dispose() once every in-flight batch has settled). */
|
|
684
|
+
dispose() {
|
|
685
|
+
this.dropBound();
|
|
686
|
+
}
|
|
687
|
+
/** Drops the bind groups of the previous bind() (the buffers changed), releases the grid stage's lease and forgets the pass of a batch recorded before the rebind. */
|
|
533
688
|
dropBound() {
|
|
534
689
|
this.openPass = null;
|
|
535
690
|
const { bound } = this;
|
|
536
691
|
if (bound === null) {
|
|
537
692
|
return;
|
|
538
693
|
}
|
|
539
|
-
for (const kernel of [bound.k1, bound.
|
|
694
|
+
for (const kernel of [bound.k1, bound.k5, bound.toScene, bound.fill]) {
|
|
695
|
+
kernel.invalidate();
|
|
696
|
+
}
|
|
697
|
+
bound.k3?.invalidate();
|
|
698
|
+
for (const [kernel] of bound.attraction?.kernels ?? []) {
|
|
540
699
|
kernel.invalidate();
|
|
541
700
|
}
|
|
701
|
+
bound.grid?.dispose();
|
|
542
702
|
this.bound = null;
|
|
543
703
|
}
|
|
544
704
|
}
|
|
@@ -563,8 +723,8 @@ function resolvePatch(patch, current) {
|
|
|
563
723
|
return resolveFruchtermanReingoldOptions(patch, resolveFruchtermanReingoldOptions(current));
|
|
564
724
|
}
|
|
565
725
|
/**
|
|
566
|
-
* Spec 3.3 createFruchtermanReingold, verbatim: a GpuLayoutSimulation running Fruchterman-Reingold on the exact
|
|
567
|
-
* repulsion tier with the option defaults of spec 7.20 and the GPU-only tuning of GpuLayoutTuning.
|
|
726
|
+
* Spec 3.3 createFruchtermanReingold, verbatim: a GpuLayoutSimulation running Fruchterman-Reingold on the exact or
|
|
727
|
+
* the grid repulsion tier (spec 7.8) with the option defaults of spec 7.20 and the GPU-only tuning of GpuLayoutTuning.
|
|
568
728
|
* @param ctx - the context (E_DISPOSED / E_DEVICE_LOST through assertReady)
|
|
569
729
|
* @param options - the Fruchterman-Reingold options and the GPU-only tuning knobs in one record
|
|
570
730
|
* @returns the simulation in state "created"; load() next
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fruchterman-reingold.js","sourceRoot":"","sources":["../../../src/layouts/fruchterman-reingold.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fruchterman-reingold.js","sourceRoot":"","sources":["../../../src/layouts/fruchterman-reingold.ts"],"names":[],"mappings":"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"}
|