Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #787.
Why
neo_surface_ler_testis the longest test binary in the PR gate's workspace phase. Its singlesurface_memory_ler_matches_across_stackstest ran the d=3 and d=5 memory experiments one after another on both stacks and then asserted equivalence and suppression, so a failure at either distance reported through one test name and libtest could not overlap the two distances.What
The test is now three:
d3_ler_matches_across_stacks,d5_ler_matches_across_stacksandd5_suppresses_ler_below_d3. Each distance is simulated and decoded once per test binary throughlogical_errors(distance)(twoOnceLockstatics); the suppression test reads both cached results instead of resampling, and a thread that reaches a slot another test is still filling blocks on the lock until that run finishes. Every assertion is unchanged: samep, shots, seed and confidence levels, the same per-stack Jeffreys overlap check and the same pooledd5.hi < d3.losuppression check. The calibration comments moved onto thePandSHOTSconstants.Verification
cargo fmt --check,cargo clippy -p pecos --features neo --tests -- -D warnings, pre-commit on the file: clean.cargo test -p pecos --features neo --test neo_surface_ler_testpassed three times; the--nocapturerun printed distinct intervals for the two slots (d=3: engines 106/20000, neo 75/20000; d=5: engines 38/20000, neo 35/20000), consistent with the calibration recorded in the file.taskset -c 0-3to match the runner: 204 s for the single test ondev(one sample, 760 CPU-s) against 186 s and 183 s for the split (725 and 716 CPU-s). The gain is about 9 percent, smaller than PR gate: neo_surface_ler_test bounds the pr-core-rust workspace test phase #787 estimated:run_stackalready uses four workers, so the old test was CPU-bound at 3.7 of 4 cores and the d=5 simulations are nearly the entire cost (d=3 finishes in under a minute). The remaining lever in PR gate: neo_surface_ler_test bounds the pr-core-rust workspace test phase #787 is the per-shot cost of the d=5 simulation, not scheduling.Review
Independent correctness review (Codex, read-only) of the split against
origin/dev: SHIP, no must-fixes. It confirmed the assertion predicates and inputs line by line, that theOnceLocksharing has no cyclic dependency under any libtest thread count, ordering or test filter, and that no other file references the old test name. One note, verified against the std 1.98.1 source (once_lock.rs,get_or_initusescall_once_force): the cell is never poisoned, so if the initializer panics the waiting test re-runs the simulation itself and then fails or passes on its own. A failing distance therefore costs one extra run rather than a hang; the doc comment onlogical_errorsnow says so.