diff --git a/AGENTS.md b/AGENTS.md index 2dcc345..cce3b5a 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/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/README.md b/README.md index 933d345..ba86b03 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,20 @@ 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 `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 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.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 @@ -76,35 +79,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, 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 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.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 +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 +131,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 +173,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, 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 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.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: | 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 +284,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 +297,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 +306,21 @@ 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 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/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..673cbfe --- /dev/null +++ b/docs/superpowers/specs/2026-08-07-latest-rev-expanded-sweep-design.md @@ -0,0 +1,94 @@ +# Update to latest tensor4all-rs and expand the default sweeps + +Date: 2026-08-07 +Status: implemented + +## 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.** 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). + +## 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. + +## Next case and direction, asked and answered + +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. + +Answers, from the maintainer's review of the pull request on 2026-08-07: + +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. 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/scripts/run_all.sh b/scripts/run_all.sh index 5041d62..3d273c5 100755 --- a/scripts/run_all.sh +++ b/scripts/run_all.sh @@ -26,15 +26,34 @@ 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 + +# 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" < 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..b1381b2 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 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 +//! 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 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 @@ -44,8 +45,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 +//! 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; use t4a_bench::elementwise::{ @@ -63,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. @@ -92,7 +94,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..3f8e7ff 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.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. //! @@ -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). @@ -60,10 +61,11 @@ //! 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 +//! 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. @@ -92,7 +94,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();