From 37128b3821987cad1216c9b36fb14c12a209168c Mon Sep 17 00:00:00 2001 From: lingrui96 <47836765+lingrui96@users.noreply.github.com> Date: Fri, 7 Aug 2026 13:47:00 +0200 Subject: [PATCH 1/9] Add design spec: track latest tensor4all-rs, expand default sweeps Co-Authored-By: Claude Fable 5 --- ...-08-07-latest-rev-expanded-sweep-design.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md diff --git a/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md b/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md new file mode 100644 index 0000000..f724788 --- /dev/null +++ b/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md @@ -0,0 +1,82 @@ +# Update to latest tensor4all-rs and expand the default sweeps + +Date: 2026-08-07 +Status: approved by repo user (lingrui96), pending execution + +## Goal + +Benchmark the current tip of tensor4all-rs with heavier sweeps than the two and a half +minute defaults, and produce a question list for Hiroshi about the next benchmark case. + +## Decisions + +1. **Pin moves to the latest origin/main of tensor4all-rs** (`ae655a9` at design time, + re-check at execution). The single new commit over the old pin is #575, a treetci + convergence fix authored by the repo user, expected to affect input TCI construction + time in cases 2 and 3, not the measured arm errors. If arm errors move, that is a + finding to record, not to paper over. +2. **The pin update and the sweep expansion land together in one commit**, by explicit + instruction of the repo user, overriding the AGENTS.md rule that a bump gets its own + commit. Old results are superseded, not preserved for comparison. +3. **Default sweeps grow to a roughly 20 minute full run**, and `result/mac-cpu` is + regenerated as the single standard result set. No separate heavy profile. +4. **No new benchmark case yet.** Candidate directions and open questions go to Hiroshi + first (see below). + +## Plan of work + +1. Update every `rev` in `Cargo.toml` to the latest tensor4all-rs origin/main. All seven + crates move together. +2. Probe actual costs on the new rev with `OUT_DIR` pointed at a scratch directory: + cases 2 and 3 at R = 12 and 14, case 1 at K = 128. The old R = 12 naive figure + (12.6 s) predates #575 and may be stale. +3. Fix the new defaults from the probe, targeting about 20 minutes for + `scripts/run_all.sh mac-cpu`. Working hypothesis: `BENCH_RS` default `6,8,10,12,14` + for cases 2 and 3, `BENCH_KS` default extended to 128 for case 1. If R = 14 naive + blows the budget, stop the default at 12 and note the cost of 14 in the README. + Keep every default arm enabled: comparability at equal budget is the point of the + suite, so shrinking `BENCH_ALGOS` is not on the table for defaults. +4. Run `scripts/run_all.sh mac-cpu` from a clean tree. All sanity gates must pass. +5. Update the README: pinned rev references, the quoted error and timing numbers in the + case 2 and 3 descriptions and the cost notes, the environment knob defaults table, + and the known issue 6 wording that names the pinned rev. +6. Commit everything as one commit: Cargo.toml, Cargo.lock, runner defaults, README, + `result/mac-cpu`. + +## Expectations to verify, not assume + +- Case 2 and 3 arm errors should be unchanged by #575. Compare against the superseded + numbers before discarding them. +- Case 2 error curves sit on the 1e-8 reference floor from R = 6 (known issue 4), so + the expanded R range adds timing information, not accuracy information. That is + expected and already documented. +- Input chi saturates around 70 to 80 for the default mixtures, so `BENCH_MAX_BOND` + (512) should stay slack at R = 14. If chi_in drifts up instead, the fixed output + budget `chi_in` changes meaning across R and the report note should say so. + +## Questions for Hiroshi (next case, direction) + +Candidate directions for a fourth case: + +- (a) Benchmark TCI or quantics construction itself. All current cases exclude input + construction from the timed region, but construction performance is live upstream + work (#575 is a construction fix). +- (b) Tree topologies. treetn supports non-chain topologies, every current case is a + chain. A tree contraction case would exercise what treetn uniquely offers. +- (c) Cross-language timing against the Julia tensor4all stack on identical instances. + Half the infrastructure exists (HDF5 export, Julia readback), but a timing harness + with proper warmup would be new work (AGENTS.md warns about JIT). +- (d) Higher dimension: 3D quantics, fused site dimension 8. + +Open questions: + +1. Which of (a) through (d) first, or something else entirely? +2. Is a fix planned for the simplett `contract_fit` stub + (tensor4all-rs#571)? That would enable the missing simplett fit arm in case 2. +3. Is a simplett elementwise product for tensor trains planned (known issue 7)? That + would give cases 1 and 3 a second engine on the same algorithm. +4. Are machine profiles beyond mac-cpu wanted (Linux, cluster)? +5. Should official sweeps pin the thread count (`RAYON_NUM_THREADS`) instead of + recording `threads: default`? +6. Case 2's reference floor near 1e-8 comes from the tail outside the box. If higher + accuracy comparisons are ever wanted, should `BENCH_BOX_L` grow? From 1d31c848f0725531ac7bc0b32ed320514858536c Mon Sep 17 00:00:00 2001 From: lingrui96 <47836765+lingrui96@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:02:55 +0200 Subject: [PATCH 2/9] Track latest tensor4all-rs (ae655a9), expand default sweeps to ~15 min The pin moves from 7cfec22 to ae655a9, picking up the treetci early stop on max_bond_dim saturation (#575). Default sweeps grow: cases 2 and 3 run BENCH_RS=6,8,10,12,14, case 1 adds K=128. Probed on this machine, the dominant cost is case 2 naive at about 100 s per run at r = 12 and 14; the old quote of 12.6 s at r = 12 was stale. See docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md. Co-Authored-By: Claude Fable 5 --- Cargo.lock | 34 +++++++++++++++++----------------- Cargo.toml | 14 +++++++------- src/bin/elementwise_fourier.rs | 2 +- src/bin/elementwise_gauss2d.rs | 7 ++++--- src/bin/mpo_mpo_quantics.rs | 10 +++++----- 5 files changed, 34 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7e5dff8..5635b37 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -71,13 +71,13 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f65693059b6b9c588b9f62fed1cedbf0a8b805631457ea162d68f0de186f3de5" +checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -2034,7 +2034,7 @@ dependencies = [ [[package]] name = "tensor4all-aci" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "num-complex", "rand 0.9.5", @@ -2049,7 +2049,7 @@ dependencies = [ [[package]] name = "tensor4all-core" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "anyhow", "dyn-clone", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "tensor4all-hdf5" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "anyhow", "hdf5-metno", @@ -2086,7 +2086,7 @@ dependencies = [ [[package]] name = "tensor4all-itensorlike" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "anyhow", "num-complex", @@ -2100,7 +2100,7 @@ dependencies = [ [[package]] name = "tensor4all-quanticstci" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "anyhow", "num-complex", @@ -2117,7 +2117,7 @@ dependencies = [ [[package]] name = "tensor4all-simplett" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "anyhow", "bnum", @@ -2135,7 +2135,7 @@ dependencies = [ [[package]] name = "tensor4all-tcicore" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "anyhow", "bnum", @@ -2151,7 +2151,7 @@ dependencies = [ [[package]] name = "tensor4all-tensorbackend" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "anyhow", "num-complex", @@ -2171,7 +2171,7 @@ dependencies = [ [[package]] name = "tensor4all-treetci" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "anyhow", "num-complex", @@ -2189,7 +2189,7 @@ dependencies = [ [[package]] name = "tensor4all-treetn" version = "0.2.0" -source = "git+https://github.com/tensor4all/tensor4all-rs?rev=7cfec2270700d4b218e02f451a340518b84016fb#7cfec2270700d4b218e02f451a340518b84016fb" +source = "git+https://github.com/tensor4all/tensor4all-rs?rev=ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3#ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3" dependencies = [ "anyhow", "dyn-clone", @@ -2556,18 +2556,18 @@ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "zerocopy" -version = "0.8.55" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.55" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index d0fc2e2..96b1995 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,13 +6,13 @@ license = "MIT" publish = false [dependencies] -tensor4all-simplett = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "7cfec2270700d4b218e02f451a340518b84016fb", package = "tensor4all-simplett" } -tensor4all-aci = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "7cfec2270700d4b218e02f451a340518b84016fb", package = "tensor4all-aci" } -tensor4all-treetn = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "7cfec2270700d4b218e02f451a340518b84016fb", package = "tensor4all-treetn" } -tensor4all-itensorlike = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "7cfec2270700d4b218e02f451a340518b84016fb", package = "tensor4all-itensorlike" } -tensor4all-quanticstci = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "7cfec2270700d4b218e02f451a340518b84016fb", package = "tensor4all-quanticstci" } -tensor4all-hdf5 = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "7cfec2270700d4b218e02f451a340518b84016fb", package = "tensor4all-hdf5" } -tensor4all-core = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "7cfec2270700d4b218e02f451a340518b84016fb", package = "tensor4all-core" } +tensor4all-simplett = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3", package = "tensor4all-simplett" } +tensor4all-aci = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3", package = "tensor4all-aci" } +tensor4all-treetn = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3", package = "tensor4all-treetn" } +tensor4all-itensorlike = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3", package = "tensor4all-itensorlike" } +tensor4all-quanticstci = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3", package = "tensor4all-quanticstci" } +tensor4all-hdf5 = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3", package = "tensor4all-hdf5" } +tensor4all-core = { git = "https://github.com/tensor4all/tensor4all-rs", rev = "ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3", package = "tensor4all-core" } num-complex = "0.4" rand = "0.9" rand_chacha = "0.9" diff --git a/src/bin/elementwise_fourier.rs b/src/bin/elementwise_fourier.rs index 952a107..a8cab1d 100644 --- a/src/bin/elementwise_fourier.rs +++ b/src/bin/elementwise_fourier.rs @@ -29,7 +29,7 @@ fn parse_algo(s: &str) -> ElementwiseAlgo { fn main() -> anyhow::Result<()> { let ks: Vec = std::env::var("BENCH_KS") - .unwrap_or_else(|_| "4,8,16,32,64".into()) + .unwrap_or_else(|_| "4,8,16,32,64,128".into()) .split(',') .map(|s| s.trim().parse().unwrap()) .collect(); diff --git a/src/bin/elementwise_gauss2d.rs b/src/bin/elementwise_gauss2d.rs index f9bc2ec..8071a4d 100644 --- a/src/bin/elementwise_gauss2d.rs +++ b/src/bin/elementwise_gauss2d.rs @@ -44,8 +44,9 @@ //! smoothly (1.8e-7 at 8 chi_in, 3.9e-8 unconstrained at chi_out = 837), so //! this is the price of the budget, not a broken arm. //! On cost, `naive` is again the expensive one, forming the full chi_in-squared -//! bond before truncating: 0.05 s at r = 6, 1.8 s at r = 8, 4.6 s at r = 10, -//! against 0.57 s for `fit_treetn` and 0.27 s for `zipup_treetn` at r = 10. +//! bond before truncating: it grows from well under a second at r = 6 to about +//! 10 s per run at r = 12 and 14, while every other arm stays under two +//! seconds across the default sweep (r = 6, 8, 10, 12, 14). use std::path::PathBuf; use t4a_bench::elementwise::{ @@ -92,7 +93,7 @@ fn parse_algo(s: &str) -> ElementwiseAlgo { fn main() -> anyhow::Result<()> { let rs: Vec = std::env::var("BENCH_RS") - .unwrap_or_else(|_| "6,8,10".into()) + .unwrap_or_else(|_| "6,8,10,12,14".into()) .split(',') .map(|s| s.trim().parse().unwrap()) .collect(); diff --git a/src/bin/mpo_mpo_quantics.rs b/src/bin/mpo_mpo_quantics.rs index 71d574c..b6fd4a4 100644 --- a/src/bin/mpo_mpo_quantics.rs +++ b/src/bin/mpo_mpo_quantics.rs @@ -60,10 +60,10 @@ //! Default sweep size: the quantics rank of the default mixture saturates //! around chi = 70 to 80. `naive` is the only expensive arm, since it forms the //! full contracted bond of size chi^2 before truncating; every other arm stays -//! under half a second across the default range. The defaults (r = 6, 8, 10 -//! with 3 timed runs, no warmup) keep a full sweep well under a minute on a -//! laptop. r = 12 is left out of the defaults because naive costs about 12.6 s -//! there, against 5.3 s at r = 10. Extend with for example +//! around a second or less across the default range. The defaults (r = 6, 8, +//! 10, 12, 14 with 3 timed runs, no warmup) size the whole case at roughly +//! twelve minutes on a laptop, nearly all of it naive at r = 12 and 14, which +//! cost about 100 s per run each. Extend with for example //! `BENCH_RS=6,8,10,12,14,16 BENCH_RUNS=5` for the heavy tail, and restrict //! `BENCH_ALGOS` to drop naive if only the cheap arms are wanted. @@ -92,7 +92,7 @@ fn parse_algo(s: &str) -> MpoAlgo { fn main() -> anyhow::Result<()> { let rs: Vec = std::env::var("BENCH_RS") - .unwrap_or_else(|_| "6,8,10".into()) + .unwrap_or_else(|_| "6,8,10,12,14".into()) .split(',') .map(|s| s.trim().parse().unwrap()) .collect(); From 14410364b23aab9b9cc339d50cc18efdf93d9c53 Mon Sep 17 00:00:00 2001 From: lingrui96 <47836765+lingrui96@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:32:23 +0200 Subject: [PATCH 3/9] Spec: add the mixed-machine profile question for Hiroshi Co-Authored-By: Claude Fable 5 --- .../specs/2026-08-07-latest-rev-expanded-sweep-design.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md b/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md index f724788..e365c8c 100644 --- a/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md +++ b/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md @@ -80,3 +80,8 @@ Open questions: recording `threads: default`? 6. Case 2's reference floor near 1e-8 comes from the tail outside the box. If higher accuracy comparisons are ever wanted, should `BENCH_BOX_L` grow? +7. The mac-cpu profile has mixed machines: the 2026-08-07 morning sweep ran on + Hiroshi's Mac, the afternoon one on an 8 GB M1 MacBook Pro where the naive arms at + r >= 10 are memory bound (README known issue 9), and run.yaml records only the + hostname. Should run.yaml capture chip and memory size, and should profiles be split + per machine? Which machine produces the official numbers? From 3dc40feb42f64d9a178418388e10134158dff6f8 Mon Sep 17 00:00:00 2001 From: lingrui96 <47836765+lingrui96@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:38:17 +0200 Subject: [PATCH 4/9] AGENTS.md: propose a pushing section, PR flow with human merge Co-Authored-By: Claude Fable 5 --- AGENTS.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 2dcc345..14ba3bd 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,6 +37,16 @@ change. Use `OUT_DIR=/tmp/...` for probe runs. move all the crates together, and never mix backend features across them. A bump can change measured numbers, so it belongs in its own commit with a rerun. +## Pushing + +Proposed, awaiting the maintainer's edit or veto. Work lands on main through a +pull request: push a branch, let CI run, and let a human decide the merge. Do +not push to main directly, and never force push a shared branch. An AI agent +may push a branch when asked to, but merging stays a human decision. A change +that replaces `result//` says in its PR description which machine +produced the sweep, so the numbers are reviewed together with the hardware +that made them. + ## Prose style No em dashes or en dashes anywhere in this repository's documents, comments or From afbe859faf4175e176fcc10197854f0f63294461 Mon Sep 17 00:00:00 2001 From: lingrui96 <47836765+lingrui96@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:42:23 +0200 Subject: [PATCH 5/9] run_all.sh: record chip and memory in run.yaml, allow REPORT_PYTHON override Co-Authored-By: Claude Fable 5 --- scripts/run_all.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/scripts/run_all.sh b/scripts/run_all.sh index 5041d62..b2d2150 100755 --- a/scripts/run_all.sh +++ b/scripts/run_all.sh @@ -26,15 +26,30 @@ DIRTY="$(git -C "$ROOT" diff --quiet -- ':(exclude)result' \ && git -C "$ROOT" diff --cached --quiet -- ':(exclude)result' \ || echo "-dirty")" +# Wall times are machine bound for the memory heavy arms (README known issue 9), +# so the hardware that produced a sweep is part of the record, not decoration. +if [ "$(uname -s)" = "Darwin" ]; then + CHIP="$(sysctl -n machdep.cpu.brand_string)" + MEM_GB="$(( $(sysctl -n hw.memsize) / 1073741824 ))" +else + CHIP="$(lscpu 2>/dev/null | sed -n 's/^Model name: *//p' | head -1)" + CHIP="${CHIP:-unknown}" + MEM_GB="$(awk '/MemTotal/ {printf "%d", $2 / 1048576}' /proc/meminfo 2>/dev/null || echo unknown)" +fi + cat > "$OUT/run.yaml" < Date: Fri, 7 Aug 2026 14:50:34 +0200 Subject: [PATCH 6/9] run_all.sh: drop the hostname from run.yaml for privacy A DHCP hostname in a public repository leaks the operator's institution and network location over time, and identifies nothing the profile name, the machine label and the chip and memory fields do not already carry. BENCH_MACHINE overrides the label, defaulting to the profile name. Hostnames already in git history are left as they are. Co-Authored-By: Claude Fable 5 --- scripts/run_all.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/run_all.sh b/scripts/run_all.sh index b2d2150..3d273c5 100755 --- a/scripts/run_all.sh +++ b/scripts/run_all.sh @@ -37,10 +37,14 @@ else MEM_GB="$(awk '/MemTotal/ {printf "%d", $2 / 1048576}' /proc/meminfo 2>/dev/null || echo unknown)" fi +# No hostname: on a public repository a DHCP name leaks the operator's +# institution and location over time, and the machine identity is better +# carried by the profile name, the label below and the hardware fields. +# Set BENCH_MACHINE to override the label. cat > "$OUT/run.yaml" < Date: Fri, 7 Aug 2026 14:56:20 +0200 Subject: [PATCH 7/9] Split result profiles per machine, refresh quoted numbers for the new pin result/mac-cpu stays frozen as the maintainer's machine's record at the previous pin. The expanded-sweep numbers for the current pin land in result/mac-m1-8gb (committed separately with the sweep). README case descriptions, cost notes and known issue 9 now quote the new pin's sweep and name the machine; AGENTS.md gains the one-profile-per-machine rule. Co-Authored-By: Claude Fable 5 --- AGENTS.md | 7 +- README.md | 135 +++++++++++------- ...-08-07-latest-rev-expanded-sweep-design.md | 7 +- src/bin/elementwise_gauss2d.rs | 25 ++-- src/bin/mpo_mpo_quantics.rs | 14 +- 5 files changed, 117 insertions(+), 71 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 14ba3bd..9c6c15e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -29,7 +29,12 @@ make a run pass. Files under `result//` are generated by `scripts/run_all.sh ` and committed on purpose, as the record of a full sweep on a stated machine. Do not hand edit them, and do not regenerate them as a side effect of an unrelated -change. Use `OUT_DIR=/tmp/...` for probe runs. +change. Use `OUT_DIR=/tmp/...` for probe runs. One profile belongs to one +physical machine, named after the machine, and a sweep from a different machine +goes to its own profile instead of overwriting another machine's numbers: wall +times of the memory heavy arms differ by factors between machines (README known +issue 9). Never put a hostname in a result file, the machine label and the +hardware fields in `run.yaml` carry the identity. ## Upstream is pinned diff --git a/README.md b/README.md index 933d345..369c6f7 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,9 @@ revision that produced it. The pinned `tensor4all-rs` revision lives in `Cargo.t | Case | What it measures | Details | Runner | Latest report | Plots | | --- | --- | --- | --- | --- | --- | -| 1. `elementwise_fourier` | Elementwise product of two 1D quantics Fourier series, swept over the mode count `K`, against the exact product series | [description](#case-1-elementwise-hadamard-product-of-quantics-tensor-trains) | [`src/bin/elementwise_fourier.rs`](src/bin/elementwise_fourier.rs) | [`result/mac-cpu/elementwise_fourier.md`](result/mac-cpu/elementwise_fourier.md) | [time](result/mac-cpu/elementwise_fourier-time.svg), [error](result/mac-cpu/elementwise_fourier-error.svg) | -| 2. `mpo_mpo_quantics` | Contraction of two 2D quantics Gaussian-mixture MPOs over their shared variable, swept over bits per variable `R`, against the closed-form Gaussian integral | [description](#case-2-mpo-mpo-contraction-of-2d-quantics-gaussian-mixtures) | [`src/bin/mpo_mpo_quantics.rs`](src/bin/mpo_mpo_quantics.rs) | [`result/mac-cpu/mpo_mpo_quantics.md`](result/mac-cpu/mpo_mpo_quantics.md) | [time](result/mac-cpu/mpo_mpo_quantics-time.svg), [error](result/mac-cpu/mpo_mpo_quantics-error.svg) | -| 3. `elementwise_gauss2d` | Elementwise product of two 2D quantics Gaussian mixtures at a fixed output budget, swept over bits per variable `R`, against the exact pointwise product | [description](#case-3-elementwise-product-of-2d-quantics-gaussian-mixtures) | [`src/bin/elementwise_gauss2d.rs`](src/bin/elementwise_gauss2d.rs) | [`result/mac-cpu/elementwise_gauss2d.md`](result/mac-cpu/elementwise_gauss2d.md) | [time](result/mac-cpu/elementwise_gauss2d-time.svg), [error](result/mac-cpu/elementwise_gauss2d-error.svg) | +| 1. `elementwise_fourier` | Elementwise product of two 1D quantics Fourier series, swept over the mode count `K`, against the exact product series | [description](#case-1-elementwise-hadamard-product-of-quantics-tensor-trains) | [`src/bin/elementwise_fourier.rs`](src/bin/elementwise_fourier.rs) | [`result/mac-m1-8gb/elementwise_fourier.md`](result/mac-m1-8gb/elementwise_fourier.md) | [time](result/mac-m1-8gb/elementwise_fourier-time.svg), [error](result/mac-m1-8gb/elementwise_fourier-error.svg) | +| 2. `mpo_mpo_quantics` | Contraction of two 2D quantics Gaussian-mixture MPOs over their shared variable, swept over bits per variable `R`, against the closed-form Gaussian integral | [description](#case-2-mpo-mpo-contraction-of-2d-quantics-gaussian-mixtures) | [`src/bin/mpo_mpo_quantics.rs`](src/bin/mpo_mpo_quantics.rs) | [`result/mac-m1-8gb/mpo_mpo_quantics.md`](result/mac-m1-8gb/mpo_mpo_quantics.md) | [time](result/mac-m1-8gb/mpo_mpo_quantics-time.svg), [error](result/mac-m1-8gb/mpo_mpo_quantics-error.svg) | +| 3. `elementwise_gauss2d` | Elementwise product of two 2D quantics Gaussian mixtures at a fixed output budget, swept over bits per variable `R`, against the exact pointwise product | [description](#case-3-elementwise-product-of-2d-quantics-gaussian-mixtures) | [`src/bin/elementwise_gauss2d.rs`](src/bin/elementwise_gauss2d.rs) | [`result/mac-m1-8gb/elementwise_gauss2d.md`](result/mac-m1-8gb/elementwise_gauss2d.md) | [time](result/mac-m1-8gb/elementwise_gauss2d-time.svg), [error](result/mac-m1-8gb/elementwise_gauss2d-error.svg) | ## Benchmark cases @@ -45,17 +45,19 @@ The contraction output bond dimension is pinned to the input rank: every algorit with its maximum bond dimension capped at `chi_in`, the larger of the two input MPO ranks, so all arms are compared at the same output budget. The reported error is then the discriminator, namely the residual of the contracted MPO against the analytic Gaussian -integral. `BENCH_MAX_BOND` caps only the input TCI construction. As measured at `R` = 6, 8 -and 10 with the pinned revision, `naive` and `fit_treetn` land on the same error, around -`1e-8`, which is the reference floor of the case (known issue 4), at the same `chi_out` of -59 to 61, well below the budget they were allowed. The two zipup arms, `zipup_simplett` and -`zipup_treetn`, agree with each other to the last reported digit and sit three to four -orders of magnitude higher, around `1e-5` to `1e-4`, at the full budget. The split is +integral. `BENCH_MAX_BOND` caps only the input TCI construction. As measured at `R` = 6, 8, 10, 12 +and 14 with the pinned revision, `naive` and `fit_treetn` land on the same error, `8.6e-9` +to `2.9e-8`, which is the reference floor of the case (known issue 4), at the same `chi_out` +of 48 to 61, well below the budget they were allowed. The two zipup arms, `zipup_simplett` +and `zipup_treetn`, agree with each other to the last reported digit and sit three to four +orders of magnitude higher, `1.8e-5` to `1.1e-4`, at the full budget. The split is therefore algorithmic rather than engine-driven: single-pass zip-up truncation is what costs accuracy, and both engines running it produce the same answer. What zip-up buys is -speed, since it is the fastest arm at every `R` and stays flat near 0.2 s, while `naive` -grows steeply (0.38 s at `R` = 8, 5.2 s at `R` = 10) because it forms the full contracted -bond before truncating. `fit_treetn` reaches naive accuracy at a fraction of the naive cost. +speed, since it is the fastest arm at every `R` and stays flat between 0.02 s and 0.35 s, +while `naive` grows steeply (2.1 s at `R` = 8, 28 s at `R` = 10, around 96 s at `R` = 12) +because it forms the full contracted bond before truncating; at `R` >= 10 its wall time is +memory bound on the 8 GB test machine and should be read as order of magnitude (known +issue 9). `fit_treetn` reaches naive accuracy in under 0.65 s at every `R`. Runner: [`src/bin/mpo_mpo_quantics.rs`](src/bin/mpo_mpo_quantics.rs), sweep over `R`. ### Case 3: elementwise product of 2D quantics Gaussian mixtures @@ -76,35 +78,47 @@ compare two engines on one algorithm. Like case 2, the output bond dimension is pinned to the input rank: every algorithm runs capped at `chi_in`, the larger of the two input ranks, so all arms are compared at the same output budget and the error is the discriminator. `BENCH_MAX_BOND` caps only the input TCI -construction. As measured at `R` = 6, 8 and 10 with the pinned revision (`chi_in` of 53, 75 -and 77), `naive` and `fit_treetn` agree to the last reported digit at `8.5e-9`, `2.3e-8` and -`1.4e-8`, at the same `chi_out` of 39, 60 and 61, well inside the budget. `aci` matches or -beats them (`3.6e-11`, `1.3e-8`, `8.2e-9`) and is by far the cheapest arm, 1 ms to 113 ms, -because it never forms the product it is approximating. `zipup_treetn` collapses: it spends -the whole budget and still returns `6.2e-1`, `3.2e-1` and `4.8e-1`, an answer with no -correct digits, and that number swings by a factor of two between runs of the same -configuration, so read it as order one rather than as a measurement. The separation is much +construction. As measured at `R` = 6, 8, 10, 12 and 14 with the pinned revision (`chi_in` +of 53, 77, 79, 78 and 80), `naive` and `fit_treetn` agree to the last reported digit or +close to it, `8.5e-9` to `5.8e-8`, at the same `chi_out` of 39 to 62, well inside the +budget. `aci` matches or beats them (`3.6e-11` to `2.1e-8`) and is by far the cheapest arm, +2.6 ms to 58 ms, because it never forms the product it is approximating. `zipup_treetn` +collapses: it spends the whole budget and still returns errors between `8.5e-2` and +`8.0e-1` across the sweep, an answer with at most one correct digit, and that number swings +by a factor of several between runs of the same configuration, so read it as order one +rather than as a measurement. The separation is much sharper than in case 2, where the same single-pass truncation cost only three to four orders of magnitude, because the exact elementwise product has rank up to `chi_in` squared and a budget of `chi_in` discards nearly all of it, while naive and fit find a near-optimal basis for the same budget. Raising the budget recovers zipup smoothly, to `1.8e-7` at 8 `chi_in` and `3.9e-8` unconstrained, so this is the price of the fixed budget rather than a broken arm (known issue 8). On cost, `naive` is -again the expensive one, forming the full `chi_in`-squared bond before truncating: 0.05 s at -`R` = 6, 3.6 s at `R` = 8, 5.4 s at `R` = 10, against 0.58 s for `fit_treetn` and 0.26 s for -`zipup_treetn` at `R` = 10. +again the expensive one, forming the full `chi_in`-squared bond before truncating: 0.11 s at +`R` = 6, 5.1 s at `R` = 8, around 11 s at `R` = 10 to 14, against 1.6 s for `fit_treetn` +and 0.84 s for `zipup_treetn` at `R` = 14. Runner: [`src/bin/elementwise_gauss2d.rs`](src/bin/elementwise_gauss2d.rs), sweep over `R`. ## Latest results +One profile per physical machine, so numbers from different hardware never overwrite +each other. Each profile's `run.yaml` records the machine label, chip, memory, the +repository revision and the pinned tensor4all-rs revision that produced it. + +`mac-m1-8gb`, an 8 GB Apple M1 MacBook Pro, at the current pin and the full default +sweeps. The quoted numbers in the case descriptions above come from this profile: + +- [`result/mac-m1-8gb/elementwise_fourier.md`](result/mac-m1-8gb/elementwise_fourier.md) +- [`result/mac-m1-8gb/mpo_mpo_quantics.md`](result/mac-m1-8gb/mpo_mpo_quantics.md) +- [`result/mac-m1-8gb/elementwise_gauss2d.md`](result/mac-m1-8gb/elementwise_gauss2d.md) + +`mac-cpu`, the maintainer's Mac, kept as the second machine's record: measured at the +previous pin `7cfec22` with the previous, lighter default sweeps (`R` = 6, 8, 10 and +`K` up to 64), before `run.yaml` carried hardware fields: + - [`result/mac-cpu/elementwise_fourier.md`](result/mac-cpu/elementwise_fourier.md) - [`result/mac-cpu/mpo_mpo_quantics.md`](result/mac-cpu/mpo_mpo_quantics.md) - [`result/mac-cpu/elementwise_gauss2d.md`](result/mac-cpu/elementwise_gauss2d.md) -The scaling plots sit next to these files, and `result/mac-cpu/run.yaml` records the -machine, the repository revision, and the pinned tensor4all-rs revision that produced -them. - ## Running Prerequisites: @@ -116,15 +130,20 @@ Prerequisites: - [uv](https://docs.astral.sh/uv/) for the report generator (matplotlib, numpy). - Julia (optional), only for the independent ITensors.jl correctness checks below. -Full run and report for a machine profile: +Full run and report for a machine profile. Name the profile after the machine, one +profile per physical machine, for example: ```bash -scripts/run_all.sh mac-cpu +scripts/run_all.sh mac-m1-8gb ``` This builds in release mode, runs all three cases with their default sweeps into -`result/mac-cpu/raw/`, writes `result/mac-cpu/run.yaml`, and renders the Markdown reports -and SVG plots. +`result//raw/`, writes `result//run.yaml`, and renders the Markdown +reports and SVG plots. `run.yaml` deliberately records no hostname, only a machine +label (`BENCH_MACHINE`, defaulting to the profile name) plus the chip and memory size, +since a hostname on a public repository can leak the operator's institution and +location. On a machine without `uv`, point `REPORT_PYTHON` at any python that has +matplotlib and numpy. Smoke run (small, fast, useful for checking the toolchain). Cases 2 and 3 write the same `instance-r` file names, so give them different `EXPORT_HDF5` directories when both are @@ -153,28 +172,29 @@ a non-finite result. The gates are there to catch wrong results, not to certify Cost note: the quantics rank of the default case-2 mixture saturates around chi = 70 to 80. `naive` builds the full contracted bond of size chi squared before truncating and is the -only expensive arm: 0.02 s at `R` = 6, 0.38 s at `R` = 8, 5.2 s at `R` = 10. Every other arm -stays under half a second across that range. Every algorithm truncates back to the same -output budget `chi_out <= chi_in`, so the arms differ in accuracy at equal budget rather -than in how far their ranks are allowed to grow. The default sweep (`R` = 6, 8, 10 with 3 -timed runs) therefore takes well under a minute on a laptop. `R` = 12 is left out of the -defaults because naive costs about 12.6 s there. For the heavy tail, extend explicitly, for -example `BENCH_RS=6,8,10,12,14,16 BENCH_RUNS=5`. Restrict `BENCH_ALGOS`, dropping `naive`, -when you only want a quick signal. - -Case 3 has the same shape and the same expensive arm, at its own scale: naive costs 0.05 s -at `R` = 6, 3.6 s at `R` = 8 and 5.4 s at `R` = 10, and every other arm stays under a -second. Its default sweep takes a little over a minute, and `scripts/run_all.sh` finishes in -about two and a half minutes for all three cases plus the reports (measured 2 min 35 s for -the committed `mac-cpu` sweep). +only expensive arm: 0.04 s at `R` = 6, 2.1 s at `R` = 8, 28 s at `R` = 10, around 90 to +100 s per run at `R` = 12 and 14. Every other arm stays under a second across that range. +At `R` >= 10 the naive intermediates outgrow the 8 GB test machine, so its wall time there +is memory bound and varies with ambient memory pressure (known issue 9). Every algorithm +truncates back to the same output budget `chi_out <= chi_in`, so the arms differ in +accuracy at equal budget rather than in how far their ranks are allowed to grow. The +default sweep (`R` = 6, 8, 10, 12, 14 with 3 timed runs) is dominated by the naive runs at +`R` = 12 and 14 and takes roughly ten minutes on a laptop. For a quick signal, restrict +`BENCH_ALGOS` to drop `naive`, or shorten `BENCH_RS`. + +Case 3 has the same shape and the same expensive arm, at its own scale: naive costs 0.11 s +at `R` = 6, 5.1 s at `R` = 8 and around 11 s at `R` = 10 to 14, and every other arm stays +under two seconds. Its default sweep takes about three minutes, and `scripts/run_all.sh` +finishes in about 14 minutes for all three cases plus the reports (measured 13 min 31 s +for the committed `mac-m1-8gb` sweep). Environment knobs: | Variable | Applies to | Default | Meaning | | --- | --- | --- | --- | -| `BENCH_KS` | case 1 | `4,8,16,32,64` | comma-separated Fourier mode counts `K` to sweep | +| `BENCH_KS` | case 1 | `4,8,16,32,64,128` | comma-separated Fourier mode counts `K` to sweep | | `BENCH_R` | case 1 | `20` | number of quantics bits | -| `BENCH_RS` | cases 2 and 3 | `6,8,10` | comma-separated bits per variable `R` to sweep | +| `BENCH_RS` | cases 2 and 3 | `6,8,10,12,14` | comma-separated bits per variable `R` to sweep | | `BENCH_NGAUSS` | cases 2 and 3 | `8` | number of Gaussians per mixture | | `BENCH_BOX_L` | cases 2 and 3 | `6.0` | half-width `L` of the box `[-L, L]` | | `BENCH_ALPHA_LO` | cases 2 and 3 | `0.5` | lower bound of the Gaussian width parameter | @@ -263,8 +283,11 @@ the wrong instance. `contract_naive`'s compression sweep now establishes a right-to-left QR gauge before truncating, which dropped its error by about three orders of magnitude so that naive matches the variational fit. The pinned rev is - `7cfec2270700d4b218e02f451a340518b84016fb`, which contains all three. Earlier numbers in - this repository's git history predate them and are not comparable. + `ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3`, which contains all three plus + [tensor4all-rs#575](https://github.com/tensor4all/tensor4all-rs/pull/575), a treetci + convergence fix that stops input TCI construction early once the rank saturates at + `max_bond_dim`. Earlier numbers in this repository's git history predate these fixes + and are not comparable. 7. **simplett has no elementwise product for tensor trains at the pinned revision.** It offers MPO-MPO contraction (`contract_naive`, `contract_zipup`, the stubbed `contract_fit`) but nothing that forms a Hadamard product of two tensor trains, so cases @@ -273,7 +296,7 @@ the wrong instance. repository, as a core-wise bond Kronecker product plus an SVD sweep on simplett primitives, and is recorded with `engine` = `local` to keep that visible. 8. **Case-3 `zipup_treetn` has no correct digits at the fixed output budget.** It returns a - relative error of order one, between `3e-1` and `9e-1` depending on `R` and on the run, + relative error of order one, between `8e-2` and `8e-1` depending on `R` and on the run, across the default sweep, having spent the whole `chi_in` budget. This is a property of the case, not a defect of the arm: the exact elementwise product has rank up to `chi_in` squared, and given more room the same arm @@ -282,6 +305,18 @@ the wrong instance. so it is gated at a hardcoded `5.0` that only catches a scale blow-up or a non-finite result. Read the case-3 zipup error column as a verdict on the budget rather than as a precision measurement. +9. **`naive` wall times at `R` >= 10 are memory bound on the `mac-m1-8gb` machine.** The + naive arms form intermediates of bond `chi_in` squared, which at chi around 80 outgrow + an 8 GB machine's free memory (swap was in heavy use during the sweep), so their wall + time depends on ambient memory pressure: the spread across the three timed runs within + one sweep reaches 17 percent at `R` = 14, and the `R` = 12 median can come out above + the `R` = 14 one. For scale, the `mac-cpu` profile, a different Mac at the previous + pin, measured the case-2 naive point at `R` = 10 at 5.2 s against about 28 s on + `mac-m1-8gb`, with identical errors and `chi_out`. The cheap arms differ by tens of + percent at most between the two machines. Errors and bond dimensions are unaffected, + since the computation is the same arithmetic either way. So compare naive timings only + within one profile, and treat them at `R` >= 10 as order of magnitude there. This is + also why profiles are per machine and why `run.yaml` records the chip and memory. ## License diff --git a/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md b/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md index e365c8c..71e7fbb 100644 --- a/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md +++ b/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md @@ -18,8 +18,11 @@ minute defaults, and produce a question list for Hiroshi about the next benchmar 2. **The pin update and the sweep expansion land together in one commit**, by explicit instruction of the repo user, overriding the AGENTS.md rule that a bump gets its own commit. Old results are superseded, not preserved for comparison. -3. **Default sweeps grow to a roughly 20 minute full run**, and `result/mac-cpu` is - regenerated as the single standard result set. No separate heavy profile. +3. **Default sweeps grow to a roughly 20 minute full run.** Amended later the same day + after user feedback: instead of regenerating `result/mac-cpu` in place, profiles are + split per physical machine. `mac-cpu` stays frozen as the maintainer's machine's + record at the previous pin, and this sweep lands in `mac-m1-8gb`. `run.yaml` gains + chip and memory fields and drops the hostname for privacy. 4. **No new benchmark case yet.** Candidate directions and open questions go to Hiroshi first (see below). diff --git a/src/bin/elementwise_gauss2d.rs b/src/bin/elementwise_gauss2d.rs index 8071a4d..6ddd26d 100644 --- a/src/bin/elementwise_gauss2d.rs +++ b/src/bin/elementwise_gauss2d.rs @@ -26,17 +26,18 @@ //! shared with case 1 and recorded as `fit_nsweeps`: the fit cost is linear in //! the sweep count, so its wall time is only comparable at a stated count. //! -//! What the fixed budget measures, as observed at r = 6, 8, 10 with the pinned -//! revision (chi_in of 53, 76, 77): `naive` and `fit_treetn` agree to the last -//! reported digit at 8.5e-9, 2.3e-8 and 2.5e-8, at the same chi_out of 39, 60 -//! and 61, well inside the budget. `aci` matches them or beats them (3.6e-11, -//! 8.4e-9, 1.1e-8) and is by far the cheapest arm, 1 ms to 43 ms, because it +//! What the fixed budget measures, as observed at r = 6 to 14 with the pinned +//! revision (chi_in of 53 to 80): `naive` and `fit_treetn` agree to the last +//! reported digit or close to it, 8.5e-9 to 5.8e-8, at the same chi_out of 39 +//! to 62, well inside the budget. `aci` matches them or beats them (3.6e-11 to +//! 2.1e-8) and is by far the cheapest arm, 2.6 ms to 58 ms, because it //! never forms the product it is approximating. `zipup_treetn` collapses: it -//! spends the whole budget and still returns 6.2e-1, 4.2e-1 and 5.6e-1, that -//! is, an answer with no correct digits. Its error also swings by a factor of -//! two between runs of the same configuration, since chi_in moves by one and -//! the truncation it forces is severe, so read it as order one rather than as -//! a number. The separation is much sharper than in case 2, where the same +//! spends the whole budget and still returns errors between 8e-2 and 8e-1, +//! that is, an answer with at most one correct digit. Its error also swings by +//! a factor of several between runs of the same configuration, since chi_in +//! moves by one and the truncation it forces is severe, so read it as order +//! one rather than as a number. The separation is much sharper than in case 2, +//! where the same //! single-pass truncation cost only three to four orders of magnitude, because //! the exact elementwise product has rank up to chi_in squared and a budget of //! chi_in discards almost all of it, whereas naive and fit reach a @@ -64,8 +65,8 @@ const CASE: &str = "elementwise_gauss2d"; /// At the fixed output budget the single-pass zip-up truncation of an /// elementwise product is not merely less accurate, it fails outright: the /// measured relative error at the pinned revision is of order one across the -/// default sweep, between 4e-1 and 9e-1 depending on r and on the run, against -/// 1e-8 or better for every other arm. That +/// default sweep, between 8e-2 and 8e-1 depending on r and on the run, against +/// 1e-7 or better for every other arm. That /// is the headline result of this case, not a defect: given the same two inputs /// and a budget of 8 chi_in the same arm reaches 1.8e-7, and unconstrained it /// reaches 3.9e-8, so the algorithm is sound and the budget is what breaks it. diff --git a/src/bin/mpo_mpo_quantics.rs b/src/bin/mpo_mpo_quantics.rs index b6fd4a4..fb81fd2 100644 --- a/src/bin/mpo_mpo_quantics.rs +++ b/src/bin/mpo_mpo_quantics.rs @@ -19,16 +19,17 @@ //! `BENCH_MAX_BOND` keeps its role only as the cap for the input TCI //! construction in `to_quantics_mpo`. //! -//! What the fixed budget measures, as observed at r = 6, 8, 10 with the pinned +//! What the fixed budget measures, as observed at r = 6 to 14 with the pinned //! rev: `naive` and `fit_treetn` land on the same error, around 1e-8, which is -//! the reference floor of the case, at the same `chi_out` (59 to 61) well below +//! the reference floor of the case, at the same `chi_out` (48 to 61) well below //! the budget. The two zipup arms, `zipup_simplett` and `zipup_treetn`, agree //! with each other to the last reported digit and sit three to four orders of //! magnitude higher, around 1e-5 to 1e-4, at the full budget. So the split is //! algorithmic rather than engine-driven: single-pass zip-up truncation is what //! costs accuracy, and the two engines running it produce the same answer. //! What zipup buys is speed: it is the fastest arm at every r and stays flat -//! near 0.2 s, while `naive` grows steeply (0.64 s at r = 8, 5.3 s at r = 10) +//! between 0.02 s and 0.35 s, while `naive` grows steeply (2.1 s at r = 8, +//! 28 s at r = 10 on the committed sweep's 8 GB machine, README known issue 9) //! because it forms the full contracted bond before truncating. `fit_treetn` //! reaches naive accuracy at a fraction of the naive cost. //! @@ -39,7 +40,7 @@ //! only difference between them is the contraction method. That is the same //! engine case 1 uses for its elementwise fit. //! `tensor4all_simplett::mpo::contract_fit` is deliberately NOT benchmarked: at -//! the pinned upstream rev (tensor4all-rs 7cfec22) its local update +//! the pinned upstream rev (tensor4all-rs ae655a9) its local update //! `update_two_site_core` is still a placeholder that leaves the core //! untouched, so that path degenerates to naive plus dead sweeps //! (tensor4all-rs#571). @@ -62,8 +63,9 @@ //! full contracted bond of size chi^2 before truncating; every other arm stays //! around a second or less across the default range. The defaults (r = 6, 8, //! 10, 12, 14 with 3 timed runs, no warmup) size the whole case at roughly -//! twelve minutes on a laptop, nearly all of it naive at r = 12 and 14, which -//! cost about 100 s per run each. Extend with for example +//! ten minutes on a laptop, nearly all of it naive at r = 10 to 14, which +//! costs 30 to 100 s per run there (memory bound on an 8 GB machine, see +//! README known issue 9). Extend with for example //! `BENCH_RS=6,8,10,12,14,16 BENCH_RUNS=5` for the heavy tail, and restrict //! `BENCH_ALGOS` to drop naive if only the cheap arms are wanted. From 6ddb66f40be6f161898ca5174f1ca1e9572f859d Mon Sep 17 00:00:00 2001 From: lingrui96 <47836765+lingrui96@users.noreply.github.com> Date: Fri, 7 Aug 2026 15:20:45 +0200 Subject: [PATCH 8/9] Add the mac-m1-8gb sweep, quote its numbers Run post reboot on an otherwise idle machine, all gates green. run.yaml carries the machine label, chip and memory and no hostname; repo_rev is the clean docs commit that preceded the run. Known issue 9 now cites the measured pressure effect directly: the case-2 naive point at r = 10 cost about 28 s per run with swap nearly full and 16 s after a reboot, same code, same errors. Co-Authored-By: Claude Fable 5 --- README.md | 76 +- .../mac-m1-8gb/elementwise_fourier-error.svg | 1199 ++++++++++++ .../mac-m1-8gb/elementwise_fourier-time.svg | 1486 +++++++++++++++ result/mac-m1-8gb/elementwise_fourier.md | 12 + .../mac-m1-8gb/elementwise_gauss2d-error.svg | 1168 ++++++++++++ .../mac-m1-8gb/elementwise_gauss2d-time.svg | 1665 +++++++++++++++++ result/mac-m1-8gb/elementwise_gauss2d.md | 14 + result/mac-m1-8gb/mpo_mpo_quantics-error.svg | 1596 ++++++++++++++++ result/mac-m1-8gb/mpo_mpo_quantics-time.svg | 1618 ++++++++++++++++ result/mac-m1-8gb/mpo_mpo_quantics.md | 14 + .../raw/elementwise_fourier-aci-k128.json | 50 + .../raw/elementwise_fourier-aci-k16.json | 50 + .../raw/elementwise_fourier-aci-k32.json | 50 + .../raw/elementwise_fourier-aci-k4.json | 50 + .../raw/elementwise_fourier-aci-k64.json | 50 + .../raw/elementwise_fourier-aci-k8.json | 50 + .../raw/elementwise_fourier-fit-k128.json | 50 + .../raw/elementwise_fourier-fit-k16.json | 50 + .../raw/elementwise_fourier-fit-k32.json | 50 + .../raw/elementwise_fourier-fit-k4.json | 50 + .../raw/elementwise_fourier-fit-k64.json | 50 + .../raw/elementwise_fourier-fit-k8.json | 50 + .../raw/elementwise_fourier-naive-k128.json | 50 + .../raw/elementwise_fourier-naive-k16.json | 50 + .../raw/elementwise_fourier-naive-k32.json | 50 + .../raw/elementwise_fourier-naive-k4.json | 50 + .../raw/elementwise_fourier-naive-k64.json | 50 + .../raw/elementwise_fourier-naive-k8.json | 50 + .../raw/elementwise_fourier-zipup-k128.json | 50 + .../raw/elementwise_fourier-zipup-k16.json | 50 + .../raw/elementwise_fourier-zipup-k32.json | 50 + .../raw/elementwise_fourier-zipup-k4.json | 50 + .../raw/elementwise_fourier-zipup-k64.json | 50 + .../raw/elementwise_fourier-zipup-k8.json | 50 + .../raw/elementwise_gauss2d-aci-r10.json | 45 + .../raw/elementwise_gauss2d-aci-r12.json | 47 + .../raw/elementwise_gauss2d-aci-r14.json | 49 + .../raw/elementwise_gauss2d-aci-r6.json | 41 + .../raw/elementwise_gauss2d-aci-r8.json | 43 + .../elementwise_gauss2d-fit_treetn-r10.json | 45 + .../elementwise_gauss2d-fit_treetn-r12.json | 47 + .../elementwise_gauss2d-fit_treetn-r14.json | 49 + .../elementwise_gauss2d-fit_treetn-r6.json | 41 + .../elementwise_gauss2d-fit_treetn-r8.json | 43 + .../raw/elementwise_gauss2d-naive-r10.json | 45 + .../raw/elementwise_gauss2d-naive-r12.json | 47 + .../raw/elementwise_gauss2d-naive-r14.json | 49 + .../raw/elementwise_gauss2d-naive-r6.json | 41 + .../raw/elementwise_gauss2d-naive-r8.json | 43 + .../elementwise_gauss2d-zipup_treetn-r10.json | 45 + .../elementwise_gauss2d-zipup_treetn-r12.json | 47 + .../elementwise_gauss2d-zipup_treetn-r14.json | 49 + .../elementwise_gauss2d-zipup_treetn-r6.json | 41 + .../elementwise_gauss2d-zipup_treetn-r8.json | 43 + .../raw/mpo_mpo_quantics-fit_treetn-r10.json | 45 + .../raw/mpo_mpo_quantics-fit_treetn-r12.json | 47 + .../raw/mpo_mpo_quantics-fit_treetn-r14.json | 49 + .../raw/mpo_mpo_quantics-fit_treetn-r6.json | 41 + .../raw/mpo_mpo_quantics-fit_treetn-r8.json | 43 + .../raw/mpo_mpo_quantics-naive-r10.json | 45 + .../raw/mpo_mpo_quantics-naive-r12.json | 47 + .../raw/mpo_mpo_quantics-naive-r14.json | 49 + .../raw/mpo_mpo_quantics-naive-r6.json | 41 + .../raw/mpo_mpo_quantics-naive-r8.json | 43 + .../mpo_mpo_quantics-zipup_simplett-r10.json | 45 + .../mpo_mpo_quantics-zipup_simplett-r12.json | 47 + .../mpo_mpo_quantics-zipup_simplett-r14.json | 49 + .../mpo_mpo_quantics-zipup_simplett-r6.json | 41 + .../mpo_mpo_quantics-zipup_simplett-r8.json | 43 + .../mpo_mpo_quantics-zipup_treetn-r10.json | 45 + .../mpo_mpo_quantics-zipup_treetn-r12.json | 47 + .../mpo_mpo_quantics-zipup_treetn-r14.json | 49 + .../raw/mpo_mpo_quantics-zipup_treetn-r6.json | 41 + .../raw/mpo_mpo_quantics-zipup_treetn-r8.json | 43 + result/mac-m1-8gb/run.yaml | 9 + src/bin/elementwise_gauss2d.rs | 6 +- src/bin/mpo_mpo_quantics.rs | 8 +- 77 files changed, 11828 insertions(+), 43 deletions(-) create mode 100644 result/mac-m1-8gb/elementwise_fourier-error.svg create mode 100644 result/mac-m1-8gb/elementwise_fourier-time.svg create mode 100644 result/mac-m1-8gb/elementwise_fourier.md create mode 100644 result/mac-m1-8gb/elementwise_gauss2d-error.svg create mode 100644 result/mac-m1-8gb/elementwise_gauss2d-time.svg create mode 100644 result/mac-m1-8gb/elementwise_gauss2d.md create mode 100644 result/mac-m1-8gb/mpo_mpo_quantics-error.svg create mode 100644 result/mac-m1-8gb/mpo_mpo_quantics-time.svg create mode 100644 result/mac-m1-8gb/mpo_mpo_quantics.md create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-aci-k128.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-aci-k16.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-aci-k32.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-aci-k4.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-aci-k64.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-aci-k8.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-fit-k128.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-fit-k16.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-fit-k32.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-fit-k4.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-fit-k64.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-fit-k8.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-naive-k128.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-naive-k16.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-naive-k32.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-naive-k4.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-naive-k64.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-naive-k8.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-zipup-k128.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-zipup-k16.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-zipup-k32.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-zipup-k4.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-zipup-k64.json create mode 100644 result/mac-m1-8gb/raw/elementwise_fourier-zipup-k8.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r10.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r12.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r14.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r6.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r8.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r10.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r12.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r14.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r6.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r8.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r10.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r12.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r14.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r6.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r8.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r10.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r12.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r14.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r6.json create mode 100644 result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r8.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r10.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r12.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r14.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r6.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r8.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r10.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r12.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r14.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r6.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r8.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r10.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r12.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r14.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r6.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r8.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r10.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r12.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r14.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r6.json create mode 100644 result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r8.json create mode 100644 result/mac-m1-8gb/run.yaml diff --git a/README.md b/README.md index 369c6f7..ba86b03 100644 --- a/README.md +++ b/README.md @@ -47,17 +47,18 @@ so all arms are compared at the same output budget. The reported error is then t discriminator, namely the residual of the contracted MPO against the analytic Gaussian integral. `BENCH_MAX_BOND` caps only the input TCI construction. As measured at `R` = 6, 8, 10, 12 and 14 with the pinned revision, `naive` and `fit_treetn` land on the same error, `8.6e-9` -to `2.9e-8`, which is the reference floor of the case (known issue 4), at the same `chi_out` +to `3.0e-8`, which is the reference floor of the case (known issue 4), at the same `chi_out` of 48 to 61, well below the budget they were allowed. The two zipup arms, `zipup_simplett` and `zipup_treetn`, agree with each other to the last reported digit and sit three to four orders of magnitude higher, `1.8e-5` to `1.1e-4`, at the full budget. The split is therefore algorithmic rather than engine-driven: single-pass zip-up truncation is what costs accuracy, and both engines running it produce the same answer. What zip-up buys is -speed, since it is the fastest arm at every `R` and stays flat between 0.02 s and 0.35 s, -while `naive` grows steeply (2.1 s at `R` = 8, 28 s at `R` = 10, around 96 s at `R` = 12) -because it forms the full contracted bond before truncating; at `R` >= 10 its wall time is -memory bound on the 8 GB test machine and should be read as order of magnitude (known -issue 9). `fit_treetn` reaches naive accuracy in under 0.65 s at every `R`. +speed, since it is the fastest arm at every `R` and stays flat between 0.01 s and 0.3 s, +while `naive` grows steeply (1.3 s at `R` = 8, 16 s at `R` = 10, around 45 to 48 s at +`R` = 12 and 14) because it forms the full contracted bond before truncating; at +`R` >= 10 its wall time is memory bound on the 8 GB machine of the committed profile and +sensitive to ambient memory pressure (known issue 9). `fit_treetn` reaches naive accuracy +in under 0.55 s at every `R`. Runner: [`src/bin/mpo_mpo_quantics.rs`](src/bin/mpo_mpo_quantics.rs), sweep over `R`. ### Case 3: elementwise product of 2D quantics Gaussian mixtures @@ -79,12 +80,12 @@ Like case 2, the output bond dimension is pinned to the input rank: every algori capped at `chi_in`, the larger of the two input ranks, so all arms are compared at the same output budget and the error is the discriminator. `BENCH_MAX_BOND` caps only the input TCI construction. As measured at `R` = 6, 8, 10, 12 and 14 with the pinned revision (`chi_in` -of 53, 77, 79, 78 and 80), `naive` and `fit_treetn` agree to the last reported digit or -close to it, `8.5e-9` to `5.8e-8`, at the same `chi_out` of 39 to 62, well inside the -budget. `aci` matches or beats them (`3.6e-11` to `2.1e-8`) and is by far the cheapest arm, -2.6 ms to 58 ms, because it never forms the product it is approximating. `zipup_treetn` -collapses: it spends the whole budget and still returns errors between `8.5e-2` and -`8.0e-1` across the sweep, an answer with at most one correct digit, and that number swings +of 53, 76, 78, 80 and 79), `naive` and `fit_treetn` agree to the last reported digit or +close to it, `8.5e-9` to `6.4e-8`, at the same `chi_out` of 39 to 62, well inside the +budget. `aci` matches or beats them (`3.6e-11` to `1.3e-8`) and is by far the cheapest arm, +1.5 ms to 46 ms, because it never forms the product it is approximating. `zipup_treetn` +collapses: it spends the whole budget and still returns errors between `1.7e-1` and +`6.2e-1` across the sweep, an answer with no correct digits, and that number swings by a factor of several between runs of the same configuration, so read it as order one rather than as a measurement. The separation is much sharper than in case 2, where the same single-pass @@ -93,9 +94,9 @@ product has rank up to `chi_in` squared and a budget of `chi_in` discards nearly while naive and fit find a near-optimal basis for the same budget. Raising the budget recovers zipup smoothly, to `1.8e-7` at 8 `chi_in` and `3.9e-8` unconstrained, so this is the price of the fixed budget rather than a broken arm (known issue 8). On cost, `naive` is -again the expensive one, forming the full `chi_in`-squared bond before truncating: 0.11 s at -`R` = 6, 5.1 s at `R` = 8, around 11 s at `R` = 10 to 14, against 1.6 s for `fit_treetn` -and 0.84 s for `zipup_treetn` at `R` = 14. +again the expensive one, forming the full `chi_in`-squared bond before truncating: 0.09 s at +`R` = 6, 4.2 s at `R` = 8, around 8 s at `R` = 10 to 14, against 1.2 s for `fit_treetn` +and 0.4 s for `zipup_treetn` at `R` = 14. Runner: [`src/bin/elementwise_gauss2d.rs`](src/bin/elementwise_gauss2d.rs), sweep over `R`. ## Latest results @@ -172,21 +173,21 @@ a non-finite result. The gates are there to catch wrong results, not to certify Cost note: the quantics rank of the default case-2 mixture saturates around chi = 70 to 80. `naive` builds the full contracted bond of size chi squared before truncating and is the -only expensive arm: 0.04 s at `R` = 6, 2.1 s at `R` = 8, 28 s at `R` = 10, around 90 to -100 s per run at `R` = 12 and 14. Every other arm stays under a second across that range. -At `R` >= 10 the naive intermediates outgrow the 8 GB test machine, so its wall time there -is memory bound and varies with ambient memory pressure (known issue 9). Every algorithm +only expensive arm: 0.04 s at `R` = 6, 1.3 s at `R` = 8, 16 s at `R` = 10, around 45 to +48 s per run at `R` = 12 and 14. Every other arm stays under a second across that range. +At `R` >= 10 the naive intermediates outgrow an 8 GB machine, so its wall time there is +memory bound and varies with ambient memory pressure (known issue 9). Every algorithm truncates back to the same output budget `chi_out <= chi_in`, so the arms differ in accuracy at equal budget rather than in how far their ranks are allowed to grow. The default sweep (`R` = 6, 8, 10, 12, 14 with 3 timed runs) is dominated by the naive runs at -`R` = 12 and 14 and takes roughly ten minutes on a laptop. For a quick signal, restrict +`R` = 12 and 14 and takes roughly six minutes on a laptop. For a quick signal, restrict `BENCH_ALGOS` to drop `naive`, or shorten `BENCH_RS`. -Case 3 has the same shape and the same expensive arm, at its own scale: naive costs 0.11 s -at `R` = 6, 5.1 s at `R` = 8 and around 11 s at `R` = 10 to 14, and every other arm stays -under two seconds. Its default sweep takes about three minutes, and `scripts/run_all.sh` -finishes in about 14 minutes for all three cases plus the reports (measured 13 min 31 s -for the committed `mac-m1-8gb` sweep). +Case 3 has the same shape and the same expensive arm, at its own scale: naive costs 0.09 s +at `R` = 6, 4.2 s at `R` = 8 and around 8 s at `R` = 10 to 14, and every other arm stays +under two seconds. Its default sweep takes about two minutes, and `scripts/run_all.sh` +finishes in roughly eight minutes for all three cases plus the reports, as measured for +the committed `mac-m1-8gb` sweep on an otherwise idle machine. Environment knobs: @@ -306,17 +307,20 @@ the wrong instance. result. Read the case-3 zipup error column as a verdict on the budget rather than as a precision measurement. 9. **`naive` wall times at `R` >= 10 are memory bound on the `mac-m1-8gb` machine.** The - naive arms form intermediates of bond `chi_in` squared, which at chi around 80 outgrow - an 8 GB machine's free memory (swap was in heavy use during the sweep), so their wall - time depends on ambient memory pressure: the spread across the three timed runs within - one sweep reaches 17 percent at `R` = 14, and the `R` = 12 median can come out above - the `R` = 14 one. For scale, the `mac-cpu` profile, a different Mac at the previous - pin, measured the case-2 naive point at `R` = 10 at 5.2 s against about 28 s on - `mac-m1-8gb`, with identical errors and `chi_out`. The cheap arms differ by tens of - percent at most between the two machines. Errors and bond dimensions are unaffected, - since the computation is the same arithmetic either way. So compare naive timings only - within one profile, and treat them at `R` >= 10 as order of magnitude there. This is - also why profiles are per machine and why `run.yaml` records the chip and memory. + naive arms form intermediates of bond `chi_in` squared, which at chi around 80 press + against an 8 GB machine's free memory, so their wall time depends on ambient memory + pressure: the case-2 point at `R` = 10 measured about 28 s per run on a session with + swap nearly full and 16 s on the same machine right after a reboot, same code, same + errors, same `chi_out`. The committed sweep is the post-reboot one, taken on an + otherwise idle machine, where the spread across the three timed runs stays within + about 5 percent at `R` = 12 and 14 (22 percent at `R` = 10, whose first run pays the + page-in). For scale across machines, the `mac-cpu` profile, a different Mac at the + previous pin, measured the same `R` = 10 point at 5.2 s. The cheap arms differ far + less. Errors and bond dimensions are unaffected everywhere, since the computation is + the same arithmetic either way. So compare naive timings only within one profile, run + official sweeps on an idle machine, and read cross-profile time ratios as hardware + statements. This is also why profiles are per machine and why `run.yaml` records the + chip and memory. ## License diff --git a/result/mac-m1-8gb/elementwise_fourier-error.svg b/result/mac-m1-8gb/elementwise_fourier-error.svg new file mode 100644 index 0000000..f2119d1 --- /dev/null +++ b/result/mac-m1-8gb/elementwise_fourier-error.svg @@ -0,0 +1,1199 @@ + + + + + + + + 2026-08-07T15:17:19.777638 + image/svg+xml + + + Matplotlib v3.11.0, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/result/mac-m1-8gb/elementwise_fourier-time.svg b/result/mac-m1-8gb/elementwise_fourier-time.svg new file mode 100644 index 0000000..d267d92 --- /dev/null +++ b/result/mac-m1-8gb/elementwise_fourier-time.svg @@ -0,0 +1,1486 @@ + + + + + + + + 2026-08-07T15:17:19.727821 + image/svg+xml + + + Matplotlib v3.11.0, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/result/mac-m1-8gb/elementwise_fourier.md b/result/mac-m1-8gb/elementwise_fourier.md new file mode 100644 index 0000000..95ef760 --- /dev/null +++ b/result/mac-m1-8gb/elementwise_fourier.md @@ -0,0 +1,12 @@ +# elementwise_fourier + +| algorithm | points | fitted time exponent | worst max abs error | +|---|---|---|---| +| aci | 6 | 0.93 | 3.74e-07 | +| fit | 6 | 1.03 | 6.49e-07 | +| naive | 6 | 1.52 | 6.49e-07 | +| zipup | 6 | 1.71 | 3.90e-06 | + +![time](./elementwise_fourier-time.svg) + +![error](./elementwise_fourier-error.svg) diff --git a/result/mac-m1-8gb/elementwise_gauss2d-error.svg b/result/mac-m1-8gb/elementwise_gauss2d-error.svg new file mode 100644 index 0000000..df7ab40 --- /dev/null +++ b/result/mac-m1-8gb/elementwise_gauss2d-error.svg @@ -0,0 +1,1168 @@ + + + + + + + + 2026-08-07T15:17:19.969520 + image/svg+xml + + + Matplotlib v3.11.0, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/result/mac-m1-8gb/elementwise_gauss2d-time.svg b/result/mac-m1-8gb/elementwise_gauss2d-time.svg new file mode 100644 index 0000000..2eb10b8 --- /dev/null +++ b/result/mac-m1-8gb/elementwise_gauss2d-time.svg @@ -0,0 +1,1665 @@ + + + + + + + + 2026-08-07T15:17:19.907060 + image/svg+xml + + + Matplotlib v3.11.0, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/result/mac-m1-8gb/elementwise_gauss2d.md b/result/mac-m1-8gb/elementwise_gauss2d.md new file mode 100644 index 0000000..8d4b1b1 --- /dev/null +++ b/result/mac-m1-8gb/elementwise_gauss2d.md @@ -0,0 +1,14 @@ +# elementwise_gauss2d + +| algorithm | points | fitted time exponent | worst max relative error | +|---|---|---|---| +| aci | 5 | 8.08 | 1.28e-08 | +| fit_treetn | 5 | 7.26 | 6.40e-08 | +| naive | 5 | 11.23 | 6.39e-08 | +| zipup_treetn | 5 | 6.90 | 6.20e-01 | + +Note: every algorithm forms the product at the same output budget, its maximum bond dimension capped at the input rank chi, so the error column is the discriminator. The exact elementwise product has rank up to chi squared, so this budget is tight: naive, fit_treetn and aci stay near the working tolerance while zipup_treetn spends the whole budget and still returns an order-unity relative error. Raising the budget recovers it, so that is the price of the fixed budget rather than a broken arm. There is no simplett arm here: simplett exposes no elementwise product for tensor trains at the pinned revision, so this case cannot compare the two engines on one algorithm the way case 2 does. The engine that ran each arm is recorded as engine: local for naive, treetn for the two hadamard arms, aci for the cross interpolation. The fitted time exponent is measured against input chi along a sweep of r, where the site count also grows, so it is not a pure chi power law. + +![time](./elementwise_gauss2d-time.svg) + +![error](./elementwise_gauss2d-error.svg) diff --git a/result/mac-m1-8gb/mpo_mpo_quantics-error.svg b/result/mac-m1-8gb/mpo_mpo_quantics-error.svg new file mode 100644 index 0000000..a9de5ad --- /dev/null +++ b/result/mac-m1-8gb/mpo_mpo_quantics-error.svg @@ -0,0 +1,1596 @@ + + + + + + + + 2026-08-07T15:17:20.200210 + image/svg+xml + + + Matplotlib v3.11.0, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/result/mac-m1-8gb/mpo_mpo_quantics-time.svg b/result/mac-m1-8gb/mpo_mpo_quantics-time.svg new file mode 100644 index 0000000..3eb6987 --- /dev/null +++ b/result/mac-m1-8gb/mpo_mpo_quantics-time.svg @@ -0,0 +1,1618 @@ + + + + + + + + 2026-08-07T15:17:20.132668 + image/svg+xml + + + Matplotlib v3.11.0, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/result/mac-m1-8gb/mpo_mpo_quantics.md b/result/mac-m1-8gb/mpo_mpo_quantics.md new file mode 100644 index 0000000..37d4d75 --- /dev/null +++ b/result/mac-m1-8gb/mpo_mpo_quantics.md @@ -0,0 +1,14 @@ +# mpo_mpo_quantics + +| algorithm | points | fitted time exponent | worst max relative error | +|---|---|---|---| +| fit_treetn | 5 | 6.15 | 2.95e-08 | +| naive | 5 | 16.10 | 2.89e-08 | +| zipup_simplett | 5 | 6.89 | 1.05e-04 | +| zipup_treetn | 5 | 6.16 | 1.05e-04 | + +Note: every algorithm contracts at the same output budget, its maximum bond dimension capped at the input rank chi, so the error column is the discriminator. naive and zipup_simplett run on the simplett engine, zipup_treetn and fit_treetn on treetn; both engines truncate relative to the largest singular value at the pinned revision. The two zipup arms are the same algorithm on the two engines, so their difference isolates the engine, and it is now confined to wall time. The fitted time exponent is measured against input chi along a sweep of r, where the site count also grows, so it is not a pure chi power law. + +![time](./mpo_mpo_quantics-time.svg) + +![error](./mpo_mpo_quantics-error.svg) diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-aci-k128.json b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k128.json new file mode 100644 index 0000000..7b30045 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k128.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "aci", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 128, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.002217333, + "wall_times_secs": [ + 0.002217333, + 0.002189625, + 0.002474917, + 0.002509459, + 0.002181209 + ], + "max_error": 3.73953913510689e-7, + "input_max_bond_dim": 16, + "output_max_bond_dim": 32, + "output_bond_dims": [ + 2, + 4, + 8, + 16, + 32, + 32, + 23, + 17, + 14, + 10, + 8, + 6, + 6, + 4, + 4, + 4, + 4, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-aci-k16.json b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k16.json new file mode 100644 index 0000000..3b386a5 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k16.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "aci", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 16, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.000918458, + "wall_times_secs": [ + 0.000918458, + 0.000909417, + 0.0009015, + 0.001276167, + 0.000965209 + ], + "max_error": 8.81700849861402e-8, + "input_max_bond_dim": 8, + "output_max_bond_dim": 16, + "output_bond_dims": [ + 2, + 4, + 8, + 16, + 14, + 12, + 9, + 8, + 6, + 6, + 4, + 4, + 4, + 4, + 4, + 3, + 3, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-aci-k32.json b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k32.json new file mode 100644 index 0000000..1cf045a --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k32.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "aci", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 32, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.001123166, + "wall_times_secs": [ + 0.001123166, + 0.001143875, + 0.001123167, + 0.0010935, + 0.001119333 + ], + "max_error": 1.1721608824323926e-7, + "input_max_bond_dim": 11, + "output_max_bond_dim": 22, + "output_bond_dims": [ + 2, + 4, + 8, + 16, + 22, + 17, + 12, + 10, + 9, + 7, + 7, + 5, + 5, + 5, + 4, + 4, + 3, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-aci-k4.json b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k4.json new file mode 100644 index 0000000..c96ca67 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k4.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "aci", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 4, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.000690417, + "wall_times_secs": [ + 0.000686833, + 0.000689125, + 0.000690417, + 0.000698083, + 0.000697 + ], + "max_error": 5.065903399571004e-8, + "input_max_bond_dim": 5, + "output_max_bond_dim": 9, + "output_bond_dims": [ + 2, + 4, + 8, + 9, + 9, + 8, + 6, + 6, + 4, + 4, + 3, + 3, + 3, + 3, + 3, + 3, + 2, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-aci-k64.json b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k64.json new file mode 100644 index 0000000..721ca7d --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k64.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "aci", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 64, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.001463083, + "wall_times_secs": [ + 0.0014465, + 0.001479167, + 0.001467833, + 0.001463083, + 0.001462083 + ], + "max_error": 2.859549581072562e-7, + "input_max_bond_dim": 14, + "output_max_bond_dim": 28, + "output_bond_dims": [ + 2, + 4, + 8, + 16, + 28, + 22, + 17, + 13, + 10, + 9, + 7, + 7, + 5, + 5, + 5, + 5, + 4, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-aci-k8.json b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k8.json new file mode 100644 index 0000000..692f083 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-aci-k8.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "aci", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 8, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.000839959, + "wall_times_secs": [ + 0.000838125, + 0.000898625, + 0.000871125, + 0.000839959, + 0.000832334 + ], + "max_error": 6.328716341074523e-8, + "input_max_bond_dim": 8, + "output_max_bond_dim": 16, + "output_bond_dims": [ + 2, + 4, + 8, + 16, + 12, + 10, + 8, + 7, + 7, + 5, + 5, + 5, + 4, + 4, + 3, + 3, + 3, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-fit-k128.json b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k128.json new file mode 100644 index 0000000..cfa11f2 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k128.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "fit", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 128, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.079603, + "wall_times_secs": [ + 0.079603, + 0.0796725, + 0.077073834, + 0.080484291, + 0.079400834 + ], + "max_error": 5.738211931651007e-7, + "input_max_bond_dim": 16, + "output_max_bond_dim": 18, + "output_bond_dims": [ + 2, + 4, + 8, + 16, + 18, + 13, + 10, + 8, + 7, + 6, + 5, + 4, + 4, + 4, + 3, + 3, + 3, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-fit-k16.json b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k16.json new file mode 100644 index 0000000..2c7acf2 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k16.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "fit", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 16, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.0305235, + "wall_times_secs": [ + 0.029720209, + 0.029351625, + 0.0305235, + 0.033423333, + 0.033965042 + ], + "max_error": 2.514203787545623e-7, + "input_max_bond_dim": 8, + "output_max_bond_dim": 10, + "output_bond_dims": [ + 2, + 4, + 8, + 10, + 8, + 7, + 6, + 5, + 5, + 4, + 4, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-fit-k32.json b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k32.json new file mode 100644 index 0000000..c2ba2ca --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k32.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "fit", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 32, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.038845791, + "wall_times_secs": [ + 0.038091875, + 0.036870708, + 0.039785666, + 0.042719583, + 0.038845791 + ], + "max_error": 6.376609129164904e-7, + "input_max_bond_dim": 11, + "output_max_bond_dim": 13, + "output_bond_dims": [ + 2, + 4, + 8, + 13, + 10, + 8, + 7, + 6, + 5, + 5, + 4, + 4, + 3, + 3, + 3, + 3, + 2, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-fit-k4.json b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k4.json new file mode 100644 index 0000000..e8b6bf2 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k4.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "fit", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 4, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.022955916, + "wall_times_secs": [ + 0.022955916, + 0.022937417, + 0.022870125, + 0.0907145, + 0.034338125 + ], + "max_error": 7.943939048205503e-8, + "input_max_bond_dim": 5, + "output_max_bond_dim": 8, + "output_bond_dims": [ + 2, + 4, + 8, + 7, + 6, + 5, + 5, + 4, + 4, + 3, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-fit-k64.json b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k64.json new file mode 100644 index 0000000..7889a9e --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k64.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "fit", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 64, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.053355459, + "wall_times_secs": [ + 0.053355459, + 0.053971375, + 0.051933667, + 0.05134975, + 0.053771709 + ], + "max_error": 6.49112503618478e-7, + "input_max_bond_dim": 14, + "output_max_bond_dim": 16, + "output_bond_dims": [ + 2, + 4, + 8, + 16, + 13, + 10, + 8, + 7, + 6, + 5, + 4, + 4, + 4, + 3, + 3, + 3, + 3, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-fit-k8.json b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k8.json new file mode 100644 index 0000000..ad72032 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-fit-k8.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "fit", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 8, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.027111334, + "wall_times_secs": [ + 0.026187084, + 0.027079833, + 0.028503917, + 0.027111334, + 0.02752025 + ], + "max_error": 7.435455260018412e-8, + "input_max_bond_dim": 8, + "output_max_bond_dim": 8, + "output_bond_dims": [ + 2, + 4, + 8, + 8, + 7, + 6, + 5, + 5, + 4, + 4, + 3, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-naive-k128.json b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k128.json new file mode 100644 index 0000000..f096b29 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k128.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "naive", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 128, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.011822416, + "wall_times_secs": [ + 0.012348375, + 0.011829833, + 0.01140425, + 0.011822416, + 0.011665167 + ], + "max_error": 5.744880204194558e-7, + "input_max_bond_dim": 16, + "output_max_bond_dim": 18, + "output_bond_dims": [ + 2, + 4, + 8, + 16, + 18, + 13, + 10, + 8, + 7, + 6, + 5, + 4, + 4, + 4, + 3, + 3, + 3, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-naive-k16.json b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k16.json new file mode 100644 index 0000000..4ad9e67 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k16.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "naive", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 16, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.002389791, + "wall_times_secs": [ + 0.003750125, + 0.002239709, + 0.005330292, + 0.002064667, + 0.002389791 + ], + "max_error": 2.5142270964435527e-7, + "input_max_bond_dim": 8, + "output_max_bond_dim": 10, + "output_bond_dims": [ + 2, + 4, + 8, + 10, + 8, + 7, + 6, + 5, + 5, + 4, + 4, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-naive-k32.json b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k32.json new file mode 100644 index 0000000..31c51b1 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k32.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "naive", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 32, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.004399959, + "wall_times_secs": [ + 0.004410458, + 0.004660792, + 0.004399959, + 0.003861417, + 0.003613459 + ], + "max_error": 6.377530752244781e-7, + "input_max_bond_dim": 11, + "output_max_bond_dim": 13, + "output_bond_dims": [ + 2, + 4, + 8, + 13, + 10, + 8, + 7, + 6, + 5, + 5, + 4, + 4, + 3, + 3, + 3, + 3, + 2, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-naive-k4.json b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k4.json new file mode 100644 index 0000000..04d567c --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k4.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "naive", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 4, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.002248333, + "wall_times_secs": [ + 0.000883917, + 0.000874458, + 0.002248333, + 0.002482958, + 0.00266575 + ], + "max_error": 7.932838114995547e-8, + "input_max_bond_dim": 5, + "output_max_bond_dim": 8, + "output_bond_dims": [ + 2, + 4, + 8, + 7, + 6, + 5, + 5, + 4, + 4, + 3, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-naive-k64.json b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k64.json new file mode 100644 index 0000000..94d8ca8 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k64.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "naive", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 64, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.006503083, + "wall_times_secs": [ + 0.006648333, + 0.006275917, + 0.006503083, + 0.006191083, + 0.006558209 + ], + "max_error": 6.489719276280827e-7, + "input_max_bond_dim": 14, + "output_max_bond_dim": 16, + "output_bond_dims": [ + 2, + 4, + 8, + 16, + 13, + 10, + 8, + 7, + 6, + 5, + 4, + 4, + 4, + 3, + 3, + 3, + 3, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-naive-k8.json b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k8.json new file mode 100644 index 0000000..5e67124 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-naive-k8.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "naive", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 8, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.001547459, + "wall_times_secs": [ + 0.001968291, + 0.001545125, + 0.001547459, + 0.001585542, + 0.001542916 + ], + "max_error": 7.423232997232557e-8, + "input_max_bond_dim": 8, + "output_max_bond_dim": 8, + "output_bond_dims": [ + 2, + 4, + 8, + 8, + 7, + 6, + 5, + 5, + 4, + 4, + 3, + 3, + 3, + 3, + 3, + 2, + 2, + 2, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k128.json b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k128.json new file mode 100644 index 0000000..1ba22e0 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k128.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "zipup", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 128, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.041826084, + "wall_times_secs": [ + 0.04223375, + 0.041826084, + 0.041552375, + 0.042678375, + 0.040479583 + ], + "max_error": 3.8975117842573395e-6, + "input_max_bond_dim": 16, + "output_max_bond_dim": 106, + "output_bond_dims": [ + 4, + 16, + 47, + 106, + 105, + 79, + 58, + 38, + 28, + 21, + 19, + 12, + 12, + 7, + 6, + 5, + 5, + 4, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k16.json b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k16.json new file mode 100644 index 0000000..aa44464 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k16.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "zipup", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 16, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.008960416, + "wall_times_secs": [ + 0.008928875, + 0.008751708, + 0.00958575, + 0.009063083, + 0.008960416 + ], + "max_error": 1.6779439436850145e-7, + "input_max_bond_dim": 8, + "output_max_bond_dim": 52, + "output_bond_dims": [ + 4, + 16, + 50, + 52, + 42, + 30, + 22, + 20, + 13, + 13, + 8, + 8, + 8, + 8, + 6, + 3, + 3, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k32.json b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k32.json new file mode 100644 index 0000000..276c56e --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k32.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "zipup", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 32, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.015414042, + "wall_times_secs": [ + 0.015939333, + 0.014718292, + 0.014638792, + 0.015414042, + 0.016207416 + ], + "max_error": 1.2766629300444693e-7, + "input_max_bond_dim": 11, + "output_max_bond_dim": 80, + "output_bond_dims": [ + 4, + 16, + 36, + 80, + 59, + 38, + 29, + 22, + 22, + 15, + 13, + 8, + 8, + 8, + 8, + 6, + 3, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k4.json b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k4.json new file mode 100644 index 0000000..e95f128 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k4.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "zipup", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 4, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.005509959, + "wall_times_secs": [ + 0.006814042, + 0.005432125, + 0.005458084, + 0.005509959, + 0.005615792 + ], + "max_error": 5.139049197194527e-8, + "input_max_bond_dim": 5, + "output_max_bond_dim": 22, + "output_bond_dims": [ + 4, + 13, + 19, + 21, + 22, + 22, + 15, + 13, + 8, + 8, + 8, + 8, + 6, + 3, + 3, + 3, + 3, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k64.json b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k64.json new file mode 100644 index 0000000..511e9c6 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k64.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "zipup", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 64, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.02202175, + "wall_times_secs": [ + 0.022430958, + 0.021770417, + 0.02202175, + 0.0217315, + 0.023495916 + ], + "max_error": 5.017750121476428e-7, + "input_max_bond_dim": 14, + "output_max_bond_dim": 104, + "output_bond_dims": [ + 4, + 16, + 33, + 104, + 80, + 58, + 38, + 30, + 21, + 20, + 15, + 13, + 8, + 8, + 8, + 8, + 6, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k8.json b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k8.json new file mode 100644 index 0000000..27e51d1 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_fourier-zipup-k8.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "case": "elementwise_fourier", + "algorithm": "zipup", + "params": { + "error_metric": "max_abs", + "error_seed": 999, + "fit_nfullsweeps": 2, + "k_max": 8, + "max_bond": 4096, + "n_error_samples": 256, + "r": 20, + "runs": 5, + "warmups": 1 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.006852583, + "wall_times_secs": [ + 0.007326042, + 0.006977208, + 0.006852583, + 0.006825375, + 0.006586 + ], + "max_error": 9.541251568258087e-8, + "input_max_bond_dim": 8, + "output_max_bond_dim": 52, + "output_bond_dims": [ + 4, + 15, + 52, + 42, + 31, + 23, + 22, + 15, + 13, + 8, + 8, + 8, + 8, + 6, + 3, + 3, + 3, + 3, + 2 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r10.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r10.json new file mode 100644 index 0000000..c489c3d --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r10.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "aci", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 78, + "engine": "aci", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 10, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.04045425, + "wall_times_secs": [ + 0.041787208, + 0.04045425, + 0.040000417 + ], + "max_error": 8.72532007250987e-9, + "input_max_bond_dim": 78, + "output_max_bond_dim": 76, + "output_bond_dims": [ + 4, + 15, + 42, + 76, + 62, + 44, + 28, + 15, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r12.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r12.json new file mode 100644 index 0000000..5b40b37 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r12.json @@ -0,0 +1,47 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "aci", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 80, + "engine": "aci", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 12, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.045901833, + "wall_times_secs": [ + 0.046244166, + 0.045192333, + 0.045901833 + ], + "max_error": 1.1160684309644163e-8, + "input_max_bond_dim": 80, + "output_max_bond_dim": 75, + "output_bond_dims": [ + 4, + 15, + 42, + 75, + 63, + 46, + 29, + 21, + 15, + 10, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r14.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r14.json new file mode 100644 index 0000000..fe2b276 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r14.json @@ -0,0 +1,49 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "aci", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "aci", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 14, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.045774417, + "wall_times_secs": [ + 0.047346958, + 0.045774417, + 0.044783834 + ], + "max_error": 1.2770188053699731e-8, + "input_max_bond_dim": 79, + "output_max_bond_dim": 76, + "output_bond_dims": [ + 4, + 15, + 42, + 76, + 62, + 46, + 30, + 21, + 16, + 12, + 10, + 8, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r6.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r6.json new file mode 100644 index 0000000..7f30f91 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r6.json @@ -0,0 +1,41 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "aci", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 53, + "engine": "aci", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 6, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.001545417, + "wall_times_secs": [ + 0.001881041, + 0.001545417, + 0.00152875 + ], + "max_error": 3.5733924208573965e-11, + "input_max_bond_dim": 53, + "output_max_bond_dim": 42, + "output_bond_dims": [ + 4, + 15, + 42, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r8.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r8.json new file mode 100644 index 0000000..36d957b --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-aci-r8.json @@ -0,0 +1,43 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "aci", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 76, + "engine": "aci", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 8, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.015126917, + "wall_times_secs": [ + 0.016227083, + 0.015126917, + 0.014629708 + ], + "max_error": 1.2497590315313835e-8, + "input_max_bond_dim": 76, + "output_max_bond_dim": 71, + "output_bond_dims": [ + 4, + 15, + 42, + 71, + 50, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r10.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r10.json new file mode 100644 index 0000000..cb9df78 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r10.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 78, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 10, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.972767, + "wall_times_secs": [ + 0.972767, + 0.994268209, + 0.958598334 + ], + "max_error": 1.9836531258887958e-8, + "input_max_bond_dim": 78, + "output_max_bond_dim": 62, + "output_bond_dims": [ + 4, + 15, + 41, + 62, + 47, + 34, + 21, + 13, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r12.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r12.json new file mode 100644 index 0000000..b58a341 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r12.json @@ -0,0 +1,47 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 80, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 12, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 1.178024542, + "wall_times_secs": [ + 1.189688166, + 1.178024542, + 1.107682875 + ], + "max_error": 1.3803705222386574e-8, + "input_max_bond_dim": 80, + "output_max_bond_dim": 62, + "output_bond_dims": [ + 4, + 15, + 41, + 62, + 48, + 34, + 21, + 15, + 13, + 10, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r14.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r14.json new file mode 100644 index 0000000..ebc74cb --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r14.json @@ -0,0 +1,49 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 14, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 1.154263209, + "wall_times_secs": [ + 1.157109417, + 1.154263209, + 1.119221209 + ], + "max_error": 6.397715006695308e-8, + "input_max_bond_dim": 79, + "output_max_bond_dim": 61, + "output_bond_dims": [ + 4, + 15, + 41, + 61, + 48, + 34, + 21, + 15, + 13, + 10, + 9, + 6, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r6.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r6.json new file mode 100644 index 0000000..0dbbb1a --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r6.json @@ -0,0 +1,41 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 53, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 6, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.05706875, + "wall_times_secs": [ + 0.058173375, + 0.05706875, + 0.054887125 + ], + "max_error": 8.469584914590248e-9, + "input_max_bond_dim": 53, + "output_max_bond_dim": 39, + "output_bond_dims": [ + 4, + 15, + 39, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r8.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r8.json new file mode 100644 index 0000000..f80f8aa --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-fit_treetn-r8.json @@ -0,0 +1,43 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 76, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 8, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.56175725, + "wall_times_secs": [ + 0.568093166, + 0.56175725, + 0.538907708 + ], + "max_error": 2.2915795640544333e-8, + "input_max_bond_dim": 76, + "output_max_bond_dim": 60, + "output_bond_dims": [ + 4, + 15, + 41, + 60, + 42, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r10.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r10.json new file mode 100644 index 0000000..27880d7 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r10.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 78, + "engine": "local", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 10, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 7.5827165, + "wall_times_secs": [ + 7.5827165, + 7.420138542, + 7.909769958 + ], + "max_error": 1.9976261374435312e-8, + "input_max_bond_dim": 78, + "output_max_bond_dim": 62, + "output_bond_dims": [ + 4, + 15, + 41, + 62, + 47, + 34, + 21, + 13, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r12.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r12.json new file mode 100644 index 0000000..907544e --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r12.json @@ -0,0 +1,47 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 80, + "engine": "local", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 12, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 8.44051175, + "wall_times_secs": [ + 8.633888583, + 8.44051175, + 8.303600417 + ], + "max_error": 1.3745654399347714e-8, + "input_max_bond_dim": 80, + "output_max_bond_dim": 62, + "output_bond_dims": [ + 4, + 15, + 41, + 62, + 48, + 34, + 21, + 15, + 13, + 10, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r14.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r14.json new file mode 100644 index 0000000..55f33cc --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r14.json @@ -0,0 +1,49 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "local", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 14, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 8.108915, + "wall_times_secs": [ + 8.108915, + 8.016968791, + 8.8515625 + ], + "max_error": 6.392037127239305e-8, + "input_max_bond_dim": 79, + "output_max_bond_dim": 61, + "output_bond_dims": [ + 4, + 15, + 41, + 61, + 48, + 34, + 21, + 15, + 13, + 10, + 9, + 6, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r6.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r6.json new file mode 100644 index 0000000..7a43f79 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r6.json @@ -0,0 +1,41 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 53, + "engine": "local", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 6, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.08726675, + "wall_times_secs": [ + 0.101217208, + 0.08726675, + 0.086296167 + ], + "max_error": 8.469584907906082e-9, + "input_max_bond_dim": 53, + "output_max_bond_dim": 39, + "output_bond_dims": [ + 4, + 15, + 39, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r8.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r8.json new file mode 100644 index 0000000..8a01e3e --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-naive-r8.json @@ -0,0 +1,43 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 76, + "engine": "local", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 8, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 4.199380083, + "wall_times_secs": [ + 4.199380083, + 4.187815333, + 4.209877417 + ], + "max_error": 2.2915804773040776e-8, + "input_max_bond_dim": 76, + "output_max_bond_dim": 60, + "output_bond_dims": [ + 4, + 15, + 41, + 60, + 42, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r10.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r10.json new file mode 100644 index 0000000..b530100 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r10.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 78, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 10, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.317696, + "wall_times_secs": [ + 0.320329208, + 0.317696, + 0.315762708 + ], + "max_error": 0.21142057459008276, + "input_max_bond_dim": 78, + "output_max_bond_dim": 78, + "output_bond_dims": [ + 15, + 78, + 78, + 78, + 78, + 78, + 64, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r12.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r12.json new file mode 100644 index 0000000..2ff848c --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r12.json @@ -0,0 +1,47 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 80, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 12, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.417353667, + "wall_times_secs": [ + 0.423708334, + 0.417353667, + 0.40901 + ], + "max_error": 0.5416692034232038, + "input_max_bond_dim": 80, + "output_max_bond_dim": 80, + "output_bond_dims": [ + 15, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 64, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r14.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r14.json new file mode 100644 index 0000000..c91b1dd --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r14.json @@ -0,0 +1,49 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 14, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.401304166, + "wall_times_secs": [ + 0.404765292, + 0.401304166, + 0.391784583 + ], + "max_error": 0.5878371696840221, + "input_max_bond_dim": 79, + "output_max_bond_dim": 79, + "output_bond_dims": [ + 15, + 79, + 79, + 79, + 79, + 79, + 79, + 79, + 79, + 79, + 63, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r6.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r6.json new file mode 100644 index 0000000..3a9b789 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r6.json @@ -0,0 +1,41 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 53, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 6, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.022220291, + "wall_times_secs": [ + 0.024070834, + 0.021266167, + 0.022220291 + ], + "max_error": 0.6202737571371212, + "input_max_bond_dim": 53, + "output_max_bond_dim": 53, + "output_bond_dims": [ + 15, + 53, + 53, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r8.json b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r8.json new file mode 100644 index 0000000..dc4f2f0 --- /dev/null +++ b/result/mac-m1-8gb/raw/elementwise_gauss2d-zipup_treetn-r8.json @@ -0,0 +1,43 @@ +{ + "schema_version": 1, + "case": "elementwise_gauss2d", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 76, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 2, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 8, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.172837375, + "wall_times_secs": [ + 0.189060625, + 0.172837375, + 0.172629875 + ], + "max_error": 0.16724117363954089, + "input_max_bond_dim": 76, + "output_max_bond_dim": 76, + "output_bond_dims": [ + 15, + 76, + 76, + 76, + 64, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r10.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r10.json new file mode 100644 index 0000000..b59e291 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r10.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 10, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.492274125, + "wall_times_secs": [ + 0.4932655, + 0.492274125, + 0.479605792 + ], + "max_error": 2.9539855624266096e-8, + "input_max_bond_dim": 79, + "output_max_bond_dim": 60, + "output_bond_dims": [ + 4, + 16, + 50, + 60, + 37, + 27, + 16, + 13, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r12.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r12.json new file mode 100644 index 0000000..e1382e5 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r12.json @@ -0,0 +1,47 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 77, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 12, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.500031625, + "wall_times_secs": [ + 0.504006083, + 0.500031625, + 0.499653084 + ], + "max_error": 2.070892038241914e-8, + "input_max_bond_dim": 77, + "output_max_bond_dim": 61, + "output_bond_dims": [ + 4, + 16, + 50, + 61, + 37, + 28, + 19, + 15, + 10, + 10, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r14.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r14.json new file mode 100644 index 0000000..0a5a1c6 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r14.json @@ -0,0 +1,49 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 14, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.528855709, + "wall_times_secs": [ + 0.528855709, + 0.52914775, + 0.517535083 + ], + "max_error": 2.1852073835543292e-8, + "input_max_bond_dim": 79, + "output_max_bond_dim": 61, + "output_bond_dims": [ + 4, + 16, + 50, + 61, + 37, + 28, + 20, + 15, + 10, + 10, + 6, + 6, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r6.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r6.json new file mode 100644 index 0000000..b031ab5 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r6.json @@ -0,0 +1,41 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 53, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 6, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.042907625, + "wall_times_secs": [ + 0.042907625, + 0.041362458, + 0.04309525 + ], + "max_error": 8.635113584926432e-9, + "input_max_bond_dim": 53, + "output_max_bond_dim": 48, + "output_bond_dims": [ + 4, + 16, + 48, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r8.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r8.json new file mode 100644 index 0000000..7ba50af --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-fit_treetn-r8.json @@ -0,0 +1,43 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "fit_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 76, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 8, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.30234675, + "wall_times_secs": [ + 0.300435667, + 0.30234675, + 0.303897208 + ], + "max_error": 1.7132805237699633e-8, + "input_max_bond_dim": 76, + "output_max_bond_dim": 59, + "output_bond_dims": [ + 4, + 16, + 50, + 59, + 35, + 15, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r10.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r10.json new file mode 100644 index 0000000..a659131 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r10.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 10, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 15.87572, + "wall_times_secs": [ + 19.126222083, + 15.58784575, + 15.87572 + ], + "max_error": 2.8907148724288823e-8, + "input_max_bond_dim": 79, + "output_max_bond_dim": 61, + "output_bond_dims": [ + 4, + 16, + 50, + 61, + 37, + 27, + 16, + 13, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r12.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r12.json new file mode 100644 index 0000000..eb19955 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r12.json @@ -0,0 +1,47 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 77, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 12, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 45.131875625, + "wall_times_secs": [ + 45.131875625, + 45.027893666, + 47.278726125 + ], + "max_error": 2.0708309827528808e-8, + "input_max_bond_dim": 77, + "output_max_bond_dim": 61, + "output_bond_dims": [ + 4, + 16, + 50, + 61, + 37, + 28, + 19, + 15, + 10, + 10, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r14.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r14.json new file mode 100644 index 0000000..67d9aee --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r14.json @@ -0,0 +1,49 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 14, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 47.881931416, + "wall_times_secs": [ + 47.881931416, + 49.479438541, + 46.728464792 + ], + "max_error": 2.185578943114592e-8, + "input_max_bond_dim": 79, + "output_max_bond_dim": 61, + "output_bond_dims": [ + 4, + 16, + 50, + 61, + 37, + 28, + 20, + 15, + 10, + 10, + 6, + 6, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r6.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r6.json new file mode 100644 index 0000000..99f50c3 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r6.json @@ -0,0 +1,41 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 53, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 6, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.035191459, + "wall_times_secs": [ + 0.040577959, + 0.035191459, + 0.033102875 + ], + "max_error": 8.635113688761741e-9, + "input_max_bond_dim": 53, + "output_max_bond_dim": 48, + "output_bond_dims": [ + 4, + 16, + 48, + 16, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r8.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r8.json new file mode 100644 index 0000000..26cc810 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-naive-r8.json @@ -0,0 +1,43 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "naive", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 76, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 8, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 1.251666375, + "wall_times_secs": [ + 1.782366583, + 1.251666375, + 1.231603292 + ], + "max_error": 1.714210385626156e-8, + "input_max_bond_dim": 76, + "output_max_bond_dim": 59, + "output_bond_dims": [ + 4, + 16, + 50, + 59, + 35, + 15, + 4 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r10.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r10.json new file mode 100644 index 0000000..03e79ca --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r10.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_simplett", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 10, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.215443625, + "wall_times_secs": [ + 0.220902333, + 0.214023333, + 0.215443625 + ], + "max_error": 0.000018324862761517898, + "input_max_bond_dim": 79, + "output_max_bond_dim": 79, + "output_bond_dims": [ + 4, + 16, + 55, + 79, + 79, + 78, + 45, + 30, + 11 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r12.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r12.json new file mode 100644 index 0000000..589aafc --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r12.json @@ -0,0 +1,47 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_simplett", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 77, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 12, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.22005775, + "wall_times_secs": [ + 0.234810125, + 0.219585917, + 0.22005775 + ], + "max_error": 0.00003511182473688767, + "input_max_bond_dim": 77, + "output_max_bond_dim": 77, + "output_bond_dims": [ + 4, + 16, + 55, + 77, + 77, + 77, + 51, + 35, + 20, + 19, + 8 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r14.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r14.json new file mode 100644 index 0000000..6692d2b --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r14.json @@ -0,0 +1,49 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_simplett", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 14, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.229025292, + "wall_times_secs": [ + 0.252914291, + 0.229025292, + 0.2278385 + ], + "max_error": 0.000023561742363498955, + "input_max_bond_dim": 79, + "output_max_bond_dim": 79, + "output_bond_dims": [ + 4, + 16, + 55, + 79, + 79, + 79, + 51, + 35, + 20, + 19, + 10, + 10, + 8 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r6.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r6.json new file mode 100644 index 0000000..d7cc281 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r6.json @@ -0,0 +1,41 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_simplett", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 53, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 6, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.014192875, + "wall_times_secs": [ + 0.015053084, + 0.014192875, + 0.013402833 + ], + "max_error": 0.00010539578698944702, + "input_max_bond_dim": 53, + "output_max_bond_dim": 53, + "output_bond_dims": [ + 4, + 16, + 53, + 53, + 16 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r8.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r8.json new file mode 100644 index 0000000..a781ef5 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_simplett-r8.json @@ -0,0 +1,43 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_simplett", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 76, + "engine": "simplett", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 8, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.136467792, + "wall_times_secs": [ + 0.148038583, + 0.136467792, + 0.121870916 + ], + "max_error": 0.000019587549800793103, + "input_max_bond_dim": 76, + "output_max_bond_dim": 76, + "output_bond_dims": [ + 4, + 16, + 55, + 76, + 76, + 55, + 12 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r10.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r10.json new file mode 100644 index 0000000..b99c679 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r10.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 10, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.251113042, + "wall_times_secs": [ + 0.253925292, + 0.24596, + 0.251113042 + ], + "max_error": 0.00001832486276147961, + "input_max_bond_dim": 79, + "output_max_bond_dim": 79, + "output_bond_dims": [ + 4, + 16, + 55, + 79, + 79, + 78, + 45, + 30, + 11 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r12.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r12.json new file mode 100644 index 0000000..3184ba0 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r12.json @@ -0,0 +1,47 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 77, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 12, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.249906667, + "wall_times_secs": [ + 0.256157625, + 0.249906667, + 0.248593125 + ], + "max_error": 0.0000351118247367353, + "input_max_bond_dim": 77, + "output_max_bond_dim": 77, + "output_bond_dims": [ + 4, + 16, + 55, + 77, + 77, + 77, + 51, + 35, + 20, + 19, + 8 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r14.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r14.json new file mode 100644 index 0000000..153eadf --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r14.json @@ -0,0 +1,49 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 79, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 14, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.272822916, + "wall_times_secs": [ + 0.278212917, + 0.272822916, + 0.261364209 + ], + "max_error": 0.000023561742363509665, + "input_max_bond_dim": 79, + "output_max_bond_dim": 79, + "output_bond_dims": [ + 4, + 16, + 55, + 79, + 79, + 79, + 51, + 35, + 20, + 19, + 10, + 10, + 8 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r6.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r6.json new file mode 100644 index 0000000..1f5b026 --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r6.json @@ -0,0 +1,41 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 53, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 6, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.021768791, + "wall_times_secs": [ + 0.021768791, + 0.0226725, + 0.021391792 + ], + "max_error": 0.00010539578698937637, + "input_max_bond_dim": 53, + "output_max_bond_dim": 53, + "output_bond_dims": [ + 4, + 16, + 53, + 53, + 16 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r8.json b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r8.json new file mode 100644 index 0000000..0ee229f --- /dev/null +++ b/result/mac-m1-8gb/raw/mpo_mpo_quantics-zipup_treetn-r8.json @@ -0,0 +1,43 @@ +{ + "schema_version": 1, + "case": "mpo_mpo_quantics", + "algorithm": "zipup_treetn", + "params": { + "alpha_range": [ + 0.5, + 8.0 + ], + "box_l": 6.0, + "contract_max_bond": 76, + "engine": "treetn", + "error_metric": "max_rel_vs_analytic", + "error_seed": 99, + "fit_nsweeps": 1, + "max_bond": 512, + "n_error_samples": 128, + "n_gauss": 8, + "r": 8, + "runs": 3, + "warmups": 0 + }, + "seed": 0, + "tolerance": 1e-8, + "wall_time_median_secs": 0.153142875, + "wall_times_secs": [ + 0.153142875, + 0.146932417, + 0.15360075 + ], + "max_error": 0.000019587549800404928, + "input_max_bond_dim": 76, + "output_max_bond_dim": 76, + "output_bond_dims": [ + 4, + 16, + 55, + 76, + 76, + 55, + 12 + ] +} \ No newline at end of file diff --git a/result/mac-m1-8gb/run.yaml b/result/mac-m1-8gb/run.yaml new file mode 100644 index 0000000..9405f7f --- /dev/null +++ b/result/mac-m1-8gb/run.yaml @@ -0,0 +1,9 @@ +profile: mac-m1-8gb +date: 2026-08-07T13:17:18Z +machine: mac-m1-8gb +os: Darwin arm64 +chip: Apple M1 +memory_gb: 8 +repo_rev: 266ff4c1d6757de046b592566c9bea62a0f2685a +tensor4all_rs_rev: ae655a9ec08a0c3df8c25369b84be0d04e2a2bf3 +threads: default diff --git a/src/bin/elementwise_gauss2d.rs b/src/bin/elementwise_gauss2d.rs index 6ddd26d..b1381b2 100644 --- a/src/bin/elementwise_gauss2d.rs +++ b/src/bin/elementwise_gauss2d.rs @@ -28,9 +28,9 @@ //! //! What the fixed budget measures, as observed at r = 6 to 14 with the pinned //! revision (chi_in of 53 to 80): `naive` and `fit_treetn` agree to the last -//! reported digit or close to it, 8.5e-9 to 5.8e-8, at the same chi_out of 39 +//! reported digit or close to it, 8.5e-9 to 6.4e-8, at the same chi_out of 39 //! to 62, well inside the budget. `aci` matches them or beats them (3.6e-11 to -//! 2.1e-8) and is by far the cheapest arm, 2.6 ms to 58 ms, because it +//! 1.3e-8) and is by far the cheapest arm, 1.5 ms to 46 ms, because it //! never forms the product it is approximating. `zipup_treetn` collapses: it //! spends the whole budget and still returns errors between 8e-2 and 8e-1, //! that is, an answer with at most one correct digit. Its error also swings by @@ -46,7 +46,7 @@ //! this is the price of the budget, not a broken arm. //! On cost, `naive` is again the expensive one, forming the full chi_in-squared //! bond before truncating: it grows from well under a second at r = 6 to about -//! 10 s per run at r = 12 and 14, while every other arm stays under two +//! 8 s per run at r = 10 to 14, while every other arm stays under two //! seconds across the default sweep (r = 6, 8, 10, 12, 14). use std::path::PathBuf; diff --git a/src/bin/mpo_mpo_quantics.rs b/src/bin/mpo_mpo_quantics.rs index fb81fd2..3f8e7ff 100644 --- a/src/bin/mpo_mpo_quantics.rs +++ b/src/bin/mpo_mpo_quantics.rs @@ -28,8 +28,8 @@ //! algorithmic rather than engine-driven: single-pass zip-up truncation is what //! costs accuracy, and the two engines running it produce the same answer. //! What zipup buys is speed: it is the fastest arm at every r and stays flat -//! between 0.02 s and 0.35 s, while `naive` grows steeply (2.1 s at r = 8, -//! 28 s at r = 10 on the committed sweep's 8 GB machine, README known issue 9) +//! between 0.01 s and 0.3 s, while `naive` grows steeply (1.3 s at r = 8, +//! 16 s at r = 10 on the committed sweep's 8 GB machine, README known issue 9) //! because it forms the full contracted bond before truncating. `fit_treetn` //! reaches naive accuracy at a fraction of the naive cost. //! @@ -63,8 +63,8 @@ //! full contracted bond of size chi^2 before truncating; every other arm stays //! around a second or less across the default range. The defaults (r = 6, 8, //! 10, 12, 14 with 3 timed runs, no warmup) size the whole case at roughly -//! ten minutes on a laptop, nearly all of it naive at r = 10 to 14, which -//! costs 30 to 100 s per run there (memory bound on an 8 GB machine, see +//! six minutes on a laptop, nearly all of it naive at r = 10 to 14, which +//! costs 16 to 48 s per run there (memory bound on an 8 GB machine, see //! README known issue 9). Extend with for example //! `BENCH_RS=6,8,10,12,14,16 BENCH_RUNS=5` for the heavy tail, and restrict //! `BENCH_ALGOS` to drop naive if only the cheap arms are wanted. From f5c7a2ce9be09d46ea630f28e37b0802bf9018b8 Mon Sep 17 00:00:00 2001 From: lingrui96 <47836765+lingrui96@users.noreply.github.com> Date: Fri, 7 Aug 2026 16:20:12 +0200 Subject: [PATCH 9/9] Address review: drop the provisional AGENTS.md policy, close out the spec The Pushing section was written as a proposal awaiting veto, which is not what AGENTS.md is for: it holds active instructions. It comes out of this change and can return as accepted maintainer policy in its own change. The spec's status moves to implemented and its question list is replaced by the maintainer's answers, so it reads as a record rather than an open ask. Co-Authored-By: Claude Opus 5 --- AGENTS.md | 10 ----- ...-08-07-latest-rev-expanded-sweep-design.md | 40 ++++++++++--------- 2 files changed, 22 insertions(+), 28 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 9c6c15e..cce3b5a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -42,16 +42,6 @@ hardware fields in `run.yaml` carry the identity. move all the crates together, and never mix backend features across them. A bump can change measured numbers, so it belongs in its own commit with a rerun. -## Pushing - -Proposed, awaiting the maintainer's edit or veto. Work lands on main through a -pull request: push a branch, let CI run, and let a human decide the merge. Do -not push to main directly, and never force push a shared branch. An AI agent -may push a branch when asked to, but merging stays a human decision. A change -that replaces `result//` says in its PR description which machine -produced the sweep, so the numbers are reviewed together with the hardware -that made them. - ## Prose style No em dashes or en dashes anywhere in this repository's documents, comments or diff --git a/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md b/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md index 71e7fbb..673cbfe 100644 --- a/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md +++ b/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md @@ -1,7 +1,7 @@ # Update to latest tensor4all-rs and expand the default sweeps Date: 2026-08-07 -Status: approved by repo user (lingrui96), pending execution +Status: implemented ## Goal @@ -57,7 +57,7 @@ minute defaults, and produce a question list for Hiroshi about the next benchmar (512) should stay slack at R = 14. If chi_in drifts up instead, the fixed output budget `chi_in` changes meaning across R and the report note should say so. -## Questions for Hiroshi (next case, direction) +## Next case and direction, asked and answered Candidate directions for a fourth case: @@ -71,20 +71,24 @@ Candidate directions for a fourth case: with proper warmup would be new work (AGENTS.md warns about JIT). - (d) Higher dimension: 3D quantics, fused site dimension 8. -Open questions: +Answers, from the maintainer's review of the pull request on 2026-08-07: -1. Which of (a) through (d) first, or something else entirely? -2. Is a fix planned for the simplett `contract_fit` stub - (tensor4all-rs#571)? That would enable the missing simplett fit arm in case 2. -3. Is a simplett elementwise product for tensor trains planned (known issue 7)? That - would give cases 1 and 3 a second engine on the same algorithm. -4. Are machine profiles beyond mac-cpu wanted (Linux, cluster)? -5. Should official sweeps pin the thread count (`RAYON_NUM_THREADS`) instead of - recording `threads: default`? -6. Case 2's reference floor near 1e-8 comes from the tail outside the box. If higher - accuracy comparisons are ever wanted, should `BENCH_BOX_L` grow? -7. The mac-cpu profile has mixed machines: the 2026-08-07 morning sweep ran on - Hiroshi's Mac, the afternoon one on an 8 GB M1 MacBook Pro where the naive arms at - r >= 10 are memory bound (README known issue 9), and run.yaml records only the - hostname. Should run.yaml capture chip and memory size, and should profiles be split - per machine? Which machine produces the official numbers? +1. Fourth case: benchmark TCI or quantics construction first, option (a), since #575 + changes that path directly and every current case excludes construction from the + timed region. +2. simplett `contract_fit`: tensor4all-rs#571 is still open with no assignee or + milestone, so keep the simplett fit arm excluded. +3. simplett elementwise product for tensor trains: no public issue or plan exists. + Track it separately only when it blocks planned work. +4. Keep `mac-m1-8gb` as a machine-specific profile, but do not use its memory-bound + naive timings as the cross-machine headline. +5. `threads: default` is acceptable for this profile. Pin a numeric thread count for a + future official cross-machine sweep. +6. Keep `BENCH_BOX_L` at 6. If higher accuracy comparisons are needed, use a + finite-box analytic reference rather than only enlarging the box at fixed R. +7. Per-machine profiles, the chip and memory fields, and the hostname removal are + accepted as implemented here. + +The branch, pull request and human merge policy proposed alongside this work was +removed from the change: it belongs in a separate change, made as accepted maintainer +policy rather than as a proposal awaiting veto.