Repository navigation
data: organize benchmarks into tier subdirectories (tier0-tier5); QT -> TN - #5
Merged
Merged
Conversation
…-> TN
Move the 27 shipped codes (108 matrix files, content and stems unchanged)
from data/{BB,BB2,LP,LP2,QT,QT2} into data/tier0 ... data/tier5 per the
2026-10-11 benchmark-tier spec, retiring the QT/QT2 directory names in
favour of the TN family name. No spec rename applies to stems shipped here.
- compare_distqldpc_binaries.py: resolve stems recursively under
--data-root (tier dirs, a single tier, or a flat dir) with a clearer error.
- run_benchmark_six_stemdirs.sh: run tier0 ... tier5 (one process/log per
tier) instead of the six family batches; add --tiers and --tier-timeouts
(tier4 2000 s, tier5 21600 s).
- run_benchmark_stems_dir.sh, benchmark_solver_performance.py,
precompute-logicals, distqldpc_runner hint: tier paths in help/examples.
- tests: tier membership/layout checks and harness lookup of LP_136_32_4,
BB_108_8_10, TN_360_4_unknown; TN_36_8_4 fixture now under data/tier0.
- README, data/README (tier table, timeouts, naming rule, QT -> TN),
docs/REPO_SCOPE, NOTICE (attribution kept; directory move recorded).
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.
Objective
Reorganize QDistSAT's benchmark matrices into difficulty tiers
data/tier0…data/tier5and retire theQT/QT2directory names in favour ofTN, following the PI benchmark-tier decisions of 2026-10-11, while keeping every consumer ofdata/working — in particular DistQLDPC's cross-repo CI (compare_distqldpc_binaries.py --data-root "$GITHUB_WORKSPACE/qdistsat/data" --stems LP_136_32_4 BB_108_8_10).What changed
Data move — 27 codes / 108 files, all
git mv(R100: content and stems unchanged). The spec renames (PK_31, xu_30, xu_42, TN_648_10_71) don't apply to any stem here, and codes that exist only in DistQLDPC are not copied.data/BB,BB2,LP,LP2,QTandQT2are gone.tables/*.texare kept unchanged because no stem was renamed.Tools / code
benchmarks/compare_distqldpc_binaries.py:matrix_prefixnow searches recursively under--data-root, so it works with the tier directories, a single tier, or a flat directory. It still requires exactly one match and now lists the matches when that fails. The CLI is unchanged.scripts/run_benchmark_six_stemdirs.sh: runs the six tier directories (one process and one log per tier) instead of the six family batches. New--tiers "tier0 tier1 …"runs a subset. New--tier-timeoutsapplies tier4 = 2000 s and tier5 = 21600 s; other tiers keep--timeout. Default behaviour is unchanged otherwise, and the help text now shows the actual default timeout (7200 s).scripts/run_benchmark_stems_dir.sh,benchmarks/benchmark_solver_performance.py,precompute-logicals(--benchmark-dirhelp), and thedistqldpc_runnerinstall hint: tier paths in help text and examples. Stem lookup was already recursive (qecc_sat.io).tests/test_repository_paths.pynow checks tier membership, that each stem has all 4 matrices, that every shipped stem is in exactly one tier, that only tier subdirectories exist and that noQT_*stem remains. It also checks that the harness finds LP_136_32_4 (tier0), BB_108_8_10 (tier1) and TN_360_4_unknown (tier5), both fromdata/and from the tier directory. Thetests/matrix_stem.pyfixture now points atdata/tier0.README.md,data/README.md(tier table with timeouts, naming rule{family}_{n}_{k}_{d}with family in BB/GB/LP/TN, QT -> TN, previous layout), anddocs/REPO_SCOPE.md. InNOTICEall attribution is kept, and a new §2c records the move from each former directory to its tier.Validation
python -m pytest tests/ -q(what CI runs; local Python 3.9.6 venv withpip install -e ".[dev]"): 44 passed, 1 skipped (the skip iscashw-coreplus not installed).data/, using the DistQLDPC main 7eadd54 binary as both baseline and candidate:scientific_semantics_match: true.benchmark_solver_performance.py --stem TN_36_8_4 -d 4 --solvers rc2-glucose42resolveddata/tier0/TN_36_8_4_Hx.txtand gave d=4 (OK).precompute-logicals LP_136_32_4resolveddata/tier0/…(and skipped it because the file exists).discover_css_matrix_stems('data')finds 27 stems with the counts 10/4/1/6/3/3.run_benchmark_six_stemdirs.sh --dry-run --tier-timeoutsbuilds one command per tier, with--timeout 2000for tier4 and--timeout 21600for tier5.--tiers "tier0 tier2"runs only those two.Scientific impact
Results / evidence
Discrepancy — reported, not resolved here: QDistSAT ships
TN_360_4_unknown(now indata/tier5) under that name. DistQLDPC and the tier spec list the same tier5 code asTN_360_4_24. Per the spec, the QDistSAT name is kept until the distance is cross-checked.PI action required
qdist-cross-repo-benchmark.ymlchecks out QDistSATmain, so merging this changes the data layout that CI sees. The harness on this branch resolves the CI stems in the new layout, as shown above. Options: (a) merge now; (b) hold until the matching DistQLDPC tier change lands. Also still open: the TN_360_4_unknown vs TN_360_4_24 name.🤖 Generated with Claude Code