Repository navigation
GH-217: CC default rules + tiebreak, sparse rows and -cc-roworder=auto (Tier 1 floor: PI decision) - #220
Merged
Conversation
…-roworder=auto The CC engine defaults become excl,pack,orbf,parity,leaf,overlap,charge,tiebreak, sparse,sparseov,sparsemrv with -cc-roworder=auto. The previous default stays available as -cc-rules=excl,pack,orbf,parity,leaf,overlap,charge -cc-roworder=index. README, -h, MODIFICATIONS and tests updated; trace header names auto. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tier 0 (tests, identity vs main with the old-default flags, answers, GF(2) witnesses), 5-seed Tier 1-4 panel (main / A / B), interleaved floor re-measurements, Tier 5 6 h runs (main / A), untiered codes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 4, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> # Conflicts: # MODIFICATIONS.md # README.md # src/cc/cc_half.h # src/core/distqldpc.cc # tests/test_cc_flags.sh
…erleaved Tier 1 / Tier 5 LP, lb-auto and speed checks, lb reproductions) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 4, 2026
Owner
Author
Tier 1 re-check on top of the GH-224 fix (#224, PR #226, main 82ca41d)#226 removes the 10 ms polling floor in the parent's wait loop ( Setup
Tier 1 (9 codes): geomean 0.870, worst cell 1.082 (LP_442), no cell > 1.25.
LP_442
Tier 0 (26 codes, information only): geomean 0.991, worst cell 1.186 (BB_144_12_12, 15.6 ms vs 18.5 ms), no cell > 1.25. Correctness: 3150 runs, all rc 0, all answers equal to the stem. stdout differs only in timing-dependent line order on GB_144_12_12, and main varies the same way across repetitions. The PR is not merged. The merge decision stays with the PI. |
Owner
Author
|
Merged under the standing progress rules:
🤖 Generated with Claude Code |
guluchen
pushed a commit
that referenced
this pull request
Nov 4, 2026
…H-225 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Closes #217 once merged (hub #15). Not merged by the agent: the Tier 1 start-up floor is outside the rules and needs the PI's decision (below).
Change
CC engine defaults (no search code changed):
excl,pack,orbf,parity,leaf,overlap,charge->excl,pack,orbf,parity,leaf,overlap,charge,tiebreak,sparse,sparseov,sparsemrv(candidate A);-cc-roworder=index->-cc-roworder=auto.The previous default stays available:
-cc-rules=excl,pack,orbf,parity,leaf,overlap,charge -cc-roworder=index(byte-identical to main). README,-h, MODIFICATIONS and the tests are updated; the-cc-traceheader namesautofor the auto row order. The MaxSAT default path is unchanged.Credits as for the components: Qubitserf 04b9349 (S. Cercelescu, MIT) for the first(g) tie-break, reversed-BFS row order and redundant pair-XOR checks; Puchert and Tillmann.
Tier 0
make test-cc: PASS.make test-cc-flags: 551 checks, 0 failed.-ub-pre=offis IDENTICAL 30/30; with the default-ub-pre=on, 3 of 30 runs differ only in which half's finder converges first (timing; main-vs-main differs the same way).Tiers 1-4
5 seeds; main, A and B ran concurrently on pinned yfclab2 cores. Ratio = median(arm) / median(main).
Tier 1 start-up floor (PI decision). Tier 1 cells take 24-39 ms. I also ran a quiet interleaved panel: 9 repetitions x 5 seeds, arms round-robin on one core. There the Tier 1 geomean is A 1.031 (LP_340 0.988, LP_442 1.076) and B 1.035. LP_442 costs about 2.5 ms more in both A and B, so the cost comes from
-cc-roworder=auto(it builds the second half search), not from the sparse tokens. The tier0 codes measured the same way give a geomean of 1.01 (max 1.050).Tier 5
6 h, default seed, main and A concurrent; all 27 codes. Every code that main's CC default solves:
No solved code is more than 1.2x slower. On the LP codes the extra time is the auto probe: one aborted bfs + mrv rerun of the first refuted level that takes at least 0.1 s.
Codes main does not solve:
Lower bounds above the stem names, reached by both arms:
Relabelled reproductions are running; the stems will be renamed in a separate PR.
Untiered codes are not judged here. A's worst cell is 1.18x (concurrent) and 1.051 (interleaved). A is much faster on HGP_1105 (187 s -> 3.7 s) and COLOR_331 (121 s -> 15 s).
Evidence:
optimization/experiments/GH-217/(runners,S0/,T5/,analysis.md).Update 2026-11-05: merged main 972b28c (#219 erasure opt-in, #221 re-tier) and fecee8c (#223 renames)
Tier 0 on the merged binary (b7b4126):
make test-cc-flags: 572/572.-ub-pre=offis IDENTICAL 70/70; with the default-ub-pre=on, 1 of 70 differs by finder timing only.make test-cc: see the issue comment.Re-judged under the new tier layout: 5 seeds, merged candidate vs main 972b28c, concurrent on pinned cores with idle SMT siblings.
Quiet interleaved Tier 1 (new layout, merged binaries, 9 repetitions x 5 seeds on one core): A geomean 0.898. LP_442 is 1.467, because the cell's wall time is quantized: the parent polls the CC child every 10 ms (
usleep(10000)insrc/core/distqldpc.cc). LP_442 runs land at about 23 ms or about 33 ms. A's extra user time (+9 %) pushes every A run into the 33 ms bucket, while main lands mostly at 23 ms. This one start-up-floor cell is the only item outside the rules, so the PR stays open for the PI.Tier 5:
TN lb shortfall vs stems (coordinator question):
Not a code regression. Same-session TN_360 to level 20: main 02879a9 runs within 1 % of the [Mac agent] CC engine: fractional-charge / edge-cover node lower bounds #157 binary c3c315d, with identical node counts. In the Tier 5 batch, levels took about 10-20 % longer than on the [Mac agent] CC engine: fractional-charge / edge-cover node lower bounds #157 day, which pushes lbs that [Mac agent] CC engine: fractional-charge / edge-cover node lower bounds #157 reached at 21 100-21 560 s past the 6 h limit.
-cc-lb-autois not the cause on TN_360/396/504. Charge stays on there (about 75 % prune rate).Forcing charge on does not recover the stem lbs (6 h, concurrent A vs A with
-cc-lb-auto=0):-cc-lb-auto=0The flip therefore does not include an lb-auto change.
The BB lbs (32) come with the flip itself (tiebreak).
Renames done (#223 in DistQLDPC, guluchen/QDistSAT#17), each reproduced with a relabelled run:
🤖 Generated with Claude Code