@graphty/webgpu-graph-algorithms 0.6.14 → 0.6.16
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 +52 -52
- package/dist/browser.js +1 -1
- package/dist/chunks/{context-Bi6AhScG.js → context-VIvatQOo.js} +69 -34
- package/dist/chunks/context-VIvatQOo.js.map +1 -0
- package/dist/node.js +1 -1
- package/dist/src/accelerator.d.ts +5 -3
- package/dist/src/accelerator.d.ts.map +1 -1
- package/dist/src/accelerator.js +101 -5
- package/dist/src/accelerator.js.map +1 -1
- package/dist/src/algorithms/all-pairs.d.ts +41 -0
- package/dist/src/algorithms/all-pairs.d.ts.map +1 -0
- package/dist/src/algorithms/all-pairs.js +181 -0
- package/dist/src/algorithms/all-pairs.js.map +1 -0
- package/dist/src/algorithms/betweenness.d.ts +70 -0
- package/dist/src/algorithms/betweenness.d.ts.map +1 -0
- package/dist/src/algorithms/betweenness.js +538 -0
- package/dist/src/algorithms/betweenness.js.map +1 -0
- package/dist/src/algorithms/closeness.d.ts +15 -5
- package/dist/src/algorithms/closeness.d.ts.map +1 -1
- package/dist/src/algorithms/closeness.js +112 -26
- package/dist/src/algorithms/closeness.js.map +1 -1
- package/dist/src/algorithms/components.d.ts +9 -1
- package/dist/src/algorithms/components.d.ts.map +1 -1
- package/dist/src/algorithms/components.js +2 -2
- package/dist/src/algorithms/components.js.map +1 -1
- package/dist/src/algorithms/label-propagation.d.ts +31 -0
- package/dist/src/algorithms/label-propagation.d.ts.map +1 -0
- package/dist/src/algorithms/label-propagation.js +254 -0
- package/dist/src/algorithms/label-propagation.js.map +1 -0
- package/dist/src/algorithms/simple-symmetric.d.ts +88 -0
- package/dist/src/algorithms/simple-symmetric.d.ts.map +1 -0
- package/dist/src/algorithms/simple-symmetric.js +347 -0
- package/dist/src/algorithms/simple-symmetric.js.map +1 -0
- package/dist/src/algorithms/triangles.d.ts +34 -0
- package/dist/src/algorithms/triangles.d.ts.map +1 -0
- package/dist/src/algorithms/triangles.js +203 -0
- package/dist/src/algorithms/triangles.js.map +1 -0
- package/dist/src/constants.d.ts +53 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +53 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +12 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -1
- package/dist/src/index.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 +24 -6
- package/dist/src/kernels.d.ts.map +1 -1
- package/dist/src/kernels.js +373 -7
- package/dist/src/kernels.js.map +1 -1
- package/dist/src/memory/residency.js +15 -4
- package/dist/src/memory/residency.js.map +1 -1
- package/dist/src/primitives/coo-to-csr.d.ts +73 -0
- package/dist/src/primitives/coo-to-csr.d.ts.map +1 -0
- package/dist/src/primitives/coo-to-csr.js +183 -0
- package/dist/src/primitives/coo-to-csr.js.map +1 -0
- package/dist/src/primitives/frontier.d.ts +2 -0
- package/dist/src/primitives/frontier.d.ts.map +1 -1
- package/dist/src/primitives/frontier.js +2 -0
- package/dist/src/primitives/frontier.js.map +1 -1
- package/dist/src/primitives/group-by-key.d.ts +82 -0
- package/dist/src/primitives/group-by-key.d.ts.map +1 -0
- package/dist/src/primitives/group-by-key.js +147 -0
- package/dist/src/primitives/group-by-key.js.map +1 -0
- package/dist/src/types/accelerator.d.ts +19 -7
- package/dist/src/types/accelerator.d.ts.map +1 -1
- package/dist/src/types/algorithms.d.ts +4 -0
- package/dist/src/types/algorithms.d.ts.map +1 -1
- package/dist/src/types/all-pairs.d.ts +35 -0
- package/dist/src/types/all-pairs.d.ts.map +1 -0
- package/dist/src/types/all-pairs.js +8 -0
- package/dist/src/types/all-pairs.js.map +1 -0
- package/dist/src/types/betweenness.d.ts +35 -0
- package/dist/src/types/betweenness.d.ts.map +1 -0
- package/dist/src/types/betweenness.js +7 -0
- package/dist/src/types/betweenness.js.map +1 -0
- package/dist/src/types/community.d.ts +18 -0
- package/dist/src/types/community.d.ts.map +1 -0
- package/dist/src/types/community.js +5 -0
- package/dist/src/types/community.js.map +1 -0
- package/dist/src/types/structure.d.ts +27 -0
- package/dist/src/types/structure.d.ts.map +1 -0
- package/dist/src/types/structure.js +8 -0
- package/dist/src/types/structure.js.map +1 -0
- package/dist/src/wgsl/apsp-fw.wgsl.d.ts +25 -0
- package/dist/src/wgsl/apsp-fw.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/apsp-fw.wgsl.js +113 -0
- package/dist/src/wgsl/apsp-fw.wgsl.js.map +1 -0
- package/dist/src/wgsl/apsp-init.wgsl.d.ts +12 -0
- package/dist/src/wgsl/apsp-init.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/apsp-init.wgsl.js +26 -0
- package/dist/src/wgsl/apsp-init.wgsl.js.map +1 -0
- package/dist/src/wgsl/bc-backward.wgsl.d.ts +15 -0
- package/dist/src/wgsl/bc-backward.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/bc-backward.wgsl.js +34 -0
- package/dist/src/wgsl/bc-backward.wgsl.js.map +1 -0
- package/dist/src/wgsl/bc-edge-gather.wgsl.d.ts +12 -0
- package/dist/src/wgsl/bc-edge-gather.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/bc-edge-gather.wgsl.js +36 -0
- package/dist/src/wgsl/bc-edge-gather.wgsl.js.map +1 -0
- package/dist/src/wgsl/bc-finalize.wgsl.d.ts +21 -0
- package/dist/src/wgsl/bc-finalize.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/bc-finalize.wgsl.js +47 -0
- package/dist/src/wgsl/bc-finalize.wgsl.js.map +1 -0
- package/dist/src/wgsl/bc-forward-edge.wgsl.d.ts +15 -0
- package/dist/src/wgsl/bc-forward-edge.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/bc-forward-edge.wgsl.js +76 -0
- package/dist/src/wgsl/bc-forward-edge.wgsl.js.map +1 -0
- package/dist/src/wgsl/bc-forward.wgsl.d.ts +23 -0
- package/dist/src/wgsl/bc-forward.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/bc-forward.wgsl.js +106 -0
- package/dist/src/wgsl/bc-forward.wgsl.js.map +1 -0
- package/dist/src/wgsl/bc-gather.wgsl.d.ts +9 -0
- package/dist/src/wgsl/bc-gather.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/bc-gather.wgsl.js +20 -0
- package/dist/src/wgsl/bc-gather.wgsl.js.map +1 -0
- package/dist/src/wgsl/closeness-reduce.wgsl.d.ts +4 -1
- package/dist/src/wgsl/closeness-reduce.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/closeness-reduce.wgsl.js +8 -4
- package/dist/src/wgsl/closeness-reduce.wgsl.js.map +1 -1
- package/dist/src/wgsl/closeness-sweep.wgsl.d.ts +4 -2
- package/dist/src/wgsl/closeness-sweep.wgsl.d.ts.map +1 -1
- package/dist/src/wgsl/closeness-sweep.wgsl.js +12 -2
- package/dist/src/wgsl/closeness-sweep.wgsl.js.map +1 -1
- package/dist/src/wgsl/coo-emit.wgsl.d.ts +10 -0
- package/dist/src/wgsl/coo-emit.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/coo-emit.wgsl.js +33 -0
- package/dist/src/wgsl/coo-emit.wgsl.js.map +1 -0
- package/dist/src/wgsl/coo-scatter.wgsl.d.ts +15 -0
- package/dist/src/wgsl/coo-scatter.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/coo-scatter.wgsl.js +32 -0
- package/dist/src/wgsl/coo-scatter.wgsl.js.map +1 -0
- package/dist/src/wgsl/group-by-key-row.wgsl.d.ts +26 -0
- package/dist/src/wgsl/group-by-key-row.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/group-by-key-row.wgsl.js +146 -0
- package/dist/src/wgsl/group-by-key-row.wgsl.js.map +1 -0
- package/dist/src/wgsl/lpa-step.wgsl.d.ts +10 -0
- package/dist/src/wgsl/lpa-step.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/lpa-step.wgsl.js +35 -0
- package/dist/src/wgsl/lpa-step.wgsl.js.map +1 -0
- package/dist/src/wgsl/orient-flags.wgsl.d.ts +9 -0
- package/dist/src/wgsl/orient-flags.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/orient-flags.wgsl.js +21 -0
- package/dist/src/wgsl/orient-flags.wgsl.js.map +1 -0
- package/dist/src/wgsl/run-flags.wgsl.d.ts +8 -0
- package/dist/src/wgsl/run-flags.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/run-flags.wgsl.js +18 -0
- package/dist/src/wgsl/run-flags.wgsl.js.map +1 -0
- package/dist/src/wgsl/tri-intersect.wgsl.d.ts +11 -0
- package/dist/src/wgsl/tri-intersect.wgsl.d.ts.map +1 -0
- package/dist/src/wgsl/tri-intersect.wgsl.js +64 -0
- package/dist/src/wgsl/tri-intersect.wgsl.js.map +1 -0
- package/dist/webgpu-graph-algorithms.js +2828 -321
- package/dist/webgpu-graph-algorithms.js.map +1 -1
- package/package.json +5 -5
- package/src/accelerator.ts +130 -7
- package/src/algorithms/all-pairs.ts +228 -0
- package/src/algorithms/betweenness.ts +739 -0
- package/src/algorithms/closeness.ts +124 -32
- package/src/algorithms/components.ts +2 -2
- package/src/algorithms/label-propagation.ts +280 -0
- package/src/algorithms/simple-symmetric.ts +409 -0
- package/src/algorithms/triangles.ts +240 -0
- package/src/constants.ts +53 -0
- package/src/index.ts +20 -1
- package/src/kernel/prelude.ts +6 -0
- package/src/kernels.ts +411 -10
- package/src/memory/residency.ts +15 -4
- package/src/primitives/coo-to-csr.ts +251 -0
- package/src/primitives/frontier.ts +4 -0
- package/src/primitives/group-by-key.ts +209 -0
- package/src/types/accelerator.ts +26 -6
- package/src/types/algorithms.ts +5 -0
- package/src/types/all-pairs.ts +37 -0
- package/src/types/betweenness.ts +38 -0
- package/src/types/community.ts +18 -0
- package/src/types/structure.ts +28 -0
- package/src/wgsl/apsp-fw.wgsl.ts +112 -0
- package/src/wgsl/apsp-init.wgsl.ts +25 -0
- package/src/wgsl/bc-backward.wgsl.ts +33 -0
- package/src/wgsl/bc-edge-gather.wgsl.ts +35 -0
- package/src/wgsl/bc-finalize.wgsl.ts +46 -0
- package/src/wgsl/bc-forward-edge.wgsl.ts +75 -0
- package/src/wgsl/bc-forward.wgsl.ts +105 -0
- package/src/wgsl/bc-gather.wgsl.ts +19 -0
- package/src/wgsl/closeness-reduce.wgsl.ts +8 -4
- package/src/wgsl/closeness-sweep.wgsl.ts +12 -2
- package/src/wgsl/coo-emit.wgsl.ts +32 -0
- package/src/wgsl/coo-scatter.wgsl.ts +31 -0
- package/src/wgsl/group-by-key-row.wgsl.ts +145 -0
- package/src/wgsl/lpa-step.wgsl.ts +34 -0
- package/src/wgsl/orient-flags.wgsl.ts +20 -0
- package/src/wgsl/run-flags.wgsl.ts +17 -0
- package/src/wgsl/tri-intersect.wgsl.ts +63 -0
- package/dist/chunks/context-Bi6AhScG.js.map +0 -1
package/src/constants.ts
CHANGED
|
@@ -259,3 +259,56 @@ export const BEAMER_BETA = 24;
|
|
|
259
259
|
export const SSSP_DELTA_FACTOR = 32;
|
|
260
260
|
/** The bit pattern of +Infinity, the unreached sentinel of `dist` (P8 PD-9); interpolated into the prelude as `F32_INF_BITS` so no body types the literal. */
|
|
261
261
|
export const F32_INF_BITS = 0x7f800000;
|
|
262
|
+
/** Design 8.4 "k planned from maxBufferSize and a 25% budget": the share of `maxBufferSize` one betweenness source batch may hold. WebGPU exposes no device memory size, so this is a fraction of the largest buffer, not a memory measurement. */
|
|
263
|
+
export const BC_BATCH_BUDGET_FRACTION = 0.25;
|
|
264
|
+
/** Design 10.1's betweenness column: the most sources one betweenness batch runs together. */
|
|
265
|
+
export const BC_MAX_BATCH = 64;
|
|
266
|
+
/** 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. */
|
|
267
|
+
export const BC_EDGE_PARALLEL_GAMMA = 2;
|
|
268
|
+
/** Backward-pass levels recorded per submit: each level is one dispatch with its own parameter record, so this bounds the uniform ring. */
|
|
269
|
+
export const BC_BACKWARD_LEVELS_PER_SUBMIT = 64;
|
|
270
|
+
/**
|
|
271
|
+
* Design 8.7: all-pairs shortest paths is a blocked Floyd-Warshall over `APSP_TILE x APSP_TILE` tiles. One tile of
|
|
272
|
+
* f32 is 4 KiB of workgroup memory and a workgroup stages at most two (8 KiB), inside the 16 KiB
|
|
273
|
+
* `maxComputeWorkgroupStorageSize` every WebGPU device reports. Interpolated into the prelude as `APSP_TILE`.
|
|
274
|
+
*/
|
|
275
|
+
export const APSP_TILE = 32;
|
|
276
|
+
/**
|
|
277
|
+
* The blocked sweep records `3 x ceil(n / APSP_TILE)` dispatches (543 at the 5,792-node ceiling of a 128 MiB binding,
|
|
278
|
+
* 2,175 at a 2 GiB binding's 23,170, 3,072 at a 4 GiB binding's 32,767); above this many the driver splits the sweep
|
|
279
|
+
* into further submits. No binding offered today reaches it, so every sweep is one submit; the cap only stops a
|
|
280
|
+
* device with a binding above 4 GiB (`maxStorageBufferBindingSize` is a GPUSize64) from building one unbounded
|
|
281
|
+
* command buffer.
|
|
282
|
+
*/
|
|
283
|
+
export const APSP_MAX_DISPATCHES_PER_SUBMIT = 4096;
|
|
284
|
+
/**
|
|
285
|
+
* Label propagation (design 8.6): passes recorded per submit, with ONE readback of the per-pass changed counts at the
|
|
286
|
+
* end of the submit. A readback costs about 2 ms in Chromium whatever it carries, so at one readback per pass a
|
|
287
|
+
* 10,000-node call spends more on synchronisation than the CPU spends on the whole algorithm
|
|
288
|
+
* (design/decisions/2026-09-26-which-algorithms-earn-the-gpu.md: 101 passes x 2 ms, 0.79x); eight passes per
|
|
289
|
+
* submit is the floor that decision sets. Even, so every submit holds as many descending as ascending passes of the
|
|
290
|
+
* alternating direction rule.
|
|
291
|
+
*/
|
|
292
|
+
export const LABEL_PROP_PASSES_PER_SUBMIT = 8;
|
|
293
|
+
/**
|
|
294
|
+
* Boruvka's minimum spanning tree (design 8.5): rounds recorded per submit, with one readback of the counters block
|
|
295
|
+
* per submit. Each readback is a device-to-host synchronisation that costs about 2 ms in Chromium, and at one per
|
|
296
|
+
* round the syncs are 61 % of the 100,000-node call; four rounds per submit amortise them over O(log n) rounds, moving
|
|
297
|
+
* the Chromium crossover from 6,000 to 4,600 nodes (design/decisions/2026-09-26-which-algorithms-earn-the-gpu.md).
|
|
298
|
+
* Declared ahead of the minimum-spanning-tree driver, which reads it when it lands.
|
|
299
|
+
*/
|
|
300
|
+
export const BORUVKA_ROUNDS_PER_SUBMIT = 4;
|
|
301
|
+
/** The per-row group-by-key (design 8.6): a row of at most this many arcs is grouped by one thread in registers; a longer row by a workgroup over a global open-addressing region. */
|
|
302
|
+
export const GROUP_ROW_THREAD_MAX = 32;
|
|
303
|
+
/** The largest row the thread tier accepts when a caller forces the tier: its pairwise scan is about d^2 / 2 loop steps, and llvmpipe stops every loop of an invocation after 65,535 steps in total. */
|
|
304
|
+
export const GROUP_ROW_THREAD_LIMIT = 128;
|
|
305
|
+
/**
|
|
306
|
+
* The most parallel arcs the simple symmetric graph build merges into one weighted arc. The merge sums each run of
|
|
307
|
+
* parallel arcs in one invocation, and llvmpipe stops every loop of an invocation after 65,535 steps in total and
|
|
308
|
+
* then quietly returns a short sum; a weighted build whose pair repeats more often is refused on every adapter.
|
|
309
|
+
*/
|
|
310
|
+
export const PARALLEL_MERGE_LIMIT = 65_000;
|
|
311
|
+
/** The per-row group-by-key (design 8.6): the global open-addressing region of a workgroup-tier row holds this many slots per arc. */
|
|
312
|
+
export const GROUP_HASH_LOAD_FACTOR = 2;
|
|
313
|
+
/** Triangle counting (design 8.5): intersect two oriented rows by merge, but binary-search each element of the shorter row into the longer when their lengths differ by more than this factor. */
|
|
314
|
+
export const TRIANGLE_BINARY_SEARCH_RATIO = 32;
|
package/src/index.ts
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* (Lease, CommandBatch, UniformRing are internal). P3 adds the layout factory, the accelerator, the two default
|
|
10
10
|
* tables, the seeder and the layout / accelerator types. P5 adds the two factories, the two default tables and the
|
|
11
11
|
* two stats records. P4 adds calibrateLayout and its two records. P8 adds the four traversals and their three result
|
|
12
|
-
* records.
|
|
12
|
+
* records. All-pairs shortest paths (design 8.7) adds allPairsShortestPath and its result and option records.
|
|
13
|
+
* test/index.test.ts pins the value list and
|
|
13
14
|
* test/types/public-api.test-d.ts the type list. This comment must never spell the internal
|
|
14
15
|
* JSDoc tag: it is the leading comment of the first export statement, and stripInternal would drop that statement
|
|
15
16
|
* from the emitted declarations.
|
|
@@ -57,10 +58,17 @@ export { eigenvectorCentrality, hits, katzCentrality } from "./algorithms/spectr
|
|
|
57
58
|
|
|
58
59
|
// ==================== algorithms (P8: the frontier family, spec 3.3 lines 807-810, 8.4; the seam's option types in)
|
|
59
60
|
export { bellmanFord } from "./algorithms/bellman-ford.js";
|
|
61
|
+
export { betweennessCentrality, edgeBetweennessCentrality } from "./algorithms/betweenness.js";
|
|
60
62
|
export { breadthFirstSearch } from "./algorithms/bfs.js";
|
|
61
63
|
export { closenessCentrality } from "./algorithms/closeness.js";
|
|
62
64
|
export { sssp } from "./algorithms/sssp.js";
|
|
63
65
|
|
|
66
|
+
// ==================== algorithms (all-pairs shortest paths, design 3.3 line 813, 8.7)
|
|
67
|
+
export { allPairsShortestPath } from "./algorithms/all-pairs.js";
|
|
68
|
+
// ==================== algorithms (P11: structure and community, design 3.3 lines 806-807, 8.5, 8.6)
|
|
69
|
+
export { labelPropagation } from "./algorithms/label-propagation.js";
|
|
70
|
+
export { triangleCount } from "./algorithms/triangles.js";
|
|
71
|
+
|
|
64
72
|
// ==================== layouts and the accelerator (P3; the two P5 factories; P4's calibrateLayout, spec 2.2)
|
|
65
73
|
export { createAccelerator } from "./accelerator.js";
|
|
66
74
|
export { calibrateLayout } from "./layouts/calibrate.js";
|
|
@@ -79,6 +87,8 @@ export type {
|
|
|
79
87
|
BetweennessAcceleratorOptions,
|
|
80
88
|
BfsOptions,
|
|
81
89
|
BfsResultLike,
|
|
90
|
+
ClosenessAcceleratorOptions,
|
|
91
|
+
ClosenessResultLike,
|
|
82
92
|
CommunityResultLike,
|
|
83
93
|
CorenessResultLike,
|
|
84
94
|
EdgeScoresResultLike,
|
|
@@ -97,12 +107,21 @@ export type {
|
|
|
97
107
|
|
|
98
108
|
// ==================== types: the P8 traversal results (spec 3.3 lines 830-832, 9.7); the option types are the seam's
|
|
99
109
|
// BfsOptions / SsspOptions / HitsOptionsLike above (P8 PD-19)
|
|
110
|
+
export type { LabelPropagationOptions } from "./types/community.js";
|
|
111
|
+
export type { GpuTriangleResult } from "./types/structure.js";
|
|
100
112
|
export type { GpuBellmanFordResult, GpuBfsResult, GpuSsspResult } from "./types/traversal.js";
|
|
101
113
|
|
|
114
|
+
// ==================== types: the betweenness results (spec 3.3 lines 833-834); the option type is the seam's
|
|
115
|
+
// BetweennessAcceleratorOptions above
|
|
116
|
+
export type { GpuBetweennessResult, GpuEdgeScoresResult } from "./types/betweenness.js";
|
|
117
|
+
// ==================== types: all-pairs shortest paths (design 3.3 line 835)
|
|
118
|
+
export type { ApspOptions, GpuApspResult } from "./types/all-pairs.js";
|
|
119
|
+
|
|
102
120
|
// ==================== types: the P7 algorithm results and option records (spec 3.3 lines 815-828, 9.7)
|
|
103
121
|
export type {
|
|
104
122
|
ComponentsOptions,
|
|
105
123
|
EigenvectorOptions,
|
|
124
|
+
GpuClosenessResult,
|
|
106
125
|
GpuHitsResult,
|
|
107
126
|
GpuLabelResult,
|
|
108
127
|
GpuPageRankResult,
|
package/src/kernel/prelude.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { INVALID_INDEX } from "@graphty/graph-format";
|
|
13
13
|
|
|
14
14
|
import {
|
|
15
|
+
APSP_TILE,
|
|
15
16
|
EXACT_TILES_PER_PASS,
|
|
16
17
|
F32_INF_BITS,
|
|
17
18
|
FA2_COINCIDENT_SQ,
|
|
@@ -24,8 +25,10 @@ import {
|
|
|
24
25
|
GRID_BBOX_MARGIN,
|
|
25
26
|
GRID_EXTENT_FLOOR,
|
|
26
27
|
GRID_HUB_CELL,
|
|
28
|
+
GROUP_HASH_LOAD_FACTOR,
|
|
27
29
|
MAX_WORKGROUPS_PER_DIM,
|
|
28
30
|
RADIX_BINS,
|
|
31
|
+
TRIANGLE_BINARY_SEARCH_RATIO,
|
|
29
32
|
U32_MAX,
|
|
30
33
|
WORKGROUP_SIZE,
|
|
31
34
|
} from "../constants.js";
|
|
@@ -68,6 +71,9 @@ const GRID_EXTENT_FLOOR: f32 = ${wgslF32Literal(GRID_EXTENT_FLOOR)};
|
|
|
68
71
|
const GRID_BBOX_MARGIN: f32 = ${wgslF32Literal(GRID_BBOX_MARGIN)};
|
|
69
72
|
const RADIX_BINS: u32 = ${RADIX_BINS}u;
|
|
70
73
|
const RADIX_DIGIT_MASK: u32 = ${RADIX_BINS - 1}u;
|
|
74
|
+
const APSP_TILE: u32 = ${APSP_TILE}u;
|
|
75
|
+
const GROUP_HASH_LOAD_FACTOR: u32 = ${GROUP_HASH_LOAD_FACTOR}u;
|
|
76
|
+
const TRIANGLE_BINARY_SEARCH_RATIO: u32 = ${TRIANGLE_BINARY_SEARCH_RATIO}u;
|
|
71
77
|
const F32_MAX: f32 = 0x1.fffffep+127;
|
|
72
78
|
override WG: u32 = ${WORKGROUP_SIZE}u;
|
|
73
79
|
override USE_PERM: bool = false;
|