Skip to content

[Mac agent] CC engine default flip: tiebreak + sparse rows + -cc-roworder=auto #217

Closed

Description

@guluchen

Round linked from #15 (hub). Priority 1 of the current plan: flip the CC engine defaults to the opt-in features merged on 2026-10-31.

Candidates

  • A: CC default rules excl,pack,orbf,parity,leaf,overlap,charge,tiebreak,sparse,sparseov,sparsemrv and -cc-roworder=auto as the default row order.
  • B (fallback): excl,pack,orbf,parity,leaf,overlap,charge,tiebreak and -cc-roworder=auto (no sparse tokens).

The previous default stays available as -cc-rules=excl,pack,orbf,parity,leaf,overlap,charge -cc-roworder=index; with those flags the output must be byte-identical to main. The MaxSAT default path is untouched (checked byte-identical).

Features: tiebreak (GH-162, #180), sparse/sparseov/sparsemrv (GH-181, #203), -cc-roworder=auto (GH-206, #215). The fixed mrv + -cc-roworder=bfs configuration (GH-183) is NOT part of either candidate (it fails the Tier 5 1.2x rule).

Gates (docs/OPTIMIZATION_LOOP_POLICY.md)

  • Tier 0: make test-cc, make test-cc-flags, answers equal the stems, every witness GF(2)-verified; old-default flags byte-identical to main.
  • Tiers 1-4: 5 seeds, main and candidate concurrently on pinned yfclab2 cores; per-tier geomean < 1 and no cell > 1.25. Tier 1 start-up floor reported to the PI, not decided here.
  • Tier 5: 6 h, default seed; no code solved by main's CC default may become more than 1.2x slower (watch LP_2610, LP_1428, LP_1122, LP_1768).
  • Results are grouped by the tier layout on main at judging time (a re-tiering data PR is in progress).

Activity

  1. added 2 commits that reference this issue on Nov 4, 2026
  2. guluchen commented on Nov 4, 2026

    @guluchen
    OwnerAuthor

    Round result: PR #220, candidate A (tiebreak,sparse,sparseov,sparsemrv added to the default rules, -cc-roworder=auto as the default). The PR is open and not merged: the Tier 1 start-up floor needs the PI's decision.

    • Tier 0: PASS.
      • make test-cc and make test-cc-flags (551 checks) pass.
      • With the old-default flags, every CC log is identical to main; the MaxSAT default path is unchanged.
      • 253 answer runs match their stems; 152 GF(2) witnesses check out.
    • Tiers 2-4 (5 seeds, concurrent): PASS. Geomeans T2 0.727, T3 0.769, T4 0.081; worst cell 1.023 (LP_714).
    • Tier 1:
      • Concurrent panel: 0.969.
      • Quiet interleaved panel: 1.031 (LP_442 1.076, about +2.5 ms from building the second auto half search).
      • This start-up floor is the only item outside the rules.
      • B (no sparse) has the same floor (1.035) and is weaker on T2/T4, so it is not an alternative.
    • Tier 5: no code that main's CC default solves is more than 1.2x slower. Worst is LP_1122 at 1.17x single run, 1.137x interleaved; LP_2610 1.14x / 1.078x; LP_1428 1.02x; LP_1768 1.04x. BB_360 takes 0.17x.
      • BB_756 / BB_864 / BB_1080 reach lb 32 (main reaches 30); TN_496 reaches lb 27 (main reaches 23).
    • Bounds above the stem names, reached by both arms: TN_468 23, TN_612 24, TN_648_14 21, TN_684 22. Relabelled reproductions (-seed=1 / -seed=2) are running before any rename.

    Evidence: optimization/experiments/GH-217/ on the PR branch.

  3. added 4 commits that reference this issue on Nov 4, 2026
  4. guluchen commented on Nov 4, 2026

    @guluchen
    OwnerAuthor

    Update (2026-11-05). PR #220 is still open and not merged; it waits for the PI.

    Merged main 972b28c (erasure opt-in, re-tier) and fecee8c into the branch.

    • Tier 0 on the merged binary passes:
      • make test-cc: PASS;
      • make test-cc-flags: 572/572;
      • CC logs with the old-default flags are identical to main on the new tier0+1 (35 codes);
      • answers: 550/550;
      • GF(2) witnesses: 290 OK.

    New tier layout, 5 seeds, concurrent (A geomean / worst cell):

    • T1: 0.855 / 1.111;
    • T2: 0.648 / 1.222 (LP_544, a 36 ms cell);
    • T3: 0.573 / 1.024;
    • T4 is empty.

    Tier 1 (quiet interleaved): A geomean 0.898; LP_442 alone is 1.467.

    • That cell's wall time is quantized by the 10 ms parent poll (usleep(10000)): runs land at about 23 ms or about 33 ms.
    • A's +9 % user time puts every A run in the 33 ms bucket.
    • This is the only item outside the rules and needs the PI's decision.

    Tier 5:

    • No solved code is more than 1.2x slower. On the merged binaries, the interleaved short LP cells are at most 1.112 (LP_1122).
    • New tier5 members: COLOR_331 0.12x; HGP_1105 0.06x.

    TN stem lbs not reached in 6 h (coordinator question):

    Renames merged: DistQLDPC #223 (fecee8c) and QDistSAT #17 (7ea1aa96):

    • TN_468_4_23to29;
    • TN_612_2_24to40;
    • TN_648_14_21to28;
    • TN_684_2_22to29.

    Each was reached by both main's and the candidate's CC default and reproduced with a relabelled run (same engine).

  5. guluchen commented on Nov 4, 2026

    @guluchen
    OwnerAuthor

    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 (poll() on a SIGCHLD self-pipe instead of usleep(10000)).

    Setup

    Tier 1 (9 codes): geomean 0.870, worst cell 1.082 (LP_442), no cell > 1.25.

    Code main wall (s) A wall (s) A/main A/main CPU
    AMC_438_6_17 0.0746 0.0595 0.798 0.769
    BB_186_10_14 0.0379 0.0332 0.875 0.988
    BB_288_12_18 0.3464 0.2628 0.759 0.760
    COLOR_127_1_13 0.0672 0.0332 0.494 0.450
    GB_144_12_12 0.0744 0.0721 0.969 0.995
    HGP_265_1_12 0.0331 0.0343 1.037 0.978
    HGP_610_64_6 0.1482 0.1437 0.970 1.000
    LP_340_56_8 0.0244 0.0252 1.033 1.058
    LP_442_68_10 0.0271 0.0293 1.082 1.064

    LP_442

    • The 1.467 in the earlier quiet panel was the 10 ms bucket.
    • With the fix, both arms' wall times are contiguous: main 24-37 ms, A 25-39 ms, 1 ms bins.
    • What remains is A's real extra CPU, about 6 % (the -cc-roworder=auto set-up noted earlier). It gives a 1.08x wall ratio.

    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.

  6. added 2 commits that reference this issue on Nov 4, 2026
  7. added a commit that references this issue on Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions