@graphty/webgpu-graph-algorithms 0.6.24 → 0.6.26
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/LICENSE +1 -1
- package/dist/browser.js +1 -1
- package/dist/chunks/{context-B40Z6lV_.js → context-BZY6SMsM.js} +41 -35
- package/dist/chunks/context-BZY6SMsM.js.map +1 -0
- package/dist/node.js +1 -1
- package/dist/src/algorithms/betweenness.d.ts +24 -9
- package/dist/src/algorithms/betweenness.d.ts.map +1 -1
- package/dist/src/algorithms/betweenness.js +105 -39
- package/dist/src/algorithms/betweenness.js.map +1 -1
- package/dist/src/constants.d.ts +11 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +11 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/kernel/prelude.d.ts.map +1 -1
- package/dist/src/kernel/prelude.js +4 -1
- package/dist/src/kernel/prelude.js.map +1 -1
- package/dist/src/kernels.d.ts +4 -4
- package/dist/src/kernels.d.ts.map +1 -1
- package/dist/src/kernels.js +43 -13
- package/dist/src/kernels.js.map +1 -1
- package/dist/src/layouts/seed.d.ts +3 -1
- package/dist/src/layouts/seed.d.ts.map +1 -1
- package/dist/src/layouts/seed.js +10 -1
- package/dist/src/layouts/seed.js.map +1 -1
- package/dist/src/types/betweenness.d.ts +5 -2
- package/dist/src/types/betweenness.d.ts.map +1 -1
- package/dist/src/wgsl/bc-backward.wgsl.d.ts +5 -2
- package/dist/src/wgsl/bc-backward.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/bc-backward.wgsl.js +12 -3
- package/dist/src/wgsl/bc-backward.wgsl.js.map +1 -1
- package/dist/src/wgsl/bc-count.wgsl.d.ts +22 -0
- package/dist/src/wgsl/bc-count.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/bc-count.wgsl.js +46 -0
- package/dist/src/wgsl/bc-count.wgsl.js.map +1 -0
- package/dist/src/wgsl/bc-edge-gather.wgsl.d.ts +3 -2
- package/dist/src/wgsl/bc-edge-gather.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/bc-edge-gather.wgsl.js +10 -2
- package/dist/src/wgsl/bc-edge-gather.wgsl.js.map +1 -1
- package/dist/src/wgsl/bc-finalize.wgsl.d.ts +4 -3
- package/dist/src/wgsl/bc-finalize.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/bc-finalize.wgsl.js +5 -3
- package/dist/src/wgsl/bc-finalize.wgsl.js.map +1 -1
- package/dist/src/wgsl/bc-forward-edge.wgsl.d.ts +2 -2
- package/dist/src/wgsl/bc-forward-edge.wgsl.js +2 -2
- package/dist/src/wgsl/bc-forward.wgsl.d.ts +4 -2
- package/dist/src/wgsl/bc-forward.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/bc-forward.wgsl.js +4 -2
- package/dist/src/wgsl/bc-forward.wgsl.js.map +1 -1
- package/dist/webgpu-graph-algorithms.js +176 -47
- package/dist/webgpu-graph-algorithms.js.map +1 -1
- package/package.json +3 -3
- package/src/algorithms/betweenness.ts +155 -48
- package/src/constants.ts +11 -0
- package/src/kernel/prelude.ts +4 -0
- package/src/kernels.ts +45 -13
- package/src/layouts/seed.ts +10 -1
- package/src/types/betweenness.ts +5 -2
- package/src/wgsl/bc-backward.wgsl.ts +12 -3
- package/src/wgsl/bc-count.wgsl.ts +45 -0
- package/src/wgsl/bc-edge-gather.wgsl.ts +10 -2
- package/src/wgsl/bc-finalize.wgsl.ts +5 -3
- package/src/wgsl/bc-forward-edge.wgsl.ts +2 -2
- package/src/wgsl/bc-forward.wgsl.ts +4 -2
- package/dist/chunks/context-B40Z6lV_.js.map +0 -1
package/dist/node.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { W as WebGpuGraphError, G as GpuContext } from "./chunks/context-
|
|
1
|
+
import { W as WebGpuGraphError, G as GpuContext } from "./chunks/context-BZY6SMsM.js";
|
|
2
2
|
const INSTALL_HINT = "install the optional peer dependency webgpu@0.4.0";
|
|
3
3
|
const instances = /* @__PURE__ */ new Map();
|
|
4
4
|
function isDawnModule(loaded) {
|
|
@@ -2,18 +2,31 @@
|
|
|
2
2
|
* Betweenness and edge betweenness on the device (design 8.4 "Betweenness (A7)", 3.3 lines 811-812, 9.7): Brandes'
|
|
3
3
|
* algorithm as McLaughlin-Bader run it, k sources at a time.
|
|
4
4
|
*
|
|
5
|
-
* A source batch keeps four `n x k` arrays -- `depthK`, `sigmaK` (u32 shortest-path counts
|
|
6
|
-
* dependencies) and the claim log `S` -- plus `ends`, the level boundaries into the log
|
|
5
|
+
* A source batch keeps four `n x k` arrays -- `depthK`, `sigmaK` (u32 shortest-path counts, or the f32 bits of the
|
|
6
|
+
* rescaled ones), `deltaK` (f32 dependencies) and the claim log `S` -- plus `ends`, the level boundaries into the log,
|
|
7
|
+
* and `levelMax`, the f32 bits of the largest rescaled count at each depth. Every array is indexed by
|
|
7
8
|
* `s * n + v`, and a log entry IS that index, so one u32 names a `(vertex, source)` pair: `4 n k` bytes can never
|
|
8
9
|
* reach 2^32 because each array is one storage binding. The forward pass is a tagged breadth-first search: every
|
|
9
10
|
* level is `bc-finalize` (the boundary: `ends[level + 1] = stackTop`, `done` on an empty level) and then ONE forward
|
|
10
11
|
* dispatch, either `bc-forward` (block-mapped over the level's range of the log) or `bc-forward-edge` (every edge of
|
|
11
|
-
* the `edgeList` view for every source), both claiming, counting and appending with the same rules.
|
|
12
|
-
* recorded `MAX_LEVELS_PER_SUBMIT` per submit with one small readback (the counters block and the `ends`
|
|
13
|
-
* the log's `ends` is known on the host when the forward phase ends, so the backward pass is planned
|
|
14
|
-
* `bc-backward` dispatch per level from the deepest to depth 1, each writing `delta[s][w]` once by pulling
|
|
15
|
-
* successors; then `bc-gather` adds each vertex's k dependencies into `bc` (and `bc-edge-gather` each arc's k
|
|
16
|
-
* into `arcScores`). Nothing accumulates a float through an atomic, so the scores are bitwise reproducible.
|
|
12
|
+
* the `edgeList` view for every source), both claiming, counting and appending with the same rules.
|
|
13
|
+
* Levels are recorded `MAX_LEVELS_PER_SUBMIT` per submit with one small readback (the counters block and the `ends`
|
|
14
|
+
* prefix), and the log's `ends` is known on the host when the forward phase ends, so the backward pass is planned
|
|
15
|
+
* exactly: one `bc-backward` dispatch per level from the deepest to depth 1, each writing `delta[s][w]` once by pulling
|
|
16
|
+
* over the successors; then `bc-gather` adds each vertex's k dependencies into `bc` (and `bc-edge-gather` each arc's k
|
|
17
|
+
* terms into `arcScores`). Nothing accumulates a float through an atomic, so the scores are bitwise reproducible.
|
|
18
|
+
*
|
|
19
|
+
* Path counts that outgrow u32 (issue #719): a batch counts exactly in u32 first, and the forward kernels report a
|
|
20
|
+
* wrap. A 19 x 19 grid already has C(36, 18), about 9.1e9, corner-to-corner paths, and f32 counts would only move the
|
|
21
|
+
* cliff to a 68 x 68 grid. So a batch whose counts wrapped is abandoned before its backward pass and run again with
|
|
22
|
+
* every kernel's `SCALED` override: the forward bodies only claim, and after each level `bc-count` pulls the new
|
|
23
|
+
* depth's counts over the in-arcs (the `reverse` view; the forward core when undirected) as f32 divided by the power of
|
|
24
|
+
* two that keeps the previous depth's largest count at 2^BC_SIGMA_EXPONENT_CAP; `bc-backward` and `bc-edge-gather` undo
|
|
25
|
+
* that one step in the ratio Brandes' recursion reads, so the scores are what unbounded counts give. The rest of the
|
|
26
|
+
* run stays scaled. A batch that never wraps runs exactly as before, bit for bit. In the scaled form `sigmaOverflow`
|
|
27
|
+
* rises only when the counts at ONE depth span more than f32's exponent range (about 2^226; measured from a corner of a
|
|
28
|
+
* grid, 235 x 235 raises it and 230 x 230 does not); the `@graphty/algorithms` dispatcher then throws instead of
|
|
29
|
+
* returning the scores.
|
|
17
30
|
*
|
|
18
31
|
* The batch size k is planned from the device limits at 16 bytes per (node, source) -- the three arrays design 4.7
|
|
19
32
|
* counts plus the 4-byte log entry it omits -- as `min(floor(maxStorageBufferBindingSize / 4n), floor(0.25 x
|
|
@@ -48,7 +61,9 @@ import { type GpuRunOptions } from "../types/run.js";
|
|
|
48
61
|
* the sources run (`sourcesUsed` beside them; multiply by `n / sourcesUsed` for the estimator of the full sum). The
|
|
49
62
|
* CPU package's convention: halved on an undirected snapshot, `normalized` divides by `(n - 1)(n - 2)` directed or
|
|
50
63
|
* half that undirected. Weights are ignored (breadth-first on both packages). `endpoints: true` is E_UNSUPPORTED.
|
|
51
|
-
*
|
|
64
|
+
* The path counts are f32 rescaled per depth, so a lattice's astronomically many shortest paths are counted exactly
|
|
65
|
+
* enough; `sigmaOverflow` is true only when the counts at one depth spread wider than f32's exponent range (about
|
|
66
|
+
* 2^226): the scores are then wrong, and the `@graphty/algorithms` dispatcher throws instead of returning them.
|
|
52
67
|
* @param ctx - the context whose device runs the kernels
|
|
53
68
|
* @param s - the snapshot (uploaded through ctx.residency, or found there)
|
|
54
69
|
* @param options - `normalized`, `endpoints`, `sources`, `k`, plus dest (a Float32Array of length n) / signal / onProgress (sources done, sources total)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"betweenness.d.ts","sourceRoot":"","sources":["../../../src/algorithms/betweenness.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"betweenness.d.ts","sourceRoot":"","sources":["../../../src/algorithms/betweenness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAsB,KAAK,aAAa,EAAY,MAAM,uBAAuB,CAAC;AAUzF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAUhD,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9F,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA0tBrD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACjC,GAAG,EAAE,UAAU,EACf,CAAC,EAAE,aAAa,EAChB,OAAO,CAAC,EAAE,6BAA6B,GAAG,aAAa,GACxD,OAAO,CAAC,oBAAoB,CAAC,CAE/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACrC,GAAG,EAAE,UAAU,EACf,CAAC,EAAE,aAAa,EAChB,OAAO,CAAC,EAAE,6BAA6B,GAAG,aAAa,GACxD,OAAO,CAAC,mBAAmB,CAAC,CAE9B"}
|
|
@@ -2,18 +2,31 @@
|
|
|
2
2
|
* Betweenness and edge betweenness on the device (design 8.4 "Betweenness (A7)", 3.3 lines 811-812, 9.7): Brandes'
|
|
3
3
|
* algorithm as McLaughlin-Bader run it, k sources at a time.
|
|
4
4
|
*
|
|
5
|
-
* A source batch keeps four `n x k` arrays -- `depthK`, `sigmaK` (u32 shortest-path counts
|
|
6
|
-
* dependencies) and the claim log `S` -- plus `ends`, the level boundaries into the log
|
|
5
|
+
* A source batch keeps four `n x k` arrays -- `depthK`, `sigmaK` (u32 shortest-path counts, or the f32 bits of the
|
|
6
|
+
* rescaled ones), `deltaK` (f32 dependencies) and the claim log `S` -- plus `ends`, the level boundaries into the log,
|
|
7
|
+
* and `levelMax`, the f32 bits of the largest rescaled count at each depth. Every array is indexed by
|
|
7
8
|
* `s * n + v`, and a log entry IS that index, so one u32 names a `(vertex, source)` pair: `4 n k` bytes can never
|
|
8
9
|
* reach 2^32 because each array is one storage binding. The forward pass is a tagged breadth-first search: every
|
|
9
10
|
* level is `bc-finalize` (the boundary: `ends[level + 1] = stackTop`, `done` on an empty level) and then ONE forward
|
|
10
11
|
* dispatch, either `bc-forward` (block-mapped over the level's range of the log) or `bc-forward-edge` (every edge of
|
|
11
|
-
* the `edgeList` view for every source), both claiming, counting and appending with the same rules.
|
|
12
|
-
* recorded `MAX_LEVELS_PER_SUBMIT` per submit with one small readback (the counters block and the `ends`
|
|
13
|
-
* the log's `ends` is known on the host when the forward phase ends, so the backward pass is planned
|
|
14
|
-
* `bc-backward` dispatch per level from the deepest to depth 1, each writing `delta[s][w]` once by pulling
|
|
15
|
-
* successors; then `bc-gather` adds each vertex's k dependencies into `bc` (and `bc-edge-gather` each arc's k
|
|
16
|
-
* into `arcScores`). Nothing accumulates a float through an atomic, so the scores are bitwise reproducible.
|
|
12
|
+
* the `edgeList` view for every source), both claiming, counting and appending with the same rules.
|
|
13
|
+
* Levels are recorded `MAX_LEVELS_PER_SUBMIT` per submit with one small readback (the counters block and the `ends`
|
|
14
|
+
* prefix), and the log's `ends` is known on the host when the forward phase ends, so the backward pass is planned
|
|
15
|
+
* exactly: one `bc-backward` dispatch per level from the deepest to depth 1, each writing `delta[s][w]` once by pulling
|
|
16
|
+
* over the successors; then `bc-gather` adds each vertex's k dependencies into `bc` (and `bc-edge-gather` each arc's k
|
|
17
|
+
* terms into `arcScores`). Nothing accumulates a float through an atomic, so the scores are bitwise reproducible.
|
|
18
|
+
*
|
|
19
|
+
* Path counts that outgrow u32 (issue #719): a batch counts exactly in u32 first, and the forward kernels report a
|
|
20
|
+
* wrap. A 19 x 19 grid already has C(36, 18), about 9.1e9, corner-to-corner paths, and f32 counts would only move the
|
|
21
|
+
* cliff to a 68 x 68 grid. So a batch whose counts wrapped is abandoned before its backward pass and run again with
|
|
22
|
+
* every kernel's `SCALED` override: the forward bodies only claim, and after each level `bc-count` pulls the new
|
|
23
|
+
* depth's counts over the in-arcs (the `reverse` view; the forward core when undirected) as f32 divided by the power of
|
|
24
|
+
* two that keeps the previous depth's largest count at 2^BC_SIGMA_EXPONENT_CAP; `bc-backward` and `bc-edge-gather` undo
|
|
25
|
+
* that one step in the ratio Brandes' recursion reads, so the scores are what unbounded counts give. The rest of the
|
|
26
|
+
* run stays scaled. A batch that never wraps runs exactly as before, bit for bit. In the scaled form `sigmaOverflow`
|
|
27
|
+
* rises only when the counts at ONE depth span more than f32's exponent range (about 2^226; measured from a corner of a
|
|
28
|
+
* grid, 235 x 235 raises it and 230 x 230 does not); the `@graphty/algorithms` dispatcher then throws instead of
|
|
29
|
+
* returning the scores.
|
|
17
30
|
*
|
|
18
31
|
* The batch size k is planned from the device limits at 16 bytes per (node, source) -- the three arrays design 4.7
|
|
19
32
|
* counts plus the 4-byte log entry it omits -- as `min(floor(maxStorageBufferBindingSize / 4n), floor(0.25 x
|
|
@@ -38,7 +51,7 @@
|
|
|
38
51
|
* one: on a multigraph the two packages' scores differ.
|
|
39
52
|
*/
|
|
40
53
|
import { foldArcs } from "@graphty/graph-format";
|
|
41
|
-
import { BC_BACKWARD_LEVELS_PER_SUBMIT, BC_BATCH_BUDGET_FRACTION, BC_EDGE_PARALLEL_GAMMA, BC_MAX_BATCH, MAX_LEVELS_PER_SUBMIT, } from "../constants.js";
|
|
54
|
+
import { BC_BACKWARD_LEVELS_PER_SUBMIT, BC_BATCH_BUDGET_FRACTION, BC_COUNT_MAX_GROUPS, BC_EDGE_PARALLEL_GAMMA, BC_MAX_BATCH, MAX_LEVELS_PER_SUBMIT, } from "../constants.js";
|
|
42
55
|
import { WebGpuGraphError } from "../errors.js";
|
|
43
56
|
import { CommandBatch } from "../kernel/batch.js";
|
|
44
57
|
import { plan1d, planGridStride } from "../kernel/dispatch.js";
|
|
@@ -46,6 +59,7 @@ import { BC_PARAMS, FILL_PARAMS, FRONTIER_COUNTERS, kernelSpec } from "../kernel
|
|
|
46
59
|
import { assertWholeCore } from "../primitives/core-shape.js";
|
|
47
60
|
import { W } from "../primitives/frontier.js";
|
|
48
61
|
import { assertDeviceComputes } from "../primitives/verify.js";
|
|
62
|
+
import { reverseOf } from "./power-iteration.js";
|
|
49
63
|
import { algorithmScope } from "./scope.js";
|
|
50
64
|
import { aborted, bindingOf, checkDest } from "./sssp.js";
|
|
51
65
|
const ALGORITHM = "betweennessCentrality";
|
|
@@ -53,8 +67,8 @@ const ALGORITHM = "betweennessCentrality";
|
|
|
53
67
|
const BYTES_PER_NODE_SOURCE = 16;
|
|
54
68
|
/** The seed of the deterministic draw of `k` sources (any fixed value: the draw only has to repeat). */
|
|
55
69
|
const SAMPLE_SEED = 0x9e3779b9;
|
|
56
|
-
/** Params slots of the ring: a backward submit's levels plus the fills, the seed
|
|
57
|
-
const RING_SLOTS = BC_BACKWARD_LEVELS_PER_SUBMIT + 16;
|
|
70
|
+
/** Params slots of the ring: a forward submit's records per level (boundary, forward and, when scaled, count) or a backward submit's levels, plus the fills, the seed and the gathers. */
|
|
71
|
+
const RING_SLOTS = Math.max(3 * MAX_LEVELS_PER_SUBMIT, BC_BACKWARD_LEVELS_PER_SUBMIT) + 16;
|
|
58
72
|
/**
|
|
59
73
|
* The source batch size (design 8.4, 10.1): `min(floor(maxStorageBufferBindingSize / 4n), floor(0.25 x maxBufferSize /
|
|
60
74
|
* 16n), 64, remaining)`, at least 1. Each of the four `n x k` arrays is one binding of `4 n k` bytes, and the batch's
|
|
@@ -138,6 +152,34 @@ function resolveSources(options, n) {
|
|
|
138
152
|
}
|
|
139
153
|
return Array.from({ length: n }, (_, i) => i);
|
|
140
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Compiles the kernels of one counting mode.
|
|
157
|
+
* @param ctx - the context
|
|
158
|
+
* @param s - the snapshot
|
|
159
|
+
* @param core - its forward core (the in-arcs of an undirected snapshot)
|
|
160
|
+
* @param withForwardEdge - also the edge-parallel forward body
|
|
161
|
+
* @param withEdges - also the per-arc gather
|
|
162
|
+
* @param scaled - the `SCALED` variants plus `bc-count`
|
|
163
|
+
* @returns the kernels
|
|
164
|
+
*/
|
|
165
|
+
async function modeKernels(ctx, s, core, withForwardEdge, withEdges, scaled) {
|
|
166
|
+
const SCALED = scaled;
|
|
167
|
+
const [finalize, forward, backward] = await Promise.all(["bc-finalize", "bc-forward", "bc-backward"].map((id) => ctx.pipelines.kernel(kernelSpec(id, { SCALED }))));
|
|
168
|
+
const forwardEdge = withForwardEdge
|
|
169
|
+
? await ctx.pipelines.kernel(kernelSpec("bc-forward-edge", { UNDIRECTED: !s.directed, SCALED }))
|
|
170
|
+
: null;
|
|
171
|
+
const edgeGather = withEdges ? await ctx.pipelines.kernel(kernelSpec("bc-edge-gather", { SCALED })) : null;
|
|
172
|
+
let count = null;
|
|
173
|
+
if (scaled) {
|
|
174
|
+
const reverse = s.directed ? reverseOf(ctx, s) : core;
|
|
175
|
+
count = {
|
|
176
|
+
kernel: await ctx.pipelines.kernel(kernelSpec("bc-count")),
|
|
177
|
+
rowPtr: reverse.rowPtr,
|
|
178
|
+
colIdx: reverse.colIdx ?? reverse.rowPtr,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return { finalize, forward, forwardEdge, backward, edgeGather, count };
|
|
182
|
+
}
|
|
141
183
|
/**
|
|
142
184
|
* Records one `fill` of `count` words.
|
|
143
185
|
* @param state - the run
|
|
@@ -161,10 +203,11 @@ function recordFill(state, pass, dst, count, value) {
|
|
|
161
203
|
* @param resources - its storage bindings (the same on every call for one kernel)
|
|
162
204
|
* @param fields - the BcParams fields
|
|
163
205
|
* @param items - the items the grid-stride plan covers
|
|
206
|
+
* @param maxGroups - the most workgroups the plan launches (default: the planner's cap)
|
|
164
207
|
*/
|
|
165
|
-
function recordBc(state, pass, kernel, resources, fields, items) {
|
|
208
|
+
function recordBc(state, pass, kernel, resources, fields, items, maxGroups) {
|
|
166
209
|
const { scope, ctx } = state;
|
|
167
|
-
const plan = planGridStride(items, ctx.workgroupSize, ctx.caps);
|
|
210
|
+
const plan = planGridStride(items, ctx.workgroupSize, ctx.caps, maxGroups);
|
|
168
211
|
const params = scope.params(BC_PARAMS, { ...fields, stride: plan.stride ?? 0 });
|
|
169
212
|
let bound = state.bound.get(kernel);
|
|
170
213
|
if (bound === undefined) {
|
|
@@ -191,17 +234,19 @@ async function submit(state, batch, signal) {
|
|
|
191
234
|
return back;
|
|
192
235
|
}
|
|
193
236
|
/**
|
|
194
|
-
* One source batch: seed, forward levels until an empty one, backward levels, the gathers.
|
|
237
|
+
* One source batch: seed, forward levels until an empty one, backward levels, the gathers. In the exact mode a batch
|
|
238
|
+
* whose u32 counts wrapped stops after its forward phase (`wrapped`), before anything reaches the scores.
|
|
195
239
|
* @param state - the run
|
|
240
|
+
* @param mode - the kernels of the counting mode
|
|
196
241
|
* @param sources - the batch's sources
|
|
197
242
|
* @param form - the forward body
|
|
198
243
|
* @param levelsPerSubmit - the forward cadence
|
|
199
244
|
* @param tuning - the knobs
|
|
200
245
|
* @param signal - the caller's signal
|
|
201
|
-
* @returns the batch's levels and overflow flag
|
|
246
|
+
* @returns the batch's levels, whether its exact counts wrapped, and the scaled form's overflow flag
|
|
202
247
|
*/
|
|
203
|
-
async function runBatch(state, sources, form, levelsPerSubmit, tuning, signal) {
|
|
204
|
-
const { ctx, n, S, ends, depthK, sigmaK, deltaK, counters } = state;
|
|
248
|
+
async function runBatch(state, mode, sources, form, levelsPerSubmit, tuning, signal) {
|
|
249
|
+
const { ctx, n, S, ends, levelMax, depthK, sigmaK, deltaK, counters } = state;
|
|
205
250
|
const k = sources.length;
|
|
206
251
|
const words = n * k;
|
|
207
252
|
const seeds = Uint32Array.from(sources, (v, s) => s * n + v);
|
|
@@ -220,15 +265,22 @@ async function runBatch(state, sources, form, levelsPerSubmit, tuning, signal) {
|
|
|
220
265
|
recordFill(state, pass, depthK, words, 0xffffffff);
|
|
221
266
|
recordFill(state, pass, sigmaK, words, 0);
|
|
222
267
|
recordFill(state, pass, deltaK, words, 0);
|
|
223
|
-
|
|
268
|
+
if (mode.count !== null) {
|
|
269
|
+
recordFill(state, pass, levelMax, n + 2, 0);
|
|
270
|
+
}
|
|
271
|
+
recordBc(state, pass, mode.finalize, { counters, ends, S, depthK, sigmaK, levelMax }, { n, k, role: 1 }, 1);
|
|
224
272
|
}
|
|
225
273
|
for (let level = 0; level < levelsPerSubmit; level++) {
|
|
226
|
-
recordBc(state, pass,
|
|
227
|
-
if (form === "edge" &&
|
|
228
|
-
recordBc(state, pass,
|
|
274
|
+
recordBc(state, pass, mode.finalize, { counters, ends, S, depthK, sigmaK, levelMax }, { n, k, role: 0 }, 1);
|
|
275
|
+
if (form === "edge" && mode.forwardEdge !== null && state.edgeSrc !== null && state.edgeDst !== null) {
|
|
276
|
+
recordBc(state, pass, mode.forwardEdge, { edgeSrc: state.edgeSrc, edgeDst: state.edgeDst, S, ends, counters, depthK, sigmaK }, forwardFields, forwardItems);
|
|
229
277
|
}
|
|
230
278
|
else {
|
|
231
|
-
recordBc(state, pass,
|
|
279
|
+
recordBc(state, pass, mode.forward, { rowPtr: state.rowPtr, colIdx: state.colIdx, S, ends, counters, depthK, sigmaK }, forwardFields, forwardItems);
|
|
280
|
+
}
|
|
281
|
+
if (mode.count !== null) {
|
|
282
|
+
const { kernel, rowPtr, colIdx } = mode.count;
|
|
283
|
+
recordBc(state, pass, kernel, { rowPtr, colIdx, S, ends, counters, depthK, sigmaK, levelMax }, { n, k }, words, BC_COUNT_MAX_GROUPS);
|
|
232
284
|
}
|
|
233
285
|
}
|
|
234
286
|
recorded += levelsPerSubmit;
|
|
@@ -242,6 +294,9 @@ async function runBatch(state, sources, form, levelsPerSubmit, tuning, signal) {
|
|
|
242
294
|
levels = words32[W.level];
|
|
243
295
|
overflow = words32[W.sigmaOverflow] !== 0;
|
|
244
296
|
endsWords = new Uint32Array(back, endsRequest.offset, endsCount).slice(0, levels + 1);
|
|
297
|
+
if (overflow && mode.count === null) {
|
|
298
|
+
return { levels, wrapped: true, overflow: false };
|
|
299
|
+
}
|
|
245
300
|
}
|
|
246
301
|
else if (recorded > n + 2) {
|
|
247
302
|
// a batch claims at most n - 1 levels deep, then one level is empty
|
|
@@ -265,12 +320,20 @@ async function runBatch(state, sources, form, levelsPerSubmit, tuning, signal) {
|
|
|
265
320
|
for (const level of chunk) {
|
|
266
321
|
const start = endsWords[level];
|
|
267
322
|
const count = endsWords[level + 1] - start;
|
|
268
|
-
recordBc(state, pass,
|
|
323
|
+
recordBc(state, pass, mode.backward, { rowPtr: state.rowPtr, colIdx: state.colIdx, S, depthK, sigmaK, deltaK, levelMax }, { n, k, start, count }, count);
|
|
269
324
|
}
|
|
270
325
|
if (last) {
|
|
271
326
|
recordBc(state, pass, state.gather, { deltaK, bc: state.bc }, { n, k }, n);
|
|
272
|
-
if (
|
|
273
|
-
recordBc(state, pass,
|
|
327
|
+
if (mode.edgeGather !== null && state.arcScores !== null) {
|
|
328
|
+
recordBc(state, pass, mode.edgeGather, {
|
|
329
|
+
rowPtr: state.rowPtr,
|
|
330
|
+
colIdx: state.colIdx,
|
|
331
|
+
depthK,
|
|
332
|
+
sigmaK,
|
|
333
|
+
deltaK,
|
|
334
|
+
arcScores: state.arcScores,
|
|
335
|
+
levelMax,
|
|
336
|
+
}, { n, k, count: state.arcCount }, state.arcCount);
|
|
274
337
|
}
|
|
275
338
|
}
|
|
276
339
|
batch.endPass();
|
|
@@ -295,12 +358,13 @@ async function runBatch(state, sources, form, levelsPerSubmit, tuning, signal) {
|
|
|
295
358
|
forward: form,
|
|
296
359
|
levels,
|
|
297
360
|
ends: endsWords.slice(),
|
|
361
|
+
scaled: mode.count !== null,
|
|
298
362
|
sigmaOverflow: overflow,
|
|
299
363
|
depthK: arrays?.depthK ?? null,
|
|
300
364
|
sigmaK: arrays?.sigmaK ?? null,
|
|
301
365
|
deltaK: arrays?.deltaK ?? null,
|
|
302
366
|
});
|
|
303
|
-
return { levels, overflow };
|
|
367
|
+
return { levels, wrapped: false, overflow };
|
|
304
368
|
}
|
|
305
369
|
/**
|
|
306
370
|
* The raw sums of a run over `sources` (see the file comment).
|
|
@@ -332,17 +396,15 @@ async function runRaw(ctx, s, sources, withEdges, tuning, options) {
|
|
|
332
396
|
const arrayBytes = 4 * n * kMax;
|
|
333
397
|
const lease = (bytes, label) => bindingOf(scope.scratch(bytes, label), bytes);
|
|
334
398
|
const arcBytes = 4 * Math.max(1, s.arcCount);
|
|
335
|
-
const [fill,
|
|
336
|
-
const
|
|
337
|
-
? null
|
|
338
|
-
: await ctx.pipelines.kernel(kernelSpec("bc-forward-edge", { UNDIRECTED: !s.directed }));
|
|
339
|
-
const edgeGather = withEdges ? await ctx.pipelines.kernel(kernelSpec("bc-edge-gather")) : null;
|
|
399
|
+
const [fill, gather] = await Promise.all(["fill", "bc-gather"].map((id) => ctx.pipelines.kernel(kernelSpec(id))));
|
|
400
|
+
const exact = await modeKernels(ctx, s, core, edgeView !== null, withEdges, false);
|
|
340
401
|
const state = {
|
|
341
402
|
ctx,
|
|
342
403
|
scope,
|
|
343
404
|
n,
|
|
344
405
|
S: lease(arrayBytes, "S"),
|
|
345
406
|
ends: lease(4 * (n + 2), "ends"),
|
|
407
|
+
levelMax: lease(4 * (n + 2), "level-max"),
|
|
346
408
|
depthK: lease(arrayBytes, "depthK"),
|
|
347
409
|
sigmaK: lease(arrayBytes, "sigmaK"),
|
|
348
410
|
deltaK: lease(arrayBytes, "deltaK"),
|
|
@@ -356,12 +418,9 @@ async function runRaw(ctx, s, sources, withEdges, tuning, options) {
|
|
|
356
418
|
edgeCount,
|
|
357
419
|
arcCount: s.arcCount,
|
|
358
420
|
fill,
|
|
359
|
-
finalize,
|
|
360
|
-
forward,
|
|
361
|
-
forwardEdge,
|
|
362
|
-
backward,
|
|
363
421
|
gather,
|
|
364
|
-
|
|
422
|
+
exact,
|
|
423
|
+
scaled: null,
|
|
365
424
|
bound: new Map(),
|
|
366
425
|
};
|
|
367
426
|
await ctx.allocator.check();
|
|
@@ -383,11 +442,16 @@ async function runRaw(ctx, s, sources, withEdges, tuning, options) {
|
|
|
383
442
|
if (pinned === "auto" && previousLevels >= 0) {
|
|
384
443
|
form = previousLevels < BC_EDGE_PARALLEL_GAMMA * Math.log2(n) ? "edge" : "frontier";
|
|
385
444
|
}
|
|
386
|
-
if (state.forwardEdge === null) {
|
|
445
|
+
if (state.exact.forwardEdge === null) {
|
|
387
446
|
form = "frontier"; // no edges to run edge-parallel over
|
|
388
447
|
}
|
|
389
448
|
const batch = sources.slice(start, start + k);
|
|
390
|
-
|
|
449
|
+
let outcome = await runBatch(state, state.scaled ?? state.exact, batch, form, levelsPerSubmit, tuning, options?.signal);
|
|
450
|
+
if (outcome.wrapped) {
|
|
451
|
+
// the u32 counts wrapped: this batch, and every later one, counts rescaled f32 instead
|
|
452
|
+
state.scaled ?? (state.scaled = await modeKernels(ctx, s, core, edgeView !== null, withEdges, true));
|
|
453
|
+
outcome = await runBatch(state, state.scaled, batch, form, levelsPerSubmit, tuning, options?.signal);
|
|
454
|
+
}
|
|
391
455
|
overflow = overflow || outcome.overflow;
|
|
392
456
|
previousLevels = outcome.levels;
|
|
393
457
|
start += k;
|
|
@@ -512,7 +576,9 @@ export async function edgeBetweennessWithTuning(ctx, s, options, tuning, onArcs)
|
|
|
512
576
|
* the sources run (`sourcesUsed` beside them; multiply by `n / sourcesUsed` for the estimator of the full sum). The
|
|
513
577
|
* CPU package's convention: halved on an undirected snapshot, `normalized` divides by `(n - 1)(n - 2)` directed or
|
|
514
578
|
* half that undirected. Weights are ignored (breadth-first on both packages). `endpoints: true` is E_UNSUPPORTED.
|
|
515
|
-
*
|
|
579
|
+
* The path counts are f32 rescaled per depth, so a lattice's astronomically many shortest paths are counted exactly
|
|
580
|
+
* enough; `sigmaOverflow` is true only when the counts at one depth spread wider than f32's exponent range (about
|
|
581
|
+
* 2^226): the scores are then wrong, and the `@graphty/algorithms` dispatcher throws instead of returning them.
|
|
516
582
|
* @param ctx - the context whose device runs the kernels
|
|
517
583
|
* @param s - the snapshot (uploaded through ctx.residency, or found there)
|
|
518
584
|
* @param options - `normalized`, `endpoints`, `sources`, `k`, plus dest (a Float32Array of length n) / signal / onProgress (sources done, sources total)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"betweenness.js","sourceRoot":"","sources":["../../../src/algorithms/betweenness.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"betweenness.js","sourceRoot":"","sources":["../../../src/algorithms/betweenness.ts"],"names":[],"mappings":"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"}
|
package/dist/src/constants.d.ts
CHANGED
|
@@ -215,6 +215,17 @@ export declare const BC_BATCH_BUDGET_FRACTION = 0.25;
|
|
|
215
215
|
export declare const BC_MAX_BATCH = 64;
|
|
216
216
|
/** Design 8.4 (McLaughlin-Bader): a betweenness batch runs the edge-parallel forward pass when the previous batch's level count is below `BC_EDGE_PARALLEL_GAMMA * log2(n)`. The design names the rule and no value; 2 is unmeasured and a benchmark run re-fixes it. */
|
|
217
217
|
export declare const BC_EDGE_PARALLEL_GAMMA = 2;
|
|
218
|
+
/**
|
|
219
|
+
* Betweenness path counts that wrapped u32 are recounted as f32, rescaled per depth by a power of two (`bc-count`):
|
|
220
|
+
* when the largest count at one depth has a binary exponent above this cap, the next depth's counts are scaled down so
|
|
221
|
+
* that largest count lands at 2^cap. A count then never exceeds 2^cap x 2 x (in-degree), below f32's 2^128 for any
|
|
222
|
+
* in-degree a binding can hold (2^25), and the counts at one depth may span 2^(cap + 126) before the smallest leaves
|
|
223
|
+
* f32's normal range, which is when the overflow flag rises (measured: a corner of a 235 x 235 grid, not of a 230 x 230
|
|
224
|
+
* one). Powers of two scale without rounding, so the scores do not depend on the cap.
|
|
225
|
+
*/
|
|
226
|
+
export declare const BC_SIGMA_EXPONENT_CAP = 100;
|
|
227
|
+
/** The most workgroups one `bc-count` dispatch launches (it grid-strides over the level): sized for the largest level, a dispatch of n x k lanes costs every level a mostly idle launch, which doubled a 100 x 100 grid's run on an RTX 4070 SUPER; 256 measured 1.3 s against 2.0 s there. */
|
|
228
|
+
export declare const BC_COUNT_MAX_GROUPS = 256;
|
|
218
229
|
/** Backward-pass levels recorded per submit: each level is one dispatch with its own parameter record, so this bounds the uniform ring. */
|
|
219
230
|
export declare const BC_BACKWARD_LEVELS_PER_SUBMIT = 64;
|
|
220
231
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/src/constants.js
CHANGED
|
@@ -215,6 +215,17 @@ export const BC_BATCH_BUDGET_FRACTION = 0.25;
|
|
|
215
215
|
export const BC_MAX_BATCH = 64;
|
|
216
216
|
/** Design 8.4 (McLaughlin-Bader): a betweenness batch runs the edge-parallel forward pass when the previous batch's level count is below `BC_EDGE_PARALLEL_GAMMA * log2(n)`. The design names the rule and no value; 2 is unmeasured and a benchmark run re-fixes it. */
|
|
217
217
|
export const BC_EDGE_PARALLEL_GAMMA = 2;
|
|
218
|
+
/**
|
|
219
|
+
* Betweenness path counts that wrapped u32 are recounted as f32, rescaled per depth by a power of two (`bc-count`):
|
|
220
|
+
* when the largest count at one depth has a binary exponent above this cap, the next depth's counts are scaled down so
|
|
221
|
+
* that largest count lands at 2^cap. A count then never exceeds 2^cap x 2 x (in-degree), below f32's 2^128 for any
|
|
222
|
+
* in-degree a binding can hold (2^25), and the counts at one depth may span 2^(cap + 126) before the smallest leaves
|
|
223
|
+
* f32's normal range, which is when the overflow flag rises (measured: a corner of a 235 x 235 grid, not of a 230 x 230
|
|
224
|
+
* one). Powers of two scale without rounding, so the scores do not depend on the cap.
|
|
225
|
+
*/
|
|
226
|
+
export const BC_SIGMA_EXPONENT_CAP = 100;
|
|
227
|
+
/** The most workgroups one `bc-count` dispatch launches (it grid-strides over the level): sized for the largest level, a dispatch of n x k lanes costs every level a mostly idle launch, which doubled a 100 x 100 grid's run on an RTX 4070 SUPER; 256 measured 1.3 s against 2.0 s there. */
|
|
228
|
+
export const BC_COUNT_MAX_GROUPS = 256;
|
|
218
229
|
/** Backward-pass levels recorded per submit: each level is one dispatch with its own parameter record, so this bounds the uniform ring. */
|
|
219
230
|
export const BC_BACKWARD_LEVELS_PER_SUBMIT = 64;
|
|
220
231
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prelude.d.ts","sourceRoot":"","sources":["../../../src/kernel/prelude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"prelude.d.ts","sourceRoot":"","sources":["../../../src/kernel/prelude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6BH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUpD;AAED,iHAAiH;AACjH,eAAO,MAAM,YAAY,EAAE,MA8DzB,CAAC;AAEH,8GAA8G;AAC9G,eAAO,MAAM,aAAa,EAAE,MAAwC,CAAC;AAErE,qHAAqH;AACrH,eAAO,MAAM,6BAA6B,EAAE,MAmDsE,CAAC;AAEnH,iIAAiI;AACjI,eAAO,MAAM,4BAA4B,EAAE,MA6FuE,CAAC;AAEnH,qNAAqN;AACrN,eAAO,MAAM,mBAAmB,8EAA+E,CAAC;AAEhH;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAchD,CAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* covers this file's template, so no u32 sentinel or workgroup-size literal is ever typed here.
|
|
10
10
|
*/
|
|
11
11
|
import { INVALID_INDEX } from "@graphty/graph-format";
|
|
12
|
-
import { APSP_TILE, EXACT_TILES_PER_PASS, F32_INF_BITS, F32_SIGN_BIT, FA2_COINCIDENT_SQ, FA2_DISTANCE_FLOOR, FA2_DISTANCE_FLOOR_SQ, FA2_FLAG_ADAPTIVE, FA2_FLAG_FIRST, FR_COOLING_PATIENCE, FR_COOLING_STEP, GRID_BBOX_MARGIN, GRID_EXTENT_FLOOR, GRID_HUB_CELL, GROUP_HASH_LOAD_FACTOR, MAX_WORKGROUPS_PER_DIM, RADIX_BINS, TRIANGLE_BINARY_SEARCH_RATIO, U32_MAX, WORKGROUP_SIZE, } from "../constants.js";
|
|
12
|
+
import { APSP_TILE, BC_SIGMA_EXPONENT_CAP, EXACT_TILES_PER_PASS, F32_INF_BITS, F32_SIGN_BIT, FA2_COINCIDENT_SQ, FA2_DISTANCE_FLOOR, FA2_DISTANCE_FLOOR_SQ, FA2_FLAG_ADAPTIVE, FA2_FLAG_FIRST, FR_COOLING_PATIENCE, FR_COOLING_STEP, GRID_BBOX_MARGIN, GRID_EXTENT_FLOOR, GRID_HUB_CELL, GROUP_HASH_LOAD_FACTOR, MAX_WORKGROUPS_PER_DIM, RADIX_BINS, TRIANGLE_BINARY_SEARCH_RATIO, U32_MAX, WORKGROUP_SIZE, } from "../constants.js";
|
|
13
13
|
import { WebGpuGraphError } from "../errors.js";
|
|
14
14
|
/**
|
|
15
15
|
* Formats a finite number as a WGSL f32 literal that always carries a decimal point or an exponent (`0.01`,
|
|
@@ -51,6 +51,7 @@ const RADIX_DIGIT_MASK: u32 = ${RADIX_BINS - 1}u;
|
|
|
51
51
|
const APSP_TILE: u32 = ${APSP_TILE}u;
|
|
52
52
|
const GROUP_HASH_LOAD_FACTOR: u32 = ${GROUP_HASH_LOAD_FACTOR}u;
|
|
53
53
|
const TRIANGLE_BINARY_SEARCH_RATIO: u32 = ${TRIANGLE_BINARY_SEARCH_RATIO}u;
|
|
54
|
+
const BC_SIGMA_EXPONENT_CAP: i32 = ${BC_SIGMA_EXPONENT_CAP}i;
|
|
54
55
|
const F32_MAX: f32 = 0x1.fffffep+127;
|
|
55
56
|
override WG: u32 = ${WORKGROUP_SIZE}u;
|
|
56
57
|
override USE_PERM: bool = false;
|
|
@@ -60,6 +61,8 @@ override SUBGROUP_MAX: u32 = 0u;
|
|
|
60
61
|
|
|
61
62
|
fn linear_id(wid: vec3<u32>, lid: u32) -> u32 { return (wid.x + wid.y * MAX_WORKGROUPS_PER_DIM) * WG + lid; }
|
|
62
63
|
fn group_id(wid: vec3<u32>) -> u32 { return wid.x + wid.y * MAX_WORKGROUPS_PER_DIM; }
|
|
64
|
+
// betweenness: the power of two the counts of depth L + 1 are divided by, from the f32 bits of depth L's largest count
|
|
65
|
+
fn sigma_shift(maxBits: u32) -> i32 { return max(0i, i32((maxBits >> 23u) & 0xffu) - 127i - BC_SIGMA_EXPONENT_CAP); }
|
|
63
66
|
fn lowbias32(x0: u32) -> u32 {
|
|
64
67
|
var x = x0;
|
|
65
68
|
x = x ^ (x >> 16u);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../../src/kernel/prelude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EACH,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,UAAU,EACV,4BAA4B,EAC5B,OAAO,EACP,cAAc,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,mBAAmB,KAAK,yBAAyB,EAAE;YAChG,QAAQ,EAAE,OAAO;YACjB,KAAK;YACL,QAAQ,EAAE,iBAAiB;SAC9B,CAAC,CAAC;IACP,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;AAClD,CAAC;AAED,iHAAiH;AACjH,MAAM,CAAC,MAAM,YAAY,GAAW,UAAU,CAAC;6BAClB,aAAa;uBACnB,OAAO;4BACF,YAAY;4BACZ,YAAY;sCACF,sBAAsB;oCACxB,oBAAoB;8BAC1B,cAAc,CAAC,kBAAkB,CAAC;iCAC/B,cAAc,CAAC,qBAAqB,CAAC;iCACrC,cAAc,CAAC,iBAAiB,CAAC;8BACpC,cAAc;iCACX,iBAAiB;+BACnB,cAAc,CAAC,eAAe,CAAC;mCAC3B,mBAAmB;6BACzB,aAAa;iCACT,cAAc,CAAC,iBAAiB,CAAC;gCAClC,cAAc,CAAC,gBAAgB,CAAC;0BACtC,UAAU;gCACJ,UAAU,GAAG,CAAC;yBACrB,SAAS;sCACI,sBAAsB;4CAChB,4BAA4B;;
|
|
1
|
+
{"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../../src/kernel/prelude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EACH,SAAS,EACT,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,UAAU,EACV,4BAA4B,EAC5B,OAAO,EACP,cAAc,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,mBAAmB,KAAK,yBAAyB,EAAE;YAChG,QAAQ,EAAE,OAAO;YACjB,KAAK;YACL,QAAQ,EAAE,iBAAiB;SAC9B,CAAC,CAAC;IACP,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;AAClD,CAAC;AAED,iHAAiH;AACjH,MAAM,CAAC,MAAM,YAAY,GAAW,UAAU,CAAC;6BAClB,aAAa;uBACnB,OAAO;4BACF,YAAY;4BACZ,YAAY;sCACF,sBAAsB;oCACxB,oBAAoB;8BAC1B,cAAc,CAAC,kBAAkB,CAAC;iCAC/B,cAAc,CAAC,qBAAqB,CAAC;iCACrC,cAAc,CAAC,iBAAiB,CAAC;8BACpC,cAAc;iCACX,iBAAiB;+BACnB,cAAc,CAAC,eAAe,CAAC;mCAC3B,mBAAmB;6BACzB,aAAa;iCACT,cAAc,CAAC,iBAAiB,CAAC;gCAClC,cAAc,CAAC,gBAAgB,CAAC;0BACtC,UAAU;gCACJ,UAAU,GAAG,CAAC;yBACrB,SAAS;sCACI,sBAAsB;4CAChB,4BAA4B;qCACnC,qBAAqB;;qBAErC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCjC,CAAC;AAEH,8GAA8G;AAC9G,MAAM,CAAC,MAAM,aAAa,GAAW,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAErE,qHAAqH;AACrH,MAAM,CAAC,MAAM,6BAA6B,GAAW,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kHAmDkD,CAAC;AAEnH,iIAAiI;AACjI,MAAM,CAAC,MAAM,4BAA4B,GAAW,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kHA6FmD,CAAC;AAEnH,qNAAqN;AACrN,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,CAAU,CAAC;AAEhH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB,MAAM,CAAC,MAAM,CAC/D;;;;;;;;;;6CAUyC;KACpC,IAAI,EAAE;KACN,KAAK,CAAC,KAAK,CAAC,CACpB,CAAC"}
|