The size problem
A platform-specific LAPACK and BLAS stack is 7–60 MB, and it is tuned to the processor it was built for. On a board image that has to be signed, stored in flash and kept identical across a fleet, that is a large and variable dependency to carry for one routine. It also tends to assume a Fortran runtime and a glibc the board may not have.
libvve.so is one file. It contains its own eigensolver, depends on nothing beyond libc, libm and libpthread, and is the same source on an Intel or AMD workstation and on an Arm board.
libvve.so, to scale
What it needs
| Requirement | Value |
|---|---|
| Operating system | Linux (glibc) |
| Architectures | x86_64 (Intel, AMD) and aarch64 (Arm), from the same source |
| Shared libraries | libc, libm, libpthread |
| BLAS, LAPACK, Fortran runtime | none |
| Arithmetic | 64-bit IEEE-754 floating point, portable tier |
| Integration | LD_PRELOAD=libvve.so for existing LAPACK calls, or the bands-native C entry point |
Develop on the workstation, ship on the board
The expensive part of an embedded sensing product is not the first board, it is the evidence: the tests, the sign-off, the record that says the algorithm does what it claims. When the math library returns different last digits on the target than on the machine the evidence was gathered on, that record has to be re-argued for every new board.
VVE EigenCore returns the same bits on x86_64 and aarch64 from the same source, under either compiler. The tests that pass on the developer's workstation pass identically on the board, and the fingerprints prove it rather than assert it.
8-way grid — PASS
96
fingerprints identical across Intel/AMD and Arm, GCC and Clang
Memory that fits a board
A board does not have a server's memory. For banded problems the bands-native path never builds the dense matrix, so its working memory grows with N rather than N². That is what lets a large array fit in a board's budget rather than a workstation's.
Peak resident memory, N = 524,288
53MB
against the dense N×N buffer the same problem would require
Growth per dimension
46bytes / dimension
so the ceiling is set by the problem, not the solver
The workload it was built around
Direction-of-arrival estimation with MUSIC or ESPRIT puts a symmetric eigendecomposition inside every frame of a radar, sonar or communications array, on a board that has to fit, draw the power it is allowed, and later be qualified. Correlated sources bunch the eigenvalues together, which is the Wilkinson-type spectrum on which the structure-aware path is furthest ahead.
Clustered spectrum, N = 16,383
89.6×
vs single-threaded reference netlib LAPACK dsyev (the default dense path) — one core against one core, same machine
What it is not
- It is a Linux shared library. Linux (glibc) is the supported platform; there is no bare-metal or real-time-OS build to claim.
- It has no speed claim on dense, unstructured matrices. Where no band exists, the call runs an ordinary dense algorithm.
- Its determinism guarantee is per build. A new version of VVE may move the last bit, and we say so rather than hide it.