graphwise 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/{adjacency-map-D-Ul7V1r.js → adjacency-map-BtKzcuJq.js} +1 -1
  2. package/dist/{adjacency-map-D-Ul7V1r.js.map → adjacency-map-BtKzcuJq.js.map} +1 -1
  3. package/dist/{adjacency-map-B6wPtmaq.cjs → adjacency-map-JqBnMNkF.cjs} +1 -1
  4. package/dist/{adjacency-map-B6wPtmaq.cjs.map → adjacency-map-JqBnMNkF.cjs.map} +1 -1
  5. package/dist/async/index.cjs +2 -2
  6. package/dist/async/index.js +2 -2
  7. package/dist/expansion/index.cjs +1 -1
  8. package/dist/expansion/index.js +1 -1
  9. package/dist/{expansion-sldRognt.js → expansion-ClDhlMK8.js} +4 -4
  10. package/dist/{expansion-sldRognt.js.map → expansion-ClDhlMK8.js.map} +1 -1
  11. package/dist/{expansion-FkmEYlrQ.cjs → expansion-DaTroIyv.cjs} +4 -4
  12. package/dist/{expansion-FkmEYlrQ.cjs.map → expansion-DaTroIyv.cjs.map} +1 -1
  13. package/dist/extraction/index.cjs +1 -1
  14. package/dist/extraction/index.js +1 -1
  15. package/dist/gpu/csr.d.ts +29 -30
  16. package/dist/gpu/csr.d.ts.map +1 -1
  17. package/dist/gpu/dispatch.d.ts +31 -0
  18. package/dist/gpu/dispatch.d.ts.map +1 -0
  19. package/dist/gpu/dispatch.unit.test.d.ts +5 -0
  20. package/dist/gpu/dispatch.unit.test.d.ts.map +1 -0
  21. package/dist/gpu/index.cjs +15 -410
  22. package/dist/gpu/index.d.ts +3 -1
  23. package/dist/gpu/index.d.ts.map +1 -1
  24. package/dist/gpu/index.js +2 -400
  25. package/dist/gpu/kernels/bfs/kernel.d.ts +59 -0
  26. package/dist/gpu/kernels/bfs/kernel.d.ts.map +1 -0
  27. package/dist/gpu/kernels/bfs/logic.d.ts +47 -0
  28. package/dist/gpu/kernels/bfs/logic.d.ts.map +1 -0
  29. package/dist/gpu/kernels/bfs/logic.unit.test.d.ts +2 -0
  30. package/dist/gpu/kernels/bfs/logic.unit.test.d.ts.map +1 -0
  31. package/dist/gpu/kernels/degree-histogram/kernel.d.ts +32 -0
  32. package/dist/gpu/kernels/degree-histogram/kernel.d.ts.map +1 -0
  33. package/dist/gpu/kernels/degree-histogram/logic.d.ts +45 -0
  34. package/dist/gpu/kernels/degree-histogram/logic.d.ts.map +1 -0
  35. package/dist/gpu/kernels/degree-histogram/logic.unit.test.d.ts +2 -0
  36. package/dist/gpu/kernels/degree-histogram/logic.unit.test.d.ts.map +1 -0
  37. package/dist/gpu/kernels/jaccard/kernel.d.ts +40 -0
  38. package/dist/gpu/kernels/jaccard/kernel.d.ts.map +1 -0
  39. package/dist/gpu/kernels/jaccard/logic.d.ts +43 -0
  40. package/dist/gpu/kernels/jaccard/logic.d.ts.map +1 -0
  41. package/dist/gpu/kernels/jaccard/logic.unit.test.d.ts +2 -0
  42. package/dist/gpu/kernels/jaccard/logic.unit.test.d.ts.map +1 -0
  43. package/dist/gpu/kernels/pagerank/kernel.d.ts +44 -0
  44. package/dist/gpu/kernels/pagerank/kernel.d.ts.map +1 -0
  45. package/dist/gpu/kernels/pagerank/logic.d.ts +50 -0
  46. package/dist/gpu/kernels/pagerank/logic.d.ts.map +1 -0
  47. package/dist/gpu/kernels/pagerank/logic.unit.test.d.ts +2 -0
  48. package/dist/gpu/kernels/pagerank/logic.unit.test.d.ts.map +1 -0
  49. package/dist/gpu/kernels/spmv/kernel.d.ts +43 -0
  50. package/dist/gpu/kernels/spmv/kernel.d.ts.map +1 -0
  51. package/dist/gpu/kernels/spmv/logic.d.ts +31 -0
  52. package/dist/gpu/kernels/spmv/logic.d.ts.map +1 -0
  53. package/dist/gpu/kernels/spmv/logic.unit.test.d.ts +2 -0
  54. package/dist/gpu/kernels/spmv/logic.unit.test.d.ts.map +1 -0
  55. package/dist/gpu/operations.d.ts +76 -0
  56. package/dist/gpu/operations.d.ts.map +1 -0
  57. package/dist/gpu/operations.unit.test.d.ts +5 -0
  58. package/dist/gpu/operations.unit.test.d.ts.map +1 -0
  59. package/dist/gpu/root.d.ts +53 -0
  60. package/dist/gpu/root.d.ts.map +1 -0
  61. package/dist/gpu/root.unit.test.d.ts +2 -0
  62. package/dist/gpu/root.unit.test.d.ts.map +1 -0
  63. package/dist/gpu/types.d.ts +3 -8
  64. package/dist/gpu/types.d.ts.map +1 -1
  65. package/dist/gpu-CHiCN0wa.js +16945 -0
  66. package/dist/gpu-CHiCN0wa.js.map +1 -0
  67. package/dist/gpu-Y6owRVMi.cjs +17028 -0
  68. package/dist/gpu-Y6owRVMi.cjs.map +1 -0
  69. package/dist/graph/index.cjs +1 -1
  70. package/dist/graph/index.js +1 -1
  71. package/dist/index/index.cjs +18 -15
  72. package/dist/index/index.js +10 -10
  73. package/dist/{jaccard-Yddrtt5D.js → jaccard-3rCdilwm.js} +2 -2
  74. package/dist/{jaccard-Yddrtt5D.js.map → jaccard-3rCdilwm.js.map} +1 -1
  75. package/dist/{jaccard-Bmd1IEFO.cjs → jaccard-Bys9_dGW.cjs} +2 -2
  76. package/dist/{jaccard-Bmd1IEFO.cjs.map → jaccard-Bys9_dGW.cjs.map} +1 -1
  77. package/dist/{kmeans-D3yX5QFs.cjs → kmeans-B8x9D1kt.cjs} +1 -1
  78. package/dist/{kmeans-D3yX5QFs.cjs.map → kmeans-B8x9D1kt.cjs.map} +1 -1
  79. package/dist/{kmeans-DVCe61Me.js → kmeans-DKkL9rAN.js} +1 -1
  80. package/dist/{kmeans-DVCe61Me.js.map → kmeans-DKkL9rAN.js.map} +1 -1
  81. package/dist/{ops-4nmI-pwk.cjs → ops-djAsQQSh.cjs} +2 -2
  82. package/dist/{ops-4nmI-pwk.cjs.map → ops-djAsQQSh.cjs.map} +1 -1
  83. package/dist/{ops-Zsu4ecEG.js → ops-upIi6JIi.js} +2 -2
  84. package/dist/{ops-Zsu4ecEG.js.map → ops-upIi6JIi.js.map} +1 -1
  85. package/dist/{priority-queue-ChVLoG6T.cjs → priority-queue-BIiD1L0k.cjs} +1 -1
  86. package/dist/{priority-queue-ChVLoG6T.cjs.map → priority-queue-BIiD1L0k.cjs.map} +1 -1
  87. package/dist/{priority-queue-DqCuFTR8.js → priority-queue-CFDd5cBg.js} +1 -1
  88. package/dist/{priority-queue-DqCuFTR8.js.map → priority-queue-CFDd5cBg.js.map} +1 -1
  89. package/dist/ranking/index.cjs +2 -2
  90. package/dist/ranking/index.js +2 -2
  91. package/dist/ranking/mi/index.cjs +2 -2
  92. package/dist/ranking/mi/index.js +2 -2
  93. package/dist/{ranking-mUm9rV-C.js → ranking-3ez5m67U.js} +2 -2
  94. package/dist/{ranking-mUm9rV-C.js.map → ranking-3ez5m67U.js.map} +1 -1
  95. package/dist/{ranking-riRrEVAR.cjs → ranking-DVvajgUZ.cjs} +2 -2
  96. package/dist/{ranking-riRrEVAR.cjs.map → ranking-DVvajgUZ.cjs.map} +1 -1
  97. package/dist/seeds/index.cjs +1 -1
  98. package/dist/seeds/index.js +1 -1
  99. package/dist/structures/index.cjs +1 -1
  100. package/dist/structures/index.js +1 -1
  101. package/dist/utils/index.cjs +1 -1
  102. package/dist/utils/index.js +1 -1
  103. package/dist/{utils-CcIrKAEb.js → utils-BodeE2Mo.js} +1 -1
  104. package/dist/{utils-CcIrKAEb.js.map → utils-BodeE2Mo.js.map} +1 -1
  105. package/dist/{utils-CpyzmzIF.cjs → utils-CDtCcsyF.cjs} +1 -1
  106. package/dist/{utils-CpyzmzIF.cjs.map → utils-CDtCcsyF.cjs.map} +1 -1
  107. package/package.json +3 -1
  108. package/dist/gpu/context.d.ts +0 -118
  109. package/dist/gpu/context.d.ts.map +0 -1
  110. package/dist/gpu/context.unit.test.d.ts +0 -2
  111. package/dist/gpu/context.unit.test.d.ts.map +0 -1
  112. package/dist/gpu/index.cjs.map +0 -1
  113. package/dist/gpu/index.js.map +0 -1
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Pure CPU implementation of batch Jaccard similarity.
3
+ *
4
+ * Computes Jaccard coefficient for multiple node pairs in parallel:
5
+ * J(u, v) = |N(u) ∩ N(v)| / |N(u) ∪ N(v)|
6
+ *
7
+ * This is the CPU reference implementation extracted from the WGSL kernel.
8
+ * Uses binary search optimisation: iterate smaller neighbourhood, search in larger.
9
+ *
10
+ * @module gpu/kernels/jaccard/logic
11
+ */
12
+ /**
13
+ * Binary search in a sorted subarray of colIndices.
14
+ *
15
+ * @param colIndices - CSR column indices array (must be sorted per row)
16
+ * @param start - Start index (inclusive)
17
+ * @param end - End index (exclusive)
18
+ * @param target - Value to search for
19
+ * @returns true if target is found between colIndices[start] and colIndices[end-1]
20
+ */
21
+ export declare function binarySearch(colIndices: Uint32Array, start: number, end: number, target: number): boolean;
22
+ /**
23
+ * Compute Jaccard similarity for a single pair of nodes in CSR format.
24
+ *
25
+ * Neighbours must be sorted (CSR guarantees this from graphToCSR).
26
+ *
27
+ * @param rowOffsets - CSR row offset array
28
+ * @param colIndices - CSR column indices array
29
+ * @param u - First node index
30
+ * @param v - Second node index
31
+ * @returns Jaccard coefficient in [0, 1]
32
+ */
33
+ export declare function jaccardPair(rowOffsets: Uint32Array, colIndices: Uint32Array, u: number, v: number): number;
34
+ /**
35
+ * Batch Jaccard similarity for multiple node pairs.
36
+ *
37
+ * @param rowOffsets - CSR row offset array
38
+ * @param colIndices - CSR column indices array
39
+ * @param pairs - Array of [u, v] node index pairs
40
+ * @returns Float32Array of Jaccard coefficients, one per pair
41
+ */
42
+ export declare function jaccardBatch(rowOffsets: Uint32Array, colIndices: Uint32Array, pairs: readonly (readonly [number, number])[]): Float32Array;
43
+ //# sourceMappingURL=logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../../src/gpu/kernels/jaccard/logic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC3B,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACZ,OAAO,CAkBT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAC1B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACP,MAAM,CAsCR;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC3B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,GAC3C,YAAY,CAYd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logic.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.unit.test.d.ts","sourceRoot":"","sources":["../../../../src/gpu/kernels/jaccard/logic.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import { d, StorageFlag, TgpuBuffer } from 'typegpu';
2
+ import { TypedBufferGroup } from '../../csr';
3
+ import { GraphwiseGPURoot } from '../../root';
4
+ /**
5
+ * Bind group layout for PageRank kernel.
6
+ */
7
+ declare const PageRankLayout: import('typegpu').TgpuBindGroupLayout<{
8
+ rowOffsets: {
9
+ storage: (elementCount: number) => d.WgslArray<d.U32>;
10
+ };
11
+ colIndices: {
12
+ storage: (elementCount: number) => d.WgslArray<d.U32>;
13
+ };
14
+ ranks: {
15
+ storage: (elementCount: number) => d.WgslArray<d.F32>;
16
+ };
17
+ outDegrees: {
18
+ storage: (elementCount: number) => d.WgslArray<d.U32>;
19
+ };
20
+ newRanks: {
21
+ storage: (elementCount: number) => d.WgslArray<d.F32>;
22
+ access: "mutable";
23
+ };
24
+ nodeCount: {
25
+ uniform: d.U32;
26
+ };
27
+ damping: {
28
+ uniform: d.F32;
29
+ };
30
+ }>;
31
+ /**
32
+ * Dispatch one PageRank iteration on GPU.
33
+ *
34
+ * @param root - TypeGPU root instance
35
+ * @param csrBuffers - CSR matrix as typed buffers (transpose graph: in-edges)
36
+ * @param ranks - Current rank values buffer
37
+ * @param outDegrees - Out-degree buffer for each node
38
+ * @param newRanks - Output buffer for new rank values (mutable)
39
+ * @param nodeCount - Number of nodes
40
+ * @param damping - Damping factor (typically 0.85)
41
+ */
42
+ export declare function dispatchPagerank(root: GraphwiseGPURoot, csrBuffers: TypedBufferGroup, ranks: TgpuBuffer<ReturnType<typeof d.arrayOf<typeof d.f32>>> & StorageFlag, outDegrees: TgpuBuffer<ReturnType<typeof d.arrayOf<typeof d.u32>>> & StorageFlag, newRanks: TgpuBuffer<ReturnType<typeof d.arrayOf<typeof d.f32>>> & StorageFlag, nodeCount: number, damping: number): void;
43
+ export { PageRankLayout };
44
+ //# sourceMappingURL=kernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../../../src/gpu/kernels/pagerank/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAa,EAAE,CAAC,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;EAQlB,CAAC;AA8BH;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,EAC3E,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GACjE,WAAW,EACZ,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAC/D,WAAW,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACb,IAAI,CAiBN;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Pure CPU implementation of PageRank power iteration.
3
+ *
4
+ * Computes one iteration of PageRank:
5
+ * r(v) = (1 - d)/N + d * sum(r(u) / deg_out(u)) for u -> v
6
+ *
7
+ * This is the CPU reference implementation extracted from the WGSL kernel.
8
+ * The CSR stores the transpose graph (in-edges as rows).
9
+ *
10
+ * @module gpu/kernels/pagerank/logic
11
+ */
12
+ /**
13
+ * Compute one node's PageRank contribution from its incoming neighbours.
14
+ *
15
+ * @param rowOffsets - CSR row offset array (transpose graph: in-edges)
16
+ * @param colIndices - CSR column indices array
17
+ * @param ranks - Current rank values
18
+ * @param outDegrees - Out-degree for each node
19
+ * @param node - Node index to compute
20
+ * @param damping - Damping factor (typically 0.85)
21
+ * @param n - Total number of nodes
22
+ * @returns New rank for this node
23
+ */
24
+ export declare function pagerankNode(rowOffsets: Uint32Array, colIndices: Uint32Array, ranks: Float32Array, outDegrees: Uint32Array, node: number, damping: number, n: number): number;
25
+ /**
26
+ * Full PageRank power iteration: compute new ranks from current ranks.
27
+ *
28
+ * @param rowOffsets - CSR row offset array (transpose graph)
29
+ * @param colIndices - CSR column indices array
30
+ * @param ranks - Current rank values (will be read, not modified)
31
+ * @param outDegrees - Out-degree for each node
32
+ * @param damping - Damping factor (typically 0.85)
33
+ * @param n - Total number of nodes
34
+ * @returns New rank values after one iteration
35
+ */
36
+ export declare function pagerankIteration(rowOffsets: Uint32Array, colIndices: Uint32Array, ranks: Float32Array, outDegrees: Uint32Array, damping: number, n: number): Float32Array;
37
+ /**
38
+ * Run multiple PageRank iterations until convergence or maxIterations.
39
+ *
40
+ * @param rowOffsets - CSR row offset array (transpose graph)
41
+ * @param colIndices - CSR column indices array
42
+ * @param outDegrees - Out-degree for each node
43
+ * @param n - Total number of nodes
44
+ * @param damping - Damping factor (default: 0.85)
45
+ * @param maxIterations - Maximum iterations (default: 100)
46
+ * @param tolerance - Convergence tolerance (default: 1e-6)
47
+ * @returns Final rank values
48
+ */
49
+ export declare function pagerank(rowOffsets: Uint32Array, colIndices: Uint32Array, outDegrees: Uint32Array, n: number, damping?: number, maxIterations?: number, tolerance?: number): Float32Array;
50
+ //# sourceMappingURL=logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../../src/gpu/kernels/pagerank/logic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC3B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,WAAW,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,GACP,MAAM,CAgBR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAChC,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,GACP,YAAY,CAgBd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACvB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,CAAC,EAAE,MAAM,EACT,OAAO,GAAE,MAAwB,EACjC,aAAa,GAAE,MAA+B,EAC9C,SAAS,GAAE,MAA0B,GACnC,YAAY,CA4Bd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logic.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.unit.test.d.ts","sourceRoot":"","sources":["../../../../src/gpu/kernels/pagerank/logic.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ import { d, StorageFlag, TgpuBuffer } from 'typegpu';
2
+ import { TypedBufferGroup } from '../../csr';
3
+ import { GraphwiseGPURoot } from '../../root';
4
+ /**
5
+ * Bind group layout for SpMV kernel.
6
+ */
7
+ declare const SpMVLayout: import('typegpu').TgpuBindGroupLayout<{
8
+ rowOffsets: {
9
+ storage: (elementCount: number) => d.WgslArray<d.U32>;
10
+ };
11
+ colIndices: {
12
+ storage: (elementCount: number) => d.WgslArray<d.U32>;
13
+ };
14
+ values: {
15
+ storage: (elementCount: number) => d.WgslArray<d.F32>;
16
+ };
17
+ x: {
18
+ storage: (elementCount: number) => d.WgslArray<d.F32>;
19
+ };
20
+ y: {
21
+ storage: (elementCount: number) => d.WgslArray<d.F32>;
22
+ access: "mutable";
23
+ };
24
+ nodeCount: {
25
+ uniform: d.U32;
26
+ };
27
+ hasValues: {
28
+ uniform: d.U32;
29
+ };
30
+ }>;
31
+ /**
32
+ * Dispatch SpMV on GPU.
33
+ *
34
+ * @param root - TypeGPU root instance
35
+ * @param csrBuffers - CSR matrix as typed buffers
36
+ * @param x - Input vector buffer
37
+ * @param y - Output vector buffer (mutable)
38
+ * @param nodeCount - Number of nodes/rows
39
+ * @param hasValues - Whether edge weights are present
40
+ */
41
+ export declare function dispatchSpmv(root: GraphwiseGPURoot, csrBuffers: TypedBufferGroup, x: TgpuBuffer<ReturnType<typeof d.arrayOf<typeof d.f32>>> & StorageFlag, y: TgpuBuffer<ReturnType<typeof d.arrayOf<typeof d.f32>>> & StorageFlag, nodeCount: number, hasValues: boolean): void;
42
+ export { SpMVLayout };
43
+ //# sourceMappingURL=kernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../../../src/gpu/kernels/spmv/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAa,EAAE,CAAC,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;EAQd,CAAC;AAyBH;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,gBAAgB,EACtB,UAAU,EAAE,gBAAgB,EAC5B,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,EACvE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,EACvE,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,GAChB,IAAI,CA8BN;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Pure CPU implementation of Sparse Matrix-Vector Multiplication (SpMV).
3
+ *
4
+ * Computes y = A * x where A is a sparse matrix in CSR format.
5
+ * This is the CPU reference implementation extracted from the WGSL kernel.
6
+ *
7
+ * @module gpu/kernels/spmv/logic
8
+ */
9
+ /**
10
+ * Compute one row of SpMV: dot product of CSR row with vector x.
11
+ *
12
+ * @param rowOffsets - CSR row offset array
13
+ * @param colIndices - CSR column indices array
14
+ * @param values - Optional edge weights (undefined for unweighted)
15
+ * @param x - Input vector
16
+ * @param row - Row index to compute
17
+ * @returns Dot product for this row
18
+ */
19
+ export declare function spmvRow(rowOffsets: Uint32Array, colIndices: Uint32Array, values: Float32Array | undefined, x: Float32Array, row: number): number;
20
+ /**
21
+ * Full SpMV: y = A * x where A is in CSR format.
22
+ *
23
+ * @param rowOffsets - CSR row offset array (length: nodeCount + 1)
24
+ * @param colIndices - CSR column indices array
25
+ * @param values - Optional edge weights (undefined for unweighted)
26
+ * @param x - Input vector (length: nodeCount)
27
+ * @param nodeCount - Number of nodes/rows
28
+ * @returns Output vector y (length: nodeCount)
29
+ */
30
+ export declare function spmv(rowOffsets: Uint32Array, colIndices: Uint32Array, values: Float32Array | undefined, x: Float32Array, nodeCount: number): Float32Array;
31
+ //# sourceMappingURL=logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../../src/gpu/kernels/spmv/logic.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACtB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,CAAC,EAAE,YAAY,EACf,GAAG,EAAE,MAAM,GACT,MAAM,CAaR;AAED;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CACnB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,CAAC,EAAE,YAAY,EACf,SAAS,EAAE,MAAM,GACf,YAAY,CAQd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logic.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.unit.test.d.ts","sourceRoot":"","sources":["../../../../src/gpu/kernels/spmv/logic.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ import { NodeData, EdgeData, NodeId, ReadableGraph } from '../graph';
2
+ import { ComputeResult, GPUComputeOptions } from './types';
3
+ /**
4
+ * Degree statistics from histogram computation.
5
+ */
6
+ export interface DegreeStats {
7
+ /** Minimum degree in the graph */
8
+ readonly min: number;
9
+ /** Maximum degree in the graph */
10
+ readonly max: number;
11
+ /** Average degree */
12
+ readonly mean: number;
13
+ /** Histogram of degree frequencies (index = degree, value = count) */
14
+ readonly histogram: readonly number[];
15
+ }
16
+ /**
17
+ * Sparse matrix-vector multiply on GPU.
18
+ *
19
+ * Computes y = A * x where A is the graph adjacency matrix in CSR format.
20
+ *
21
+ * @param graph - Input graph
22
+ * @param x - Input vector (must have length = graph.nodeCount)
23
+ * @param options - Compute options (backend, root, signal)
24
+ * @returns Result vector y
25
+ */
26
+ export declare function gpuSpmv<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, x: Float32Array, options?: GPUComputeOptions & {
27
+ signal?: AbortSignal;
28
+ }): Promise<ComputeResult<Float32Array>>;
29
+ /**
30
+ * PageRank via GPU-accelerated power iteration.
31
+ *
32
+ * @param graph - Input graph (will be converted to transpose CSR for in-edges)
33
+ * @param options - Compute options plus damping factor and iteration count
34
+ * @returns PageRank scores for each node
35
+ */
36
+ export declare function gpuPageRank<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, options?: GPUComputeOptions & {
37
+ damping?: number;
38
+ iterations?: number;
39
+ signal?: AbortSignal;
40
+ }): Promise<ComputeResult<Float32Array>>;
41
+ /**
42
+ * Batch Jaccard similarity for node pairs on GPU.
43
+ *
44
+ * @param graph - Input graph
45
+ * @param pairs - Array of [u, v] node ID pairs
46
+ * @param options - Compute options
47
+ * @returns Jaccard coefficients for each pair
48
+ */
49
+ export declare function gpuJaccardBatch<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, pairs: readonly [NodeId, NodeId][], options?: GPUComputeOptions & {
50
+ signal?: AbortSignal;
51
+ }): Promise<ComputeResult<Float32Array>>;
52
+ /**
53
+ * BFS level assignment from source node on GPU.
54
+ *
55
+ * Note: Full GPU BFS requires atomics not yet available in TypeGPU.
56
+ * This implementation uses CPU for now but maintains the API.
57
+ *
58
+ * @param graph - Input graph
59
+ * @param source - Source node ID
60
+ * @param options - Compute options
61
+ * @returns BFS level for each node (-1 for unreachable)
62
+ */
63
+ export declare function gpuBfsLevels<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, source: NodeId, options?: GPUComputeOptions & {
64
+ signal?: AbortSignal;
65
+ }): Promise<ComputeResult<Int32Array>>;
66
+ /**
67
+ * Degree histogram and statistics on GPU.
68
+ *
69
+ * @param graph - Input graph
70
+ * @param options - Compute options
71
+ * @returns Degree statistics with histogram
72
+ */
73
+ export declare function gpuDegreeHistogram<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, options?: GPUComputeOptions & {
74
+ signal?: AbortSignal;
75
+ }): Promise<ComputeResult<DegreeStats>>;
76
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/gpu/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAUhE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACnE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,CAAC,EAAE,YAAY,EACf,OAAO,CAAC,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACpD,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CA8DtC;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACvE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,iBAAiB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,GACC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CA+FtC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC3E,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAClC,OAAO,CAAC,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACpD,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CA8FtC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACxE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACpD,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAsDpC;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACvC,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,QAAQ,EAElB,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACpD,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CA+ErC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Unit tests for GPU operations.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=operations.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.unit.test.d.ts","sourceRoot":"","sources":["../../src/gpu/operations.unit.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,53 @@
1
+ import { tgpu } from 'typegpu';
2
+ /**
3
+ * Options for initialising the GPU root.
4
+ */
5
+ export interface InitGPUOptions {
6
+ /** Power preference for GPU adapter */
7
+ readonly powerPreference?: "low-power" | "high-performance";
8
+ }
9
+ /**
10
+ * The TypeGPU root instance used for GPU operations.
11
+ * Re-exports TgpuRoot from TypeGPU for convenience.
12
+ */
13
+ export type GraphwiseGPURoot = Awaited<ReturnType<typeof tgpu.init>>;
14
+ /**
15
+ * Initialise a TypeGPU root for GPU compute operations.
16
+ *
17
+ * This wraps tgpu.init() with WebGPU availability checking and
18
+ * simplified options.
19
+ *
20
+ * @param options - Initialisation options
21
+ * @returns Promise resolving to a TypeGPU root instance
22
+ * @throws Error if WebGPU is unavailable or device request fails
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * import { initGPU } from "graphwise/gpu";
27
+ *
28
+ * const root = await initGPU();
29
+ * // Use root for GPU operations...
30
+ * root.destroy();
31
+ * ```
32
+ */
33
+ export declare function initGPU(options?: InitGPUOptions): Promise<GraphwiseGPURoot>;
34
+ /**
35
+ * Create a TypeGPU root from an existing GPU device.
36
+ *
37
+ * Use this when you already have a GPUDevice and want to wrap it
38
+ * with TypeGPU functionality.
39
+ *
40
+ * @param device - Existing GPU device
41
+ * @returns TypeGPU root instance
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * import { initGPUFromDevice } from "graphwise/gpu";
46
+ *
47
+ * const adapter = await navigator.gpu.requestAdapter();
48
+ * const device = await adapter.requestDevice();
49
+ * const root = initGPUFromDevice(device);
50
+ * ```
51
+ */
52
+ export declare function initGPUFromDevice(device: GPUDevice): GraphwiseGPURoot;
53
+ //# sourceMappingURL=root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/gpu/root.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,uCAAuC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,GAAG,kBAAkB,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAErE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,OAAO,CAC5B,OAAO,GAAE,cAAmB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAErE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=root.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.unit.test.d.ts","sourceRoot":"","sources":["../../src/gpu/root.unit.test.ts"],"names":[],"mappings":""}
@@ -1,9 +1,4 @@
1
- /**
2
- * Type definitions for the WebGPU compute backend.
3
- *
4
- * These types define the backend selection options and result types
5
- * for GPU-accelerated graph operations.
6
- */
1
+ import { GraphwiseGPURoot } from './root';
7
2
  /**
8
3
  * Backend selection for compute operations.
9
4
  *
@@ -44,7 +39,7 @@ export interface ComputeResult<T> {
44
39
  export interface GPUComputeOptions {
45
40
  /** Backend selection: 'auto', 'gpu', or 'cpu' */
46
41
  readonly backend?: ComputeBackend;
47
- /** Optional GPU device to reuse (avoids device acquisition overhead) */
48
- readonly device?: GPUDevice;
42
+ /** Optional TypeGPU root to reuse (avoids device acquisition overhead) */
43
+ readonly root?: GraphwiseGPURoot;
49
44
  }
50
45
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gpu/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBAC3B,MAAM,EAAE,MAAM;CAIjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK,CAAC;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAClC,wEAAwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CAC5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gpu/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBAC3B,MAAM,EAAE,MAAM;CAIjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK,CAAC;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACjC"}