Repository navigation
Restore the ITensors.jl cross-check and key the results by measured revision - #8
Merged
Merged
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.
Two changes that make the recorded results reachable and independently checkable.
1. ITensors.jl cross-check for the MPO contraction inputs
julia/and its three checks were deleted in9ea63f1("Consolidate benchmarksaround interpolative Gaussian inputs"), which also replaced the Gaussian input
family. The export half survived but had no consumer left, so nothing recorded
had been read back by an implementation other than the one that wrote it.
Restored for case 3, adapted to the current instance definition:
mpo_mpo_aniso_patchedhonoursEXPORT_HDF5=<dir>and writesinstance-n<N>.h5(the fused site-dimension-4 QTTs as ITensorMPSMPSgroupsfandg) plusinstance-n<N>.json(the two analytic mixtures, the box,rand the tolerances).julia/check_mpo_mpo.jlreads that pair, asserts the case name first becausethe Gaussian cases once shared these file names, evaluates both tensors at 50
sampled fused grid points each, and compares with the closed form
f(x, y) = sum_i w_i exp(-(a_i dx^2 + 2 b_i dx dy + c_i dy^2)).Measured on this machine at the new pin:
n = 2n = 8n = 32The deviation is the scale of the
1e-6input truncation, so the check catchesa broken export or a wrong fused-index convention rather than bounding accuracy.
It is not vacuous: re-running
n = 8withCHECK_THRESHOLD=1e-9fails on thefirst sampled point.
CI installs Julia and runs the check on the
N = 2smoke instance, which thesmoke step now exports.
Case 1 still honours
EXPORT_HDF5but has no checker; its oldcheck_elementwise.jlis not restored here.2. Results keyed by the measured revision, with a generated index
There was one directory per machine, overwritten by the next sweep, so an older
sweep could not be linked to at all. Results now follow
tprims-benchmark:scripts/run_all.shreads the revision from theCargo.tomlpin, so therecorded revision, the directory and the built code cannot disagree, and it
regenerates the index at the end.
scripts/gen_index.pywritesresult/INDEX.mdand has a--checkmode thatCI runs. The index sorts by date, links each sweep's report, counts its
records, and marks a row
currentorsupersededagainst the pin.linux-epyc-7713p/9e9aedaebe0d/anda5157385f580/for the two Ryzenprofiles. No record was edited.
The README now opens on the index instead of a hand-written table that could go
stale.
Validation
cargo fmt --all -- --check,cargo clippy --locked --all-targets -- -D warnings,cargo test --release --locked(22 passed),python3 scripts/report.pyon eachof the three sweeps,
python3 scripts/gen_index.py --check,git diff --check,and
julia --project=julia julia/check_mpo_mpo.jlon the exportedn = 2, 8, 32instances.