Skip to content

D47 — Portfolio variant set independent of thread count

Decision

The router portfolio's variant set is a setting (--variants), not the thread count: with --work it defaults to all eight variants for any --threads; the variants run on a pool of --threads workers in index order and the winner is the minimum of a total order (routed desc, vias, copper length, variant index). Without --work the default stays one variant per thread

Alternatives

Variants = threads (as before: --threads 1 --work ran variant 0 only, so the output changed with the thread count); successive halving first

Reason

Requirement N3: route --work N --seed S is byte-identical at 1, 2, 4, 8 threads (test thread_determinism); wall-clock mode is not deterministic anyway, so it keeps one variant per thread and its speed. Fewer threads than variants costs wall time, not quality; --variants 1 reproduces the old single-router run byte for byte. --time is a safety stop per variant, counted from that variant's start