SpectrumBuildOptions.maxThreads property
Max threads the pipeline may use at runtime.
-
0(default): emitparallel(yo)directives; runtime uses all available cores. Lowest per-frame latency; binds more CPU per pipeline. -1: single-thread schedule — skip parallel directives entirely. The kernel runs end-to-end on the calling thread with zero Halide worker-pool / queue / sync overhead. Use for workflows that comfortably sustain their target frame rate on one core, and where CPU cost per pipeline matters more than per-call latency (e.g. many concurrent low-load streams on one host). ->= 2: cap. Currently treated as auto for emission; a runtime thread-pool cap is a follow-up.
maxThreads: 1 is fundamentally different from binding the process to one CPU via taskset / cpuset. Pinning still causes parallel directives to execute — workers spawn, queue and sync overhead happens, all forced to time-share one core. That can be 10-25× slower than the actual kernel. maxThreads: 1 makes the SCHEDULE itself serial so the runtime doesn’t engage at all.
|
Signature:
maxThreads?: number;