mirror of
https://github.com/The-OpenROAD-Project/OpenSTA.git
synced 2026-08-30 01:38:37 +02:00
Dispatch fixed-size chunks (8 vertices per task) instead of one contiguous slice per thread, so threads that finish early pick up more work. Chunk size vs. runtime is U-shaped; 8 is the smallest size at the bottom of the curve. report_checks on a 32-core machine (min of 5 runs): - gcd_sky130hd, 32 threads: 1845 us -> 1255 us (-32%) - gcd_sky130hd, 8 threads: 1254 us -> 1117 us (-11%) - aes_nangate45 (~17k inst): neutral; single-threaded path unchanged. To keep upstream merges clean, the fork logic lives in a new BfsIterator::visitLevelChunked() wrapped in "OpenROAD fork: BFS chunked dispatch" markers, called from one marked line in visitParallel's existing else branch. All other upstream lines are byte-identical. This is a stop-gap until the upstream BFS rework lands; on merge conflict take upstream and drop it. Signed-off-by: Drew <[email protected]>