@danielsimonjr/mathts-matrix 0.7.1 → 0.7.3

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 (99) hide show
  1. package/dist/backends/Backend.d.ts +146 -0
  2. package/dist/backends/Backend.d.ts.map +1 -0
  3. package/dist/backends/BackendManager.d.ts +189 -0
  4. package/dist/backends/BackendManager.d.ts.map +1 -0
  5. package/dist/backends/GPUBackend.d.ts +128 -0
  6. package/dist/backends/GPUBackend.d.ts.map +1 -0
  7. package/dist/backends/GPUMatrixBackend.d.ts +123 -0
  8. package/dist/backends/GPUMatrixBackend.d.ts.map +1 -0
  9. package/dist/backends/JSBackend.d.ts +93 -0
  10. package/dist/backends/JSBackend.d.ts.map +1 -0
  11. package/dist/backends/ParallelBackend.d.ts +131 -0
  12. package/dist/backends/ParallelBackend.d.ts.map +1 -0
  13. package/dist/backends/WASMBackend.d.ts +156 -0
  14. package/dist/backends/WASMBackend.d.ts.map +1 -0
  15. package/dist/backends/WasmLoader.d.ts +326 -0
  16. package/dist/backends/WasmLoader.d.ts.map +1 -0
  17. package/dist/backends/gpu/BatchExecutor.d.ts +190 -0
  18. package/dist/backends/gpu/BatchExecutor.d.ts.map +1 -0
  19. package/dist/backends/gpu/Sync.d.ts +167 -0
  20. package/dist/backends/gpu/Sync.d.ts.map +1 -0
  21. package/dist/backends/gpu/builtin-shaders.d.ts +178 -0
  22. package/dist/backends/gpu/builtin-shaders.d.ts.map +1 -0
  23. package/dist/backends/gpu/index.d.ts +13 -0
  24. package/dist/backends/gpu/index.d.ts.map +1 -0
  25. package/dist/backends/index.d.ts +18 -0
  26. package/dist/backends/index.d.ts.map +1 -0
  27. package/dist/backends/register-backends.d.ts +18 -0
  28. package/dist/backends/register-backends.d.ts.map +1 -0
  29. package/dist/backends/wasm/detect.d.ts +58 -0
  30. package/dist/backends/wasm/detect.d.ts.map +1 -0
  31. package/dist/backends/wasm/fft-wasm.d.ts +120 -0
  32. package/dist/backends/wasm/fft-wasm.d.ts.map +1 -0
  33. package/dist/backends/wasm/index.d.ts +9 -0
  34. package/dist/backends/wasm/index.d.ts.map +1 -0
  35. package/dist/backends/wasm/integrity.d.ts +18 -0
  36. package/dist/backends/wasm/integrity.d.ts.map +1 -0
  37. package/dist/backends/wasm/resolve.d.ts +12 -0
  38. package/dist/backends/wasm/resolve.d.ts.map +1 -0
  39. package/dist/{chunk-4VMDO6W2.js → chunk-PNKVD2UK.js} +2 -7
  40. package/dist/config.d.ts +145 -0
  41. package/dist/config.d.ts.map +1 -0
  42. package/dist/index.d.ts +14 -3037
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +9 -9
  45. package/dist/{integrity-LIWCCDIJ.js → integrity-IBNQNHXP.js} +1 -1
  46. package/dist/operations/cholesky.d.ts +24 -0
  47. package/dist/operations/cholesky.d.ts.map +1 -0
  48. package/dist/operations/common.d.ts +61 -0
  49. package/dist/operations/common.d.ts.map +1 -0
  50. package/dist/operations/condest.d.ts +27 -0
  51. package/dist/operations/condest.d.ts.map +1 -0
  52. package/dist/operations/eig-wasm.d.ts +35 -0
  53. package/dist/operations/eig-wasm.d.ts.map +1 -0
  54. package/dist/operations/eig.d.ts +75 -0
  55. package/dist/operations/eig.d.ts.map +1 -0
  56. package/dist/operations/expm.d.ts +46 -0
  57. package/dist/operations/expm.d.ts.map +1 -0
  58. package/dist/operations/index.d.ts +21 -0
  59. package/dist/operations/index.d.ts.map +1 -0
  60. package/dist/operations/logm.d.ts +59 -0
  61. package/dist/operations/logm.d.ts.map +1 -0
  62. package/dist/operations/lu.d.ts +51 -0
  63. package/dist/operations/lu.d.ts.map +1 -0
  64. package/dist/operations/pinv.d.ts +36 -0
  65. package/dist/operations/pinv.d.ts.map +1 -0
  66. package/dist/operations/qr-family.d.ts +52 -0
  67. package/dist/operations/qr-family.d.ts.map +1 -0
  68. package/dist/operations/qr-pivoted.d.ts +39 -0
  69. package/dist/operations/qr-pivoted.d.ts.map +1 -0
  70. package/dist/operations/qr.d.ts +35 -0
  71. package/dist/operations/qr.d.ts.map +1 -0
  72. package/dist/operations/schur.d.ts +58 -0
  73. package/dist/operations/schur.d.ts.map +1 -0
  74. package/dist/operations/sqrtm.d.ts +76 -0
  75. package/dist/operations/sqrtm.d.ts.map +1 -0
  76. package/dist/operations/svd-wasm.d.ts +23 -0
  77. package/dist/operations/svd-wasm.d.ts.map +1 -0
  78. package/dist/operations/svd.d.ts +70 -0
  79. package/dist/operations/svd.d.ts.map +1 -0
  80. package/dist/parallel-matrix.d.ts +223 -0
  81. package/dist/parallel-matrix.d.ts.map +1 -0
  82. package/dist/{resolve-DDCEWHWX.js → resolve-2SX6WJ6R.js} +1 -1
  83. package/dist/typed-operations.d.ts +162 -0
  84. package/dist/typed-operations.d.ts.map +1 -0
  85. package/dist/types/DenseMatrix.d.ts +213 -0
  86. package/dist/types/DenseMatrix.d.ts.map +1 -0
  87. package/dist/types/Matrix.d.ts +188 -0
  88. package/dist/types/Matrix.d.ts.map +1 -0
  89. package/dist/types/SparseMatrix.d.ts +214 -0
  90. package/dist/types/SparseMatrix.d.ts.map +1 -0
  91. package/dist/types/dense/arithmetic.d.ts +8 -0
  92. package/dist/types/dense/arithmetic.d.ts.map +1 -0
  93. package/dist/types/dense/reduction.d.ts +8 -0
  94. package/dist/types/dense/reduction.d.ts.map +1 -0
  95. package/dist/types/index.d.ts +9 -0
  96. package/dist/types/index.d.ts.map +1 -0
  97. package/dist/wasm/mathts-as.wasm +0 -0
  98. package/dist/wasm/wasm-manifest.json +1 -1
  99. package/package.json +70 -70
@@ -0,0 +1,326 @@
1
+ /**
2
+ * WASM Loader - Loads and manages WebAssembly modules
3
+ * Provides a bridge between JavaScript/TypeScript and compiled WASM
4
+ *
5
+ * Optimizations:
6
+ * - Singleton pattern with module caching
7
+ * - Streaming compilation in browsers (WebAssembly.instantiateStreaming)
8
+ * - Memory pooling for frequent allocations
9
+ * - Compiled module caching for faster re-instantiation
10
+ * - Configurable size thresholds for JS fallback
11
+ *
12
+ * AssemblyScript managed-runtime allocation
13
+ * -----------------------------------------
14
+ * AssemblyScript is the sole WASM backend (`mathts-as.wasm`); the legacy
15
+ * second toolchain was removed in the WASM-backend migration (complete 2026-06-26).
16
+ *
17
+ * The AS managed runtime allocates buffers via `__new(byteLength, id)` and
18
+ * its typed-array exports expect a 12-byte *header* pointer (id=5 for
19
+ * Float64Array, id=4 for Int32Array). The header holds
20
+ * [dataStart, dataStart, byteLength] in little-endian u32s. The data block
21
+ * (id=1 = ArrayBuffer) is allocated separately; we pin both so the GC can't
22
+ * reclaim them.
23
+ *
24
+ * Callers receive an opaque `Allocation` handle whose `.ptr` is the header
25
+ * pointer to pass to the WASM function and whose `.array` is a JS view over
26
+ * the data region.
27
+ */
28
+ import type { LoadingMetrics } from '@danielsimonjr/mathts-core/internal';
29
+ export type { LoadingMetrics };
30
+ export interface WasmModule {
31
+ multiplyDense: (aPtr: number, aRows: number, aCols: number, bPtr: number, bRows: number, bCols: number, resultPtr: number) => void;
32
+ multiplyDenseSIMD: (aPtr: number, aRows: number, aCols: number, bPtr: number, bRows: number, bCols: number, resultPtr: number) => void;
33
+ multiplyVector: (aPtr: number, aRows: number, aCols: number, xPtr: number, resultPtr: number) => void;
34
+ transpose: (dataPtr: number, rows: number, cols: number, resultPtr: number) => void;
35
+ add: (aPtr: number, bPtr: number, size: number, resultPtr: number) => void;
36
+ subtract: (aPtr: number, bPtr: number, size: number, resultPtr: number) => void;
37
+ scalarMultiply: (aPtr: number, scalar: number, size: number, resultPtr: number) => void;
38
+ dotProduct: (aPtr: number, bPtr: number, size: number) => number;
39
+ luDecomposition: (aPtr: number, n: number, permPtr: number) => number;
40
+ qrDecomposition: (aPtr: number, m: number, n: number, qPtr: number) => void;
41
+ choleskyDecomposition: (aPtr: number, n: number, lPtr: number) => number;
42
+ schur: (aPtr: number, n: number, maxIter: number, tol: number, qPtr: number, tPtr: number, workPtr: number) => number;
43
+ luSolve: (luPtr: number, n: number, permPtr: number, bPtr: number, xPtr: number) => void;
44
+ luDeterminant: (luPtr: number, n: number, permPtr: number) => number;
45
+ laDet: (aPtr: number, n: number, workPtr: number) => number;
46
+ laInv: (aPtr: number, n: number, resultPtr: number, workPtr: number) => number;
47
+ laInv2x2: (aPtr: number, resultPtr: number) => number;
48
+ laInv3x3: (aPtr: number, resultPtr: number) => number;
49
+ laCond1: (aPtr: number, n: number, workPtr: number) => number;
50
+ laCondInf: (aPtr: number, n: number, workPtr: number) => number;
51
+ laKron: (aPtr: number, aRows: number, aCols: number, bPtr: number, bRows: number, bCols: number) => number;
52
+ laDot: (aPtr: number, bPtr: number, n: number) => number;
53
+ laCross: (aPtr: number, bPtr: number) => number;
54
+ laNorm2: (xPtr: number, n: number) => number;
55
+ laSolve: (aPtr: number, bPtr: number, n: number, resultPtr: number, workPtr: number) => number;
56
+ laLsolve: (lPtr: number, bPtr: number, n: number, resultPtr: number) => number;
57
+ laUsolve: (uPtr: number, bPtr: number, n: number, resultPtr: number) => number;
58
+ eigsSymmetric: (matrixPtr: number, n: number, precision: number, eigenvaluesPtr: number, eigenvectorsPtr: number, workPtr: number) => number;
59
+ powerIteration: (matrixPtr: number, n: number, eigenvaluePtr: number, eigenvectorPtr: number, workPtr: number, maxIterations: number, tolerance: number) => number;
60
+ spectralRadius: (matrixPtr: number, n: number, workPtr: number, maxIterations: number, tolerance: number) => number;
61
+ inverseIteration: (matrixPtr: number, n: number, shift: number, eigenvectorPtr: number, workPtr: number, maxIterations: number, tolerance: number) => number;
62
+ balanceMatrix: (matrixPtr: number, n: number, scalePtr: number, transformPtr: number) => void;
63
+ reduceToHessenberg: (matrixPtr: number, n: number, transformPtr: number) => void;
64
+ eigenvalues2x2: (a: number, b: number, c: number, d: number, realPtr: number, imagPtr: number) => void;
65
+ qrIterationStep: (matrixPtr: number, n: number, workPtr: number, shift: number) => void;
66
+ qrAlgorithm: (matrixPtr: number, n: number, eigenvaluesRealPtr: number, eigenvaluesImagPtr: number, workPtr: number, maxIterations: number, tolerance: number) => number;
67
+ hessenbergQRStep: (matrixPtr: number, n: number, startRow: number, endRow: number, shift: number) => void;
68
+ expm: (matrixPtr: number, n: number, resultPtr: number, workPtr: number) => number;
69
+ expmSmall: (matrixPtr: number, n: number, resultPtr: number, workPtr: number, terms: number) => void;
70
+ expmv: (matrixPtr: number, n: number, vectorPtr: number, resultPtr: number, workPtr: number, t: number) => void;
71
+ sqrtm: (matrixPtr: number, n: number, resultPtr: number, tolerance: number, maxIterations: number, workPtr: number) => number;
72
+ sqrtmNewtonSchulz: (matrixPtr: number, n: number, resultPtr: number, workPtr: number, maxIterations: number, tolerance: number) => number;
73
+ sqrtmCholesky: (matrixPtr: number, n: number, resultPtr: number, workPtr: number) => number;
74
+ sparseLu: (valuesPtr: number, rowIndPtr: number, colPtrPtr: number, n: number, nnz: number, lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, uValuesPtr: number, uRowIndPtr: number, uColPtrPtr: number, permPtr: number, workPtr: number) => number;
75
+ sparseForwardSolve: (lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, n: number, bPtr: number, xPtr: number) => void;
76
+ sparseBackwardSolve: (uValuesPtr: number, uRowIndPtr: number, uColPtrPtr: number, n: number, bPtr: number, xPtr: number) => void;
77
+ sparseLuSolve: (lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, uValuesPtr: number, uRowIndPtr: number, uColPtrPtr: number, n: number, permPtr: number, bPtr: number, xPtr: number, workPtr: number) => void;
78
+ sparseChol: (valuesPtr: number, rowIndPtr: number, colPtrPtr: number, n: number, nnz: number, lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, parentPtr: number, workPtr: number) => number;
79
+ sparseCholSolve: (lValuesPtr: number, lRowIndPtr: number, lColPtrPtr: number, n: number, bPtr: number, xPtr: number, workPtr: number) => void;
80
+ eliminationTree: (rowIndPtr: number, colPtrPtr: number, n: number, parentPtr: number) => void;
81
+ columnCounts: (rowIndPtr: number, colPtrPtr: number, n: number, parentPtr: number, countsPtr: number, workPtr: number) => void;
82
+ amd: (colPtrPtr: number, rowIdxPtr: number, n: number, permPtr: number, workPtr: number) => void;
83
+ amdAggressive: (colPtrPtr: number, rowIdxPtr: number, n: number, permPtr: number, workPtr: number) => void;
84
+ symbolicCholesky: (indexPtr: number, ptrPtr: number, n: number, parentPtr: number, postPtr: number, colCountPtr: number, workPtr: number) => void;
85
+ simdDotF64: (aPtr: number, bPtr: number, length: number) => number;
86
+ simdSumF64: (aPtr: number, length: number) => number;
87
+ simdSumSquaresF64: (aPtr: number, length: number) => number;
88
+ simdNormF64: (aPtr: number, length: number) => number;
89
+ simdMinF64: (aPtr: number, length: number) => number;
90
+ simdMaxF64: (aPtr: number, length: number) => number;
91
+ simdMeanF64: (aPtr: number, length: number) => number;
92
+ simdVarianceF64: (aPtr: number, length: number, ddof: number) => number;
93
+ simdStdF64: (aPtr: number, length: number, ddof: number) => number;
94
+ simdAddF64: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
95
+ simdSubF64: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
96
+ simdMulF64: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
97
+ simdScaleF64: (aPtr: number, scalar: number, resultPtr: number, length: number) => void;
98
+ simdAbsF64: (aPtr: number, resultPtr: number, length: number) => void;
99
+ simdMatMulF64: (aPtr: number, bPtr: number, cPtr: number, m: number, k: number, n: number) => void;
100
+ gcdArray: (aPtr: number, n: number) => number;
101
+ hypotArray: (aPtr: number, n: number) => number;
102
+ norm1: (aPtr: number, n: number) => number;
103
+ norm2: (aPtr: number, n: number) => number;
104
+ normInf: (aPtr: number, n: number) => number;
105
+ normP: (aPtr: number, n: number, p: number) => number;
106
+ erfArray: (aPtr: number, n: number, resultPtr: number) => void;
107
+ zetaArray: (aPtr: number, n: number, resultPtr: number) => void;
108
+ gammaArray: (aPtr: number, n: number, resultPtr: number) => void;
109
+ lgammaArray: (aPtr: number, n: number, resultPtr: number) => void;
110
+ partitionSelect: (dataPtr: number, n: number, k: number, workPtr: number) => number;
111
+ distanceND: (p1Ptr: number, p2Ptr: number, n: number) => number;
112
+ distance2D: (x1: number, y1: number, x2: number, y2: number) => number;
113
+ distance3D: (x1: number, y1: number, z1: number, x2: number, y2: number, z2: number) => number;
114
+ intersect2DLines: (x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, resultPtr: number) => void;
115
+ intersect2DInfiniteLines: (x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, resultPtr: number) => void;
116
+ distancePointToLine2D: (px: number, py: number, x1: number, y1: number, x2: number, y2: number) => number;
117
+ statsMean: (aPtr: number, n: number) => number;
118
+ statsMedian: (aPtr: number, n: number) => number;
119
+ statsSum: (aPtr: number, n: number) => number;
120
+ statsProd: (aPtr: number, n: number) => number;
121
+ statsMin: (aPtr: number, n: number) => number;
122
+ statsMax: (aPtr: number, n: number) => number;
123
+ statsCumsum: (aPtr: number, n: number) => void;
124
+ statsMad: (aPtr: number, n: number) => number;
125
+ statsCorrelation: (aPtr: number, bPtr: number, n: number) => number;
126
+ statsCovariance: (aPtr: number, bPtr: number, n: number, ddof: number) => number;
127
+ freqz: (bPtr: number, bLen: number, aPtr: number, aLen: number, wPtr: number, wLen: number, hRealPtr: number, hImagPtr: number) => void;
128
+ fft: (dataPtr: number, n: number, inverse: number) => void;
129
+ fft2d: (dataPtr: number, rows: number, cols: number, inverse: number) => void;
130
+ convolve: (signalPtr: number, n: number, kernelPtr: number, m: number, resultPtr: number) => void;
131
+ rfft: (dataPtr: number, n: number, resultPtr: number) => void;
132
+ irfft: (dataPtr: number, n: number, resultPtr: number) => void;
133
+ isPowerOf2: (n: number) => number;
134
+ vectorAdd: (aPtr: number, bPtr: number, n: number, resultPtr: number) => void;
135
+ vectorScale: (aPtr: number, scalar: number, n: number, resultPtr: number) => void;
136
+ vectorCopy: (srcPtr: number, n: number, dstPtr: number) => void;
137
+ maxError: (errorPtr: number, n: number) => number;
138
+ computeStepAdjustment: (maxErr: number, tol: number, order: number, minDelta: number, maxDelta: number) => number;
139
+ rk45Step: (yPtr: number, t: number, h: number, n: number, kPtr: number, yNextPtr: number, yErrorPtr: number) => void;
140
+ rk23Step: (yPtr: number, t: number, h: number, n: number, kPtr: number, yNextPtr: number, yErrorPtr: number) => void;
141
+ bitAndArray?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
142
+ bitOrArray?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
143
+ bitXorArray?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
144
+ bitNotArray?: (inputPtr: number, resultPtr: number, length: number) => void;
145
+ leftShiftArrayPerElement?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
146
+ rightArithShiftArrayPerElement?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
147
+ rightLogShiftArrayPerElement?: (aPtr: number, bPtr: number, resultPtr: number, length: number) => void;
148
+ bitAnd_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
149
+ bitOr_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
150
+ bitXor_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
151
+ bitNot_i32_array?: (a: Int32Array, result: Int32Array) => void;
152
+ leftShift_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
153
+ rightArithShift_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
154
+ rightLogShift_i32_array?: (a: Int32Array, b: Int32Array, result: Int32Array) => void;
155
+ matrix_lu_decompose?: (aHdr: number, n: number, lOutHdr: number, uOutHdr: number, permOutHdr: number) => number;
156
+ matrix_qr_decompose?: (aHdr: number, m: number, n: number, qOutHdr: number, rOutHdr: number) => number;
157
+ matrix_cholesky?: (aHdr: number, n: number, lOutHdr: number) => number;
158
+ matrix_inverse?: (aHdr: number, n: number, resultHdr: number, workHdr: number) => number;
159
+ matrix_determinant?: (aHdr: number, n: number, workHdr: number) => number;
160
+ __new: (size: number, id: number) => number;
161
+ __pin: (ptr: number) => number;
162
+ __unpin: (ptr: number) => void;
163
+ __collect: () => void;
164
+ memory: WebAssembly.Memory;
165
+ }
166
+ /**
167
+ * Opaque allocation handle returned by `allocateFloat64Array` and friends.
168
+ *
169
+ * Callers treat `ptr` as the typed-array *header* pointer to pass to WASM
170
+ * functions. The `array` view is positioned over the data region so callers
171
+ * can `set()` and read it as JS expects.
172
+ */
173
+ export interface Allocation<TArray extends Float64Array | Int32Array> {
174
+ /** Header pointer to pass to WASM functions. */
175
+ readonly ptr: number;
176
+ /** JS-side view of the data region. */
177
+ array: TArray;
178
+ /** Element length (independent of byte-width). */
179
+ readonly length: number;
180
+ /** Internal: the data-block offset (the ArrayBuffer the header points at). */
181
+ readonly dataPtr: number;
182
+ }
183
+ export declare class WasmLoader {
184
+ private static instance;
185
+ private wasmModule;
186
+ private compiledModule;
187
+ private loading;
188
+ private isNode;
189
+ private lastMetrics;
190
+ private float64Pool;
191
+ private int32Pool;
192
+ private readonly poolSizeThreshold;
193
+ private constructor();
194
+ static getInstance(): WasmLoader;
195
+ /**
196
+ * Load the WASM module
197
+ */
198
+ load(wasmPath?: string): Promise<WasmModule>;
199
+ /**
200
+ * Precompile the WASM module without instantiation
201
+ * Useful for build-time or startup optimization
202
+ */
203
+ precompile(wasmPath?: string): Promise<void>;
204
+ private loadModule;
205
+ /**
206
+ * Get the WASM binary path. AssemblyScript is the sole WASM backend
207
+ * (`mathts-as.wasm`); the legacy second toolchain was removed in the
208
+ * WASM-backend migration (complete 2026-06-26).
209
+ *
210
+ * Resolution is package-relative and CWD-independent: the packaged artifact
211
+ * (`dist/wasm/`) is preferred via `resolvePackagedWasm`; when absent, the
212
+ * canonical expected location is returned so the missing-binary warning is
213
+ * actionable (see `defaultWasmLocation` in wasm/resolve.ts — B-3).
214
+ */
215
+ private getDefaultWasmPath;
216
+ private loadNodeWasm;
217
+ private loadBrowserWasm;
218
+ private getImports;
219
+ /**
220
+ * Get the loaded WASM module
221
+ */
222
+ getModule(): WasmModule | null;
223
+ /**
224
+ * Get the compiled WASM module (for caching/serialization)
225
+ */
226
+ getCompiledModule(): WebAssembly.Module | null;
227
+ /**
228
+ * Check if WASM is loaded
229
+ */
230
+ isLoaded(): boolean;
231
+ /**
232
+ * Check if WASM is precompiled
233
+ */
234
+ isPrecompiled(): boolean;
235
+ /**
236
+ * Get loading performance metrics
237
+ */
238
+ getLoadingMetrics(): LoadingMetrics | null;
239
+ /**
240
+ * Allocate Float64Array in WASM memory and copy `data` into it.
241
+ * Uses memory pooling.
242
+ */
243
+ allocateFloat64Array(data: number[] | Float64Array): Allocation<Float64Array>;
244
+ /**
245
+ * Decode a managed Float64Array RETURNED by an AssemblyScript export
246
+ * (e.g. the `matrix_lu_decompose` / `matrix_qr_decompose` outputs) into a fresh JS copy.
247
+ *
248
+ * AS exports that return a `Float64Array` hand back the typed-array
249
+ * *header* pointer. The header is a 12-byte block laid out as
250
+ * `[buffer, dataStart, byteLength]` (little-endian u32s) — the same shape
251
+ * the loader writes in `makeAsFloat64`. We read `dataStart`/`byteLength`
252
+ * and copy the data region out so it survives any later reuse of WASM
253
+ * memory.
254
+ */
255
+ readReturnedFloat64Array(headerPtr: number): Float64Array;
256
+ /**
257
+ * Allocate Float64Array without copying data (for output buffers)
258
+ */
259
+ allocateFloat64ArrayEmpty(length: number): Allocation<Float64Array>;
260
+ /**
261
+ * Allocate Int32Array in WASM memory and copy `data` into it.
262
+ */
263
+ allocateInt32Array(data: number[] | Int32Array): Allocation<Int32Array>;
264
+ /**
265
+ * Allocate Int32Array without copying data (for output buffers)
266
+ */
267
+ allocateInt32ArrayEmpty(length: number): Allocation<Int32Array>;
268
+ private allocateAsFloat64;
269
+ private allocateAsInt32;
270
+ private makeAsFloat64;
271
+ private makeAsInt32;
272
+ /**
273
+ * Find a pool entry whose data region is large enough; returns null when
274
+ * no suitable entry is available.
275
+ */
276
+ private acquireFromAsPool;
277
+ /**
278
+ * Return an allocation to the pool for reuse.
279
+ *
280
+ * `isFloat64` exists for backwards compatibility — callers can still
281
+ * pass it positionally to disambiguate the pool to use on the AS path.
282
+ * Prefer `releaseAllocation` for new code, which discovers the pool
283
+ * automatically.
284
+ */
285
+ release(ptr: number, isFloat64?: boolean): void;
286
+ /**
287
+ * Free allocated memory (immediate, bypasses pool): unpin the header pointer.
288
+ */
289
+ free(ptr: number): void;
290
+ /**
291
+ * Clear the memory pool
292
+ */
293
+ clearPool(): void;
294
+ /**
295
+ * Get pool statistics
296
+ */
297
+ getPoolStats(): {
298
+ float64: {
299
+ total: number;
300
+ inUse: number;
301
+ totalBytes: number;
302
+ };
303
+ int32: {
304
+ total: number;
305
+ inUse: number;
306
+ totalBytes: number;
307
+ };
308
+ };
309
+ /**
310
+ * Run garbage collection.
311
+ */
312
+ collect(): void;
313
+ /**
314
+ * Reset the loader (for testing)
315
+ */
316
+ reset(): void;
317
+ }
318
+ /**
319
+ * Global WASM loader instance
320
+ */
321
+ export declare const wasmLoader: WasmLoader;
322
+ /**
323
+ * Initialize WASM module (call once at startup)
324
+ */
325
+ export declare function initWasm(wasmPath?: string): Promise<WasmModule>;
326
+ //# sourceMappingURL=WasmLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WasmLoader.d.ts","sourceRoot":"","sources":["../../src/backends/WasmLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * GPU Batch Executor
3
+ *
4
+ * Manages batched GPU command submission for reduced overhead.
5
+ * Queues multiple operations and executes them together for efficiency.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { GPUContext } from '@danielsimonjr/mathts-gpu';
10
+ import type { ShaderManager } from '@danielsimonjr/mathts-gpu';
11
+ import type { BufferPool } from '@danielsimonjr/mathts-gpu';
12
+ /**
13
+ * Operation types that can be batched
14
+ */
15
+ export type BatchOperationType = 'add' | 'subtract' | 'multiply' | 'divide' | 'scale' | 'matmul' | 'transpose' | 'reduce_sum' | 'reduce_max' | 'reduce_min';
16
+ /**
17
+ * Configuration for a batched operation
18
+ */
19
+ export interface BatchOperation {
20
+ /** Operation type */
21
+ type: BatchOperationType;
22
+ /** Input buffer A */
23
+ inputA: GPUBuffer;
24
+ /** Input buffer B (optional for unary ops) */
25
+ inputB?: GPUBuffer;
26
+ /** Output buffer */
27
+ output: GPUBuffer;
28
+ /** Dimensions */
29
+ dimensions: {
30
+ rows: number;
31
+ cols: number;
32
+ k?: number;
33
+ };
34
+ /** Scalar value (for scale operation) */
35
+ scalar?: number;
36
+ }
37
+ /**
38
+ * Result of batch execution
39
+ */
40
+ export interface BatchResult {
41
+ /** Success status */
42
+ success: boolean;
43
+ /** Number of operations executed */
44
+ operationCount: number;
45
+ /** Execution time in milliseconds */
46
+ duration: number;
47
+ /** Error message if failed */
48
+ error?: string;
49
+ }
50
+ /**
51
+ * Options for batch execution
52
+ */
53
+ export interface BatchOptions {
54
+ /** Maximum operations per batch before auto-flush */
55
+ maxBatchSize?: number;
56
+ /** Auto-flush when batch is full */
57
+ autoFlush?: boolean;
58
+ /** Wait for GPU completion before returning */
59
+ waitForCompletion?: boolean;
60
+ }
61
+ /**
62
+ * GPU Batch Executor
63
+ *
64
+ * Accumulates GPU operations and executes them in batches to reduce
65
+ * command submission overhead. Uses command buffers efficiently.
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * const executor = new BatchExecutor(context, shaders, bufferPool);
70
+ *
71
+ * executor.add(a, b, output, { rows: 100, cols: 100 });
72
+ * executor.matmul(a, b, output, { rows: 100, cols: 100, k: 100 });
73
+ *
74
+ * await executor.flush();
75
+ * ```
76
+ */
77
+ export declare class BatchExecutor {
78
+ private context;
79
+ private shaders;
80
+ private bufferPool;
81
+ private operations;
82
+ private options;
83
+ /**
84
+ * Create a new batch executor
85
+ */
86
+ constructor(context: GPUContext, shaders: ShaderManager, bufferPool: BufferPool, options?: BatchOptions);
87
+ /**
88
+ * Get current batch size
89
+ */
90
+ get size(): number;
91
+ /**
92
+ * Check if batch is empty
93
+ */
94
+ get isEmpty(): boolean;
95
+ /**
96
+ * Check if batch is full
97
+ */
98
+ get isFull(): boolean;
99
+ /**
100
+ * Queue an add operation
101
+ */
102
+ add(inputA: GPUBuffer, inputB: GPUBuffer, output: GPUBuffer, dimensions: {
103
+ rows: number;
104
+ cols: number;
105
+ }): void;
106
+ /**
107
+ * Queue a subtract operation
108
+ */
109
+ subtract(inputA: GPUBuffer, inputB: GPUBuffer, output: GPUBuffer, dimensions: {
110
+ rows: number;
111
+ cols: number;
112
+ }): void;
113
+ /**
114
+ * Queue an element-wise multiply operation
115
+ */
116
+ multiply(inputA: GPUBuffer, inputB: GPUBuffer, output: GPUBuffer, dimensions: {
117
+ rows: number;
118
+ cols: number;
119
+ }): void;
120
+ /**
121
+ * Queue a scale operation
122
+ */
123
+ scale(input: GPUBuffer, output: GPUBuffer, scalar: number, dimensions: {
124
+ rows: number;
125
+ cols: number;
126
+ }): void;
127
+ /**
128
+ * Queue a matrix multiplication operation
129
+ */
130
+ matmul(inputA: GPUBuffer, inputB: GPUBuffer, output: GPUBuffer, dimensions: {
131
+ rows: number;
132
+ cols: number;
133
+ k: number;
134
+ }): void;
135
+ /**
136
+ * Queue a transpose operation
137
+ */
138
+ transpose(input: GPUBuffer, output: GPUBuffer, dimensions: {
139
+ rows: number;
140
+ cols: number;
141
+ }): void;
142
+ /**
143
+ * Queue a sum reduction operation
144
+ */
145
+ reduceSum(input: GPUBuffer, output: GPUBuffer, dimensions: {
146
+ rows: number;
147
+ cols: number;
148
+ }): void;
149
+ /**
150
+ * Queue operation (internal)
151
+ */
152
+ private queueOperation;
153
+ /**
154
+ * Flush all queued operations (async)
155
+ */
156
+ flush(): Promise<BatchResult>;
157
+ /**
158
+ * Flush synchronously (fire and forget)
159
+ */
160
+ flushSync(): void;
161
+ /**
162
+ * Encode a single operation into the command encoder
163
+ */
164
+ private encodeOperation;
165
+ /**
166
+ * Get pipeline name for operation type
167
+ */
168
+ private getPipelineName;
169
+ /**
170
+ * Create params buffer for operation
171
+ */
172
+ private createParamsBuffer;
173
+ /**
174
+ * Calculate workgroup dispatch counts
175
+ */
176
+ private calculateWorkgroups;
177
+ /**
178
+ * Clear all queued operations without executing
179
+ */
180
+ clear(): void;
181
+ /**
182
+ * Get statistics about the batch executor
183
+ */
184
+ getStats(): {
185
+ queuedOperations: number;
186
+ maxBatchSize: number;
187
+ autoFlush: boolean;
188
+ };
189
+ }
190
+ //# sourceMappingURL=BatchExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BatchExecutor.d.ts","sourceRoot":"","sources":["../../../src/backends/gpu/BatchExecutor.ts"],"names":[],"mappings":"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"}