numkong 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +495 -0
- package/binding.gyp +540 -0
- package/c/dispatch.h +512 -0
- package/c/dispatch_bf16.c +389 -0
- package/c/dispatch_bf16c.c +52 -0
- package/c/dispatch_e2m3.c +263 -0
- package/c/dispatch_e3m2.c +243 -0
- package/c/dispatch_e4m3.c +276 -0
- package/c/dispatch_e5m2.c +272 -0
- package/c/dispatch_f16.c +376 -0
- package/c/dispatch_f16c.c +58 -0
- package/c/dispatch_f32.c +378 -0
- package/c/dispatch_f32c.c +99 -0
- package/c/dispatch_f64.c +296 -0
- package/c/dispatch_f64c.c +98 -0
- package/c/dispatch_i16.c +96 -0
- package/c/dispatch_i32.c +89 -0
- package/c/dispatch_i4.c +150 -0
- package/c/dispatch_i64.c +86 -0
- package/c/dispatch_i8.c +289 -0
- package/c/dispatch_other.c +330 -0
- package/c/dispatch_u1.c +148 -0
- package/c/dispatch_u16.c +124 -0
- package/c/dispatch_u32.c +118 -0
- package/c/dispatch_u4.c +150 -0
- package/c/dispatch_u64.c +102 -0
- package/c/dispatch_u8.c +303 -0
- package/c/numkong.c +950 -0
- package/include/README.md +573 -0
- package/include/module.modulemap +129 -0
- package/include/numkong/attention/sapphireamx.h +1361 -0
- package/include/numkong/attention/sme.h +2066 -0
- package/include/numkong/attention.h +49 -0
- package/include/numkong/capabilities.h +748 -0
- package/include/numkong/cast/README.md +262 -0
- package/include/numkong/cast/haswell.h +975 -0
- package/include/numkong/cast/icelake.h +470 -0
- package/include/numkong/cast/neon.h +1192 -0
- package/include/numkong/cast/rvv.h +1021 -0
- package/include/numkong/cast/sapphire.h +262 -0
- package/include/numkong/cast/serial.h +2262 -0
- package/include/numkong/cast/skylake.h +856 -0
- package/include/numkong/cast/v128relaxed.h +180 -0
- package/include/numkong/cast.h +230 -0
- package/include/numkong/curved/README.md +223 -0
- package/include/numkong/curved/genoa.h +182 -0
- package/include/numkong/curved/haswell.h +276 -0
- package/include/numkong/curved/neon.h +205 -0
- package/include/numkong/curved/neonbfdot.h +212 -0
- package/include/numkong/curved/neonhalf.h +212 -0
- package/include/numkong/curved/rvv.h +305 -0
- package/include/numkong/curved/serial.h +207 -0
- package/include/numkong/curved/skylake.h +457 -0
- package/include/numkong/curved/smef64.h +506 -0
- package/include/numkong/curved.h +517 -0
- package/include/numkong/curved.hpp +144 -0
- package/include/numkong/dot/README.md +425 -0
- package/include/numkong/dot/alder.h +563 -0
- package/include/numkong/dot/genoa.h +315 -0
- package/include/numkong/dot/haswell.h +1688 -0
- package/include/numkong/dot/icelake.h +883 -0
- package/include/numkong/dot/neon.h +818 -0
- package/include/numkong/dot/neonbfdot.h +244 -0
- package/include/numkong/dot/neonfhm.h +360 -0
- package/include/numkong/dot/neonhalf.h +198 -0
- package/include/numkong/dot/neonsdot.h +508 -0
- package/include/numkong/dot/rvv.h +714 -0
- package/include/numkong/dot/rvvbb.h +72 -0
- package/include/numkong/dot/rvvbf16.h +123 -0
- package/include/numkong/dot/rvvhalf.h +129 -0
- package/include/numkong/dot/sapphire.h +141 -0
- package/include/numkong/dot/serial.h +838 -0
- package/include/numkong/dot/sierra.h +405 -0
- package/include/numkong/dot/skylake.h +1084 -0
- package/include/numkong/dot/sve.h +379 -0
- package/include/numkong/dot/svebfdot.h +74 -0
- package/include/numkong/dot/svehalf.h +123 -0
- package/include/numkong/dot/v128relaxed.h +1258 -0
- package/include/numkong/dot.h +1070 -0
- package/include/numkong/dot.hpp +94 -0
- package/include/numkong/dots/README.md +496 -0
- package/include/numkong/dots/alder.h +114 -0
- package/include/numkong/dots/genoa.h +94 -0
- package/include/numkong/dots/haswell.h +295 -0
- package/include/numkong/dots/icelake.h +171 -0
- package/include/numkong/dots/neon.h +120 -0
- package/include/numkong/dots/neonbfdot.h +58 -0
- package/include/numkong/dots/neonfhm.h +94 -0
- package/include/numkong/dots/neonhalf.h +57 -0
- package/include/numkong/dots/neonsdot.h +108 -0
- package/include/numkong/dots/rvv.h +2486 -0
- package/include/numkong/dots/sapphireamx.h +3973 -0
- package/include/numkong/dots/serial.h +2844 -0
- package/include/numkong/dots/sierra.h +97 -0
- package/include/numkong/dots/skylake.h +196 -0
- package/include/numkong/dots/sme.h +5372 -0
- package/include/numkong/dots/smebi32.h +461 -0
- package/include/numkong/dots/smef64.h +1318 -0
- package/include/numkong/dots/smehalf.h +47 -0
- package/include/numkong/dots/v128relaxed.h +294 -0
- package/include/numkong/dots.h +2804 -0
- package/include/numkong/dots.hpp +639 -0
- package/include/numkong/each/README.md +469 -0
- package/include/numkong/each/haswell.h +1658 -0
- package/include/numkong/each/icelake.h +272 -0
- package/include/numkong/each/neon.h +1104 -0
- package/include/numkong/each/neonbfdot.h +212 -0
- package/include/numkong/each/neonhalf.h +410 -0
- package/include/numkong/each/rvv.h +1121 -0
- package/include/numkong/each/sapphire.h +477 -0
- package/include/numkong/each/serial.h +260 -0
- package/include/numkong/each/skylake.h +1562 -0
- package/include/numkong/each.h +2146 -0
- package/include/numkong/each.hpp +434 -0
- package/include/numkong/geospatial/README.md +147 -0
- package/include/numkong/geospatial/haswell.h +593 -0
- package/include/numkong/geospatial/neon.h +571 -0
- package/include/numkong/geospatial/rvv.h +701 -0
- package/include/numkong/geospatial/serial.h +309 -0
- package/include/numkong/geospatial/skylake.h +577 -0
- package/include/numkong/geospatial/v128relaxed.h +613 -0
- package/include/numkong/geospatial.h +453 -0
- package/include/numkong/geospatial.hpp +235 -0
- package/include/numkong/matrix.hpp +336 -0
- package/include/numkong/maxsim/README.md +187 -0
- package/include/numkong/maxsim/alder.h +511 -0
- package/include/numkong/maxsim/genoa.h +115 -0
- package/include/numkong/maxsim/haswell.h +553 -0
- package/include/numkong/maxsim/icelake.h +480 -0
- package/include/numkong/maxsim/neonsdot.h +394 -0
- package/include/numkong/maxsim/sapphireamx.h +877 -0
- package/include/numkong/maxsim/serial.h +490 -0
- package/include/numkong/maxsim/sme.h +929 -0
- package/include/numkong/maxsim/v128relaxed.h +280 -0
- package/include/numkong/maxsim.h +571 -0
- package/include/numkong/maxsim.hpp +133 -0
- package/include/numkong/mesh/README.md +227 -0
- package/include/numkong/mesh/haswell.h +2235 -0
- package/include/numkong/mesh/neon.h +1329 -0
- package/include/numkong/mesh/neonbfdot.h +842 -0
- package/include/numkong/mesh/neonhalf.h +616 -0
- package/include/numkong/mesh/rvv.h +916 -0
- package/include/numkong/mesh/serial.h +742 -0
- package/include/numkong/mesh/skylake.h +1135 -0
- package/include/numkong/mesh/v128relaxed.h +1052 -0
- package/include/numkong/mesh.h +652 -0
- package/include/numkong/mesh.hpp +762 -0
- package/include/numkong/numkong.h +78 -0
- package/include/numkong/numkong.hpp +57 -0
- package/include/numkong/probability/README.md +173 -0
- package/include/numkong/probability/haswell.h +267 -0
- package/include/numkong/probability/neon.h +225 -0
- package/include/numkong/probability/rvv.h +409 -0
- package/include/numkong/probability/serial.h +169 -0
- package/include/numkong/probability/skylake.h +324 -0
- package/include/numkong/probability.h +383 -0
- package/include/numkong/probability.hpp +120 -0
- package/include/numkong/random.h +50 -0
- package/include/numkong/random.hpp +285 -0
- package/include/numkong/reduce/README.md +547 -0
- package/include/numkong/reduce/alder.h +632 -0
- package/include/numkong/reduce/genoa.h +201 -0
- package/include/numkong/reduce/haswell.h +3783 -0
- package/include/numkong/reduce/icelake.h +549 -0
- package/include/numkong/reduce/neon.h +3841 -0
- package/include/numkong/reduce/neonbfdot.h +353 -0
- package/include/numkong/reduce/neonfhm.h +665 -0
- package/include/numkong/reduce/neonhalf.h +157 -0
- package/include/numkong/reduce/neonsdot.h +357 -0
- package/include/numkong/reduce/rvv.h +3407 -0
- package/include/numkong/reduce/serial.h +757 -0
- package/include/numkong/reduce/sierra.h +338 -0
- package/include/numkong/reduce/skylake.h +3792 -0
- package/include/numkong/reduce/v128relaxed.h +2302 -0
- package/include/numkong/reduce.h +1597 -0
- package/include/numkong/reduce.hpp +633 -0
- package/include/numkong/scalar/README.md +89 -0
- package/include/numkong/scalar/haswell.h +113 -0
- package/include/numkong/scalar/neon.h +122 -0
- package/include/numkong/scalar/neonhalf.h +70 -0
- package/include/numkong/scalar/rvv.h +211 -0
- package/include/numkong/scalar/sapphire.h +63 -0
- package/include/numkong/scalar/serial.h +332 -0
- package/include/numkong/scalar/v128relaxed.h +56 -0
- package/include/numkong/scalar.h +683 -0
- package/include/numkong/set/README.md +179 -0
- package/include/numkong/set/haswell.h +334 -0
- package/include/numkong/set/icelake.h +485 -0
- package/include/numkong/set/neon.h +364 -0
- package/include/numkong/set/rvv.h +226 -0
- package/include/numkong/set/rvvbb.h +117 -0
- package/include/numkong/set/serial.h +174 -0
- package/include/numkong/set/sve.h +185 -0
- package/include/numkong/set/v128relaxed.h +240 -0
- package/include/numkong/set.h +457 -0
- package/include/numkong/set.hpp +114 -0
- package/include/numkong/sets/README.md +149 -0
- package/include/numkong/sets/haswell.h +63 -0
- package/include/numkong/sets/icelake.h +66 -0
- package/include/numkong/sets/neon.h +61 -0
- package/include/numkong/sets/serial.h +43 -0
- package/include/numkong/sets/smebi32.h +1099 -0
- package/include/numkong/sets/v128relaxed.h +58 -0
- package/include/numkong/sets.h +339 -0
- package/include/numkong/sparse/README.md +156 -0
- package/include/numkong/sparse/icelake.h +463 -0
- package/include/numkong/sparse/neon.h +288 -0
- package/include/numkong/sparse/serial.h +117 -0
- package/include/numkong/sparse/sve2.h +507 -0
- package/include/numkong/sparse/turin.h +322 -0
- package/include/numkong/sparse.h +363 -0
- package/include/numkong/sparse.hpp +113 -0
- package/include/numkong/spatial/README.md +435 -0
- package/include/numkong/spatial/alder.h +607 -0
- package/include/numkong/spatial/genoa.h +290 -0
- package/include/numkong/spatial/haswell.h +960 -0
- package/include/numkong/spatial/icelake.h +586 -0
- package/include/numkong/spatial/neon.h +773 -0
- package/include/numkong/spatial/neonbfdot.h +165 -0
- package/include/numkong/spatial/neonhalf.h +118 -0
- package/include/numkong/spatial/neonsdot.h +261 -0
- package/include/numkong/spatial/rvv.h +984 -0
- package/include/numkong/spatial/rvvbf16.h +123 -0
- package/include/numkong/spatial/rvvhalf.h +117 -0
- package/include/numkong/spatial/sapphire.h +343 -0
- package/include/numkong/spatial/serial.h +346 -0
- package/include/numkong/spatial/sierra.h +323 -0
- package/include/numkong/spatial/skylake.h +606 -0
- package/include/numkong/spatial/sve.h +224 -0
- package/include/numkong/spatial/svebfdot.h +122 -0
- package/include/numkong/spatial/svehalf.h +109 -0
- package/include/numkong/spatial/v128relaxed.h +717 -0
- package/include/numkong/spatial.h +1425 -0
- package/include/numkong/spatial.hpp +183 -0
- package/include/numkong/spatials/README.md +580 -0
- package/include/numkong/spatials/alder.h +94 -0
- package/include/numkong/spatials/genoa.h +94 -0
- package/include/numkong/spatials/haswell.h +219 -0
- package/include/numkong/spatials/icelake.h +113 -0
- package/include/numkong/spatials/neon.h +109 -0
- package/include/numkong/spatials/neonbfdot.h +60 -0
- package/include/numkong/spatials/neonfhm.h +92 -0
- package/include/numkong/spatials/neonhalf.h +58 -0
- package/include/numkong/spatials/neonsdot.h +109 -0
- package/include/numkong/spatials/rvv.h +1960 -0
- package/include/numkong/spatials/sapphireamx.h +1149 -0
- package/include/numkong/spatials/serial.h +226 -0
- package/include/numkong/spatials/sierra.h +96 -0
- package/include/numkong/spatials/skylake.h +184 -0
- package/include/numkong/spatials/sme.h +1901 -0
- package/include/numkong/spatials/smef64.h +465 -0
- package/include/numkong/spatials/v128relaxed.h +240 -0
- package/include/numkong/spatials.h +3021 -0
- package/include/numkong/spatials.hpp +508 -0
- package/include/numkong/tensor.hpp +1592 -0
- package/include/numkong/trigonometry/README.md +184 -0
- package/include/numkong/trigonometry/haswell.h +652 -0
- package/include/numkong/trigonometry/neon.h +639 -0
- package/include/numkong/trigonometry/rvv.h +699 -0
- package/include/numkong/trigonometry/serial.h +703 -0
- package/include/numkong/trigonometry/skylake.h +721 -0
- package/include/numkong/trigonometry/v128relaxed.h +666 -0
- package/include/numkong/trigonometry.h +467 -0
- package/include/numkong/trigonometry.hpp +166 -0
- package/include/numkong/types.h +1384 -0
- package/include/numkong/types.hpp +5603 -0
- package/include/numkong/vector.hpp +698 -0
- package/javascript/README.md +246 -0
- package/javascript/dist/cjs/numkong-wasm.d.ts +166 -0
- package/javascript/dist/cjs/numkong-wasm.js +617 -0
- package/javascript/dist/cjs/numkong.d.ts +343 -0
- package/javascript/dist/cjs/numkong.js +523 -0
- package/javascript/dist/cjs/package.json +3 -0
- package/javascript/dist/cjs/types.d.ts +284 -0
- package/javascript/dist/cjs/types.js +653 -0
- package/javascript/dist/esm/numkong-wasm.d.ts +166 -0
- package/javascript/dist/esm/numkong-wasm.js +595 -0
- package/javascript/dist/esm/numkong.d.ts +343 -0
- package/javascript/dist/esm/numkong.js +452 -0
- package/javascript/dist/esm/package.json +3 -0
- package/javascript/dist/esm/types.d.ts +284 -0
- package/javascript/dist/esm/types.js +630 -0
- package/javascript/dist-package-cjs.json +3 -0
- package/javascript/dist-package-esm.json +3 -0
- package/javascript/node-gyp-build.d.ts +1 -0
- package/javascript/numkong-wasm.ts +756 -0
- package/javascript/numkong.c +689 -0
- package/javascript/numkong.ts +575 -0
- package/javascript/tsconfig-base.json +39 -0
- package/javascript/tsconfig-cjs.json +8 -0
- package/javascript/tsconfig-esm.json +8 -0
- package/javascript/types.ts +674 -0
- package/package.json +87 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @brief Custom TypedArray classes for non-native numeric types.
|
|
3
|
+
* @file javascript/types.ts
|
|
4
|
+
* @author Ash Vardanian
|
|
5
|
+
* @date February 3, 2026
|
|
6
|
+
*
|
|
7
|
+
* This file provides TypedArray wrappers for numeric types not natively supported
|
|
8
|
+
* by JavaScript, using NumKong's SIMD-optimized conversion functions from the C library.
|
|
9
|
+
*/
|
|
10
|
+
declare let conversionFunctions: {
|
|
11
|
+
castF16ToF32: (bits: number) => number;
|
|
12
|
+
castF32ToF16: (value: number) => number;
|
|
13
|
+
castBF16ToF32: (bits: number) => number;
|
|
14
|
+
castF32ToBF16: (value: number) => number;
|
|
15
|
+
castE4M3ToF32: (bits: number) => number;
|
|
16
|
+
castF32ToE4M3: (value: number) => number;
|
|
17
|
+
castE5M2ToF32: (bits: number) => number;
|
|
18
|
+
castF32ToE5M2: (value: number) => number;
|
|
19
|
+
cast: (src: TypedArray, srcType: string, dst: TypedArray, dstType: string) => void;
|
|
20
|
+
};
|
|
21
|
+
export declare function setConversionFunctions(fns: typeof conversionFunctions): void;
|
|
22
|
+
export type TypedArray = Float64Array | Float32Array | Int32Array | Int8Array | Uint8Array | Uint16Array | Uint32Array;
|
|
23
|
+
/** @brief Numeric data type enum — integer switch, compiles to jump table. */
|
|
24
|
+
export declare enum DType {
|
|
25
|
+
F64 = 0,
|
|
26
|
+
F32 = 1,
|
|
27
|
+
F16 = 2,
|
|
28
|
+
BF16 = 3,
|
|
29
|
+
E4M3 = 4,
|
|
30
|
+
E5M2 = 5,
|
|
31
|
+
E2M3 = 6,
|
|
32
|
+
E3M2 = 7,
|
|
33
|
+
I8 = 8,
|
|
34
|
+
U8 = 9,
|
|
35
|
+
U1 = 10,
|
|
36
|
+
I32 = 11,
|
|
37
|
+
U32 = 12
|
|
38
|
+
}
|
|
39
|
+
/** @brief O(1) array lookup for DType → string conversion (needed at N-API/WASM boundaries). */
|
|
40
|
+
export declare const DTYPE_STRINGS: readonly string[];
|
|
41
|
+
/** @brief Convert a DType enum value to its string representation. */
|
|
42
|
+
export declare function dtypeToString(d: DType): string;
|
|
43
|
+
/**
|
|
44
|
+
* @brief Abstract base class for all tensor types.
|
|
45
|
+
*
|
|
46
|
+
* All fields are embedded — zero dynamic allocation. DType is a numeric enum
|
|
47
|
+
* (integer switch). Mirrors the C++ pattern: buffer + byteOffset + dtype.
|
|
48
|
+
*/
|
|
49
|
+
export declare abstract class TensorBase {
|
|
50
|
+
readonly buffer: ArrayBuffer;
|
|
51
|
+
readonly byteOffset: number;
|
|
52
|
+
readonly dtype: DType;
|
|
53
|
+
protected constructor(buffer: ArrayBuffer, byteOffset: number, dtype: DType);
|
|
54
|
+
abstract get length(): number;
|
|
55
|
+
abstract get rank(): number;
|
|
56
|
+
/** @brief Bytes per element for this tensor's dtype (compiles to jump table). */
|
|
57
|
+
get bytesPerElement(): number;
|
|
58
|
+
/** @brief Total byte length of the tensor data. */
|
|
59
|
+
get byteLength(): number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @brief Abstract rank-1 tensor base class.
|
|
63
|
+
*/
|
|
64
|
+
export declare abstract class VectorBase extends TensorBase {
|
|
65
|
+
readonly length: number;
|
|
66
|
+
protected constructor(buffer: ArrayBuffer, byteOffset: number, length: number, dtype: DType);
|
|
67
|
+
get rank(): 1;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @brief Non-owning rank-1 tensor view (like std::span<T>).
|
|
71
|
+
*
|
|
72
|
+
* Zero-copy wrapper for existing memory. Ideal for cross-module WASM interop
|
|
73
|
+
* where data already lives on the WASM heap.
|
|
74
|
+
*/
|
|
75
|
+
export declare class VectorView extends VectorBase {
|
|
76
|
+
constructor(buffer: ArrayBuffer, byteOffset: number, length: number, dtype: DType);
|
|
77
|
+
/** @brief Create a VectorView from any TypedArray, inferring or accepting dtype. */
|
|
78
|
+
static from(arr: TypedArray, dtype?: DType): VectorView;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @brief Owning rank-1 tensor (like std::vector<T>).
|
|
82
|
+
*
|
|
83
|
+
* Allocates its own ArrayBuffer. Use for storing results or when you need
|
|
84
|
+
* independent ownership of the data.
|
|
85
|
+
*/
|
|
86
|
+
export declare class Vector extends VectorBase {
|
|
87
|
+
constructor(length: number, dtype: DType);
|
|
88
|
+
constructor(buffer: ArrayBuffer, length: number, dtype: DType);
|
|
89
|
+
/** @brief Create an owning Vector by copying data from a TypedArray. */
|
|
90
|
+
static fromTypedArray(arr: TypedArray, dtype?: DType): Vector;
|
|
91
|
+
/** @brief Create an owning Vector by copying data from any TensorBase. */
|
|
92
|
+
static fromView(view: TensorBase): Vector;
|
|
93
|
+
/** @brief Return a TypedArray view over this Vector's owned buffer (zero-copy). */
|
|
94
|
+
toTypedArray(): TypedArray;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @brief Abstract rank-2 tensor base class.
|
|
98
|
+
*
|
|
99
|
+
* All 4 dimension fields are embedded — no dynamic allocation.
|
|
100
|
+
* Strides are in bytes to match the C API directly.
|
|
101
|
+
*/
|
|
102
|
+
export declare abstract class MatrixBase extends TensorBase {
|
|
103
|
+
readonly rows: number;
|
|
104
|
+
readonly cols: number;
|
|
105
|
+
readonly rowStride: number;
|
|
106
|
+
readonly colStride: number;
|
|
107
|
+
protected constructor(buffer: ArrayBuffer, byteOffset: number, dtype: DType, rows: number, cols: number, rowStride: number, colStride: number);
|
|
108
|
+
get length(): number;
|
|
109
|
+
get rank(): 2;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* @brief Owning rank-2 tensor (row-major, C-contiguous by default).
|
|
113
|
+
*
|
|
114
|
+
* Strides are byte strides. Default for C-contiguous layout:
|
|
115
|
+
* rowStride = cols * bytesPerElement, colStride = bytesPerElement.
|
|
116
|
+
*/
|
|
117
|
+
export declare class Matrix extends MatrixBase {
|
|
118
|
+
constructor(rows: number, cols: number, dtype: DType);
|
|
119
|
+
constructor(buffer: ArrayBuffer, byteOffset: number, dtype: DType, rows: number, cols: number, rowStride?: number, colStride?: number);
|
|
120
|
+
static fromTypedArray(array: TypedArray, rows: number, cols: number, dtype?: DType): Matrix;
|
|
121
|
+
toTypedArray(): TypedArray;
|
|
122
|
+
row(index: number): VectorView;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @brief Opaque packed matrix container.
|
|
126
|
+
*
|
|
127
|
+
* Packed layout is not indexable — this is a data container for packed GEMM kernels.
|
|
128
|
+
* N-API path: buffer is a V8-managed ArrayBuffer, auto-freed by GC.
|
|
129
|
+
* WASM path: stores a heap pointer, dispose() calls Module._free().
|
|
130
|
+
*/
|
|
131
|
+
export declare class PackedMatrix {
|
|
132
|
+
readonly width: number;
|
|
133
|
+
readonly depth: number;
|
|
134
|
+
readonly dtype: DType;
|
|
135
|
+
readonly byteLength: number;
|
|
136
|
+
readonly buffer: ArrayBuffer;
|
|
137
|
+
private _disposed;
|
|
138
|
+
constructor(buffer: ArrayBuffer, width: number, depth: number, dtype: DType, byteLength: number);
|
|
139
|
+
dispose(): void;
|
|
140
|
+
get disposed(): boolean;
|
|
141
|
+
}
|
|
142
|
+
/** @brief Kernel family identifiers for output dtype resolution. */
|
|
143
|
+
export type KernelFamily = 'dots' | 'angulars' | 'euclideans';
|
|
144
|
+
/**
|
|
145
|
+
* @brief Determines the output dtype for a given kernel family and input dtype.
|
|
146
|
+
* Mirrors nk_kernel_output_dtype from C.
|
|
147
|
+
*/
|
|
148
|
+
export declare function outputDtype(family: KernelFamily, input: DType): DType;
|
|
149
|
+
/**
|
|
150
|
+
* @brief IEEE 754 Half Precision Float (f16)
|
|
151
|
+
*
|
|
152
|
+
* 16-bit floating point: 1 sign bit, 5 exponent bits, 10 mantissa bits
|
|
153
|
+
* Range: ~±65504, precision: ~3-4 decimal digits
|
|
154
|
+
*
|
|
155
|
+
* Common in GPU inference, model compression, and mixed-precision training.
|
|
156
|
+
* Supported natively on Apple Silicon, NVIDIA GPUs (fp16), AMD GPUs.
|
|
157
|
+
*/
|
|
158
|
+
export declare class Float16Array extends Uint16Array {
|
|
159
|
+
constructor(length: number | ArrayLike<number> | ArrayBufferLike, byteOffset?: number, arrayLength?: number);
|
|
160
|
+
/**
|
|
161
|
+
* @brief Converts the entire f16 array to f32 (Float32Array).
|
|
162
|
+
* @returns Float32Array with decoded values
|
|
163
|
+
*/
|
|
164
|
+
toFloat32Array(): Float32Array;
|
|
165
|
+
/**
|
|
166
|
+
* @brief Gets the f32 value at the specified index.
|
|
167
|
+
* @param index Array index
|
|
168
|
+
* @returns Decoded f32 value
|
|
169
|
+
*/
|
|
170
|
+
getFloat32(index: number): number;
|
|
171
|
+
/**
|
|
172
|
+
* @brief Sets the value at the specified index from an f32 value.
|
|
173
|
+
* @param index Array index
|
|
174
|
+
* @param value f32 value to encode and store
|
|
175
|
+
*/
|
|
176
|
+
setFloat32(index: number, value: number): void;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* @brief Brain Float 16 (bf16)
|
|
180
|
+
*
|
|
181
|
+
* 16-bit floating point: 1 sign bit, 8 exponent bits, 7 mantissa bits
|
|
182
|
+
* Range: same as f32 (~±3.4e38), precision: ~2-3 decimal digits
|
|
183
|
+
*
|
|
184
|
+
* Designed by Google for TPUs, optimized for ML training (wider range than f16).
|
|
185
|
+
* Supported on Google TPUs, Intel Sapphire Rapids, AMD Genoa, ARM Neoverse V2.
|
|
186
|
+
* Truncated f32 (top 16 bits), making conversion very cheap.
|
|
187
|
+
*/
|
|
188
|
+
export declare class BFloat16Array extends Uint16Array {
|
|
189
|
+
constructor(length: number | ArrayLike<number> | ArrayBufferLike, byteOffset?: number, arrayLength?: number);
|
|
190
|
+
toFloat32Array(): Float32Array;
|
|
191
|
+
getFloat32(index: number): number;
|
|
192
|
+
setFloat32(index: number, value: number): void;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* @brief FP8 E4M3 (4-bit exponent, 3-bit mantissa)
|
|
196
|
+
*
|
|
197
|
+
* 8-bit floating point: 1 sign bit, 4 exponent bits, 3 mantissa bits
|
|
198
|
+
* Range: ~±448, precision: ~1 decimal digit
|
|
199
|
+
*
|
|
200
|
+
* Optimized for forward pass inference with higher precision than E5M2.
|
|
201
|
+
* Supported on NVIDIA Hopper H100 GPUs, AMD Instinct MI300.
|
|
202
|
+
*/
|
|
203
|
+
export declare class E4M3Array extends Uint8Array {
|
|
204
|
+
constructor(length: number | ArrayLike<number> | ArrayBufferLike, byteOffset?: number, arrayLength?: number);
|
|
205
|
+
toFloat32Array(): Float32Array;
|
|
206
|
+
getFloat32(index: number): number;
|
|
207
|
+
setFloat32(index: number, value: number): void;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* @brief FP8 E5M2 (5-bit exponent, 2-bit mantissa)
|
|
211
|
+
*
|
|
212
|
+
* 8-bit floating point: 1 sign bit, 5 exponent bits, 2 mantissa bits
|
|
213
|
+
* Range: ~±57344, precision: <1 decimal digit
|
|
214
|
+
*
|
|
215
|
+
* Optimized for backward pass training with wider range than E4M3.
|
|
216
|
+
* Supported on NVIDIA Hopper H100 GPUs, AMD Instinct MI300.
|
|
217
|
+
*/
|
|
218
|
+
export declare class E5M2Array extends Uint8Array {
|
|
219
|
+
constructor(length: number | ArrayLike<number> | ArrayBufferLike, byteOffset?: number, arrayLength?: number);
|
|
220
|
+
toFloat32Array(): Float32Array;
|
|
221
|
+
getFloat32(index: number): number;
|
|
222
|
+
setFloat32(index: number, value: number): void;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* @brief Binary Array (u1) - Bit-packed binary vectors
|
|
226
|
+
*
|
|
227
|
+
* 1-bit per element, packed into bytes (8 bits per byte)
|
|
228
|
+
* Used for binary embeddings, hashing, and Hamming/Jaccard distances.
|
|
229
|
+
*
|
|
230
|
+
* Common in semantic search with binary quantization (Cohere, Voyage).
|
|
231
|
+
*/
|
|
232
|
+
export declare class BinaryArray extends Uint8Array {
|
|
233
|
+
private _bitLength;
|
|
234
|
+
constructor(bitLength: number);
|
|
235
|
+
/**
|
|
236
|
+
* @brief Gets the bit value at the specified index.
|
|
237
|
+
* @param index Bit index (0 to bitLength-1)
|
|
238
|
+
* @returns 0 or 1
|
|
239
|
+
*/
|
|
240
|
+
getBit(index: number): number;
|
|
241
|
+
/**
|
|
242
|
+
* @brief Sets the bit value at the specified index.
|
|
243
|
+
* @param index Bit index (0 to bitLength-1)
|
|
244
|
+
* @param value 0 or 1
|
|
245
|
+
*/
|
|
246
|
+
setBit(index: number, value: number): void;
|
|
247
|
+
/**
|
|
248
|
+
* @brief Returns the logical bit length of the array.
|
|
249
|
+
*/
|
|
250
|
+
get bitLength(): number;
|
|
251
|
+
/**
|
|
252
|
+
* @brief Creates a BinaryArray from a Float32Array (positive values = 1, else 0).
|
|
253
|
+
* @param vector Source floating-point vector
|
|
254
|
+
* @returns Binary array with quantized values
|
|
255
|
+
*/
|
|
256
|
+
static fromFloat32Array(vector: Float32Array): BinaryArray;
|
|
257
|
+
/**
|
|
258
|
+
* @brief Creates a BinaryArray from a Float64Array (positive values = 1, else 0).
|
|
259
|
+
* @param vector Source floating-point vector
|
|
260
|
+
* @returns Binary array with quantized values
|
|
261
|
+
*/
|
|
262
|
+
static fromFloat64Array(vector: Float64Array): BinaryArray;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* @brief Type guard to check if an object is a Float16Array.
|
|
266
|
+
*/
|
|
267
|
+
export declare function isFloat16Array(obj: any): obj is Float16Array;
|
|
268
|
+
/**
|
|
269
|
+
* @brief Type guard to check if an object is a BFloat16Array.
|
|
270
|
+
*/
|
|
271
|
+
export declare function isBFloat16Array(obj: any): obj is BFloat16Array;
|
|
272
|
+
/**
|
|
273
|
+
* @brief Type guard to check if an object is an E4M3Array.
|
|
274
|
+
*/
|
|
275
|
+
export declare function isE4M3Array(obj: any): obj is E4M3Array;
|
|
276
|
+
/**
|
|
277
|
+
* @brief Type guard to check if an object is an E5M2Array.
|
|
278
|
+
*/
|
|
279
|
+
export declare function isE5M2Array(obj: any): obj is E5M2Array;
|
|
280
|
+
/**
|
|
281
|
+
* @brief Type guard to check if an object is a BinaryArray.
|
|
282
|
+
*/
|
|
283
|
+
export declare function isBinaryArray(obj: any): obj is BinaryArray;
|
|
284
|
+
export {};
|