Delta Routing

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.

Speed against recomputing, by fraction of input changed
p0.010.040.160.320.50
Speed75.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.

Ask about Delta Routing for Ubuntu