exploratory · off the HST main path

HST as a local execution-node runtime layer

Put HST lower in the stack as a user-space runtime layer inside a fully sandboxed Linux VM, then measure whether sparse workloads can be transparently routed through it — instead of being called by hand from one demo.

Host
Apple M1 Max · arm64
macOS 26.3 · 10 core · 68 GB
Sandbox
Ubuntu 24.04 arm64
Multipass · Virtualization.framework
Profiler
Linux perf stat
ARM/NEON — no AVX/VTune path

Three execution paths, identical stream

baseline_csc — exact CSC reuse-delta every step. The honest sparse baseline.

library_hst — rebuild an HST schedule every step, then apply. Naive "call HST by hand": pays schedule-build cost on every update.

runtime_hst — a node that caches schedules keyed by the dirty-tile-set and gates by density. The caller just submit()s updates; the node decides HST-vs-CSC. This is the runtime layer.

Result — N=M=60k, fill=0.45, 2000 steps

dirty patterndensitybaseline_csclibrary_hstruntime_hstruntime / library
scattered640.0431.8 ms1175.8 ms31.2 ms37.7×
one_tile321.0025.0 ms65.2 ms28.5 ms2.29×
four_tiles321.0042.1 ms169.0 ms52.8 ms3.20×
eight_tiles321.0058.7 ms281.7 ms80.8 ms3.49×

The runtime layer recovers ~all of CSC's performance (it routes scattered updates away from HST) while running 2.3–37.7× faster than naive library-HST calls. The schedule cache is the whole point of putting HST in the stack as a runtime instead of a manual call.

Honest constraints

In-process only. A daemon / IPC / REST front destroys the sub-millisecond win. The "node" is a linked library, not a service.

Batch=1 doesn't beat CSC. Recovering CSC parity is the win at B=1; beating CSC needs the batched B≥8 kernels from the v10 envelope (up to ~2.5× at B=16).

User-space only. No BIOS, kernel drivers, bootloader, or host process injection — matches the tasking guardrails.