Recompute only what changed.
Delta Routing updates the output of a fixed operator, such as a matrix, a stencil, or a network, from the part of its input that changed, instead of recomputing it from the whole input. The cost follows the size of the change.
Measured speedup
p is the fraction of the input that changed between two updates.
| p | 0.01 | 0.04 | 0.16 | 0.32 | 0.50 |
|---|---|---|---|---|---|
| Speed | 75.06× | 17.66× | 3.94× | 1.79× | 1.09× |
Where the changes fall barely matters: at p = 0.01, contiguous, moving, and scattered changes measured 75.06× to 75.47×.
Flat column-packed delta against a full matrix-vector product (cblas_dgemv, tuned OpenBLAS 0.3.26, one thread). N = M = 1024, one right-hand side, f64, scattered changes. One pinned Intel i7-1165G7 core, g++ 13.3.0. Measured 11 August 2026.
Delta Routing for Ubuntu
A system package that routes the sparse matrix-vector calls of an unmodified binary through the delta path, so there is nothing to recompile.
- 39.25×
- against MKL on one thread
- 24.89×
- against a plain CSR loop
Against MKL at its best thread count, it ran about 14× faster on the same workload.
A contiguous block of changes that drifts between steps. NUC11 with an Intel i7-1165G7, MKL 2026.1.0, one core with MKL_NUM_THREADS=1 unless noted. N = M = 400,000 with 3.16 million nonzeros, churn rate ρ ≤ 0.25. Measured 3 August 2026.
Bindings for Python, Java, C and C++, Rust, Go, .NET, and Node.js, and an Ubuntu system package. The community package is open source under Apache-2.0 at github.com/HorneSci/hst-studio.