The ABI is stable, versioned, and callable from any language that can load a shared library. There is no runtime overhead: no hidden thread pool, no implicit allocation, no garbage collector interaction. The C++ layer stays thin, typed, allocator-aware, and close enough to inline through, adding type-level result promotion and owning containers without hiding the dispatch model or the mixed-precision policy.
Topics
| Installation | |
|---|---|
| Quickstart5 | Every operation has one such dispatch point, named with best, which runs the best capability in the mask it gets; the root README describes the dispatch model once. |
| Highlights | This is the primary SDK in the project. |
| Scalar Types170 | The scalar wrappers in include/numkong/types.hpp are storage-first types. |
| Tensors and Views198 | The native containers are where most integration mistakes happen. |
| Dot Products2 | Dot products are one of the broadest parts of the native SDK. |
| Dense Distances3 | The dense spatial kernels cover the SciPy-style sqeuclidean, euclidean, and angular family. |
| Set Similarity2 | Packed-binary metrics operate on packed words, not on byte-wise booleans. |
| Probability Metrics2 | Probability kernels target divergences directly instead of making you rebuild them from scalar loops. |
| Geospatial Metrics13 | The native SDK exposes both the fast spherical approximation and the more accurate ellipsoidal solver, each between every row and every column of two packed point sets. |
| Curved Metrics2 | Curved-space kernels are separate from the flat Euclidean family because their dataflow is different. |
| Elementwise and Reductions27 | |
| Sparse Operations2 | Sparse helpers cover sorted-index intersection and weighted sparse dot products. |
| Matrix Kernels47 | This is a separate native subsystem from the raw vector kernels. |
| MaxSim6 | MaxSim is the late-interaction primitive used by systems such as ColBERT. |
| Mesh Alignment29 | Shape kernels compare 3D point clouds of any size, with no correspondence between points: Chamfer, Hausdorff, Wasserstein-Procrustes, and Gromov-Wasserstein. |
| Runtime Dispatch11 | Linking the library is the default, and the way to ship one binary across many CPU generations. |
| Parallelism | NumKong does not manage its own threads. |
| External Memory2 | Every kernel takes plain pointers, so any CPU-accessible memory works: mmap, pinned buffers, CUDA unified memory, custom arenas. |
| Platform Notes |