src_method

Benchmarks

Accuracy and timing of SRC against quimb and against pairwise application.

The benchmark scripts live in benches/ and need the bench dependency group. Each folder's README holds the full tables and the commands to reproduce them.

Primitives

benches/primitives compares the MPO-MPO product against quimb's contract-then-compress on the Leonardo supercomputer at CINECA. One MPO is random, the other a slightly perturbed identity, so the product is highly compressible.

ExperimentCPUsquimb (s)src (s)Speedup
50 sites, χ=50\chi = 5032164.9711.9213.8x
20 sites, χ=100\chi = 100322004.5294.8321x
25 sites, χ=1000\chi = 1000, χid=4\chi_{\text{id}} = 4112501.82 (rsvd)71.017x
50 sites, χ=1000\chi = 1000, χid=4\chi_{\text{id}} = 41121187.82 (rsvd)150.118x

At χ=1000\chi = 1000, SRC also used about a sixth of the peak memory of quimb.

Stacks

benches/stack compares one sweep over a stack, src(A_1, ..., A_k, psi), with pairwise application truncating after every product, as a function of the number of trains.

  • One sweep over the whole stack is at best moderately more accurate. For random stacks ending in an MPS it has about 20 % lower median error at depth 4; for random MPO products the gain is at most 8 %; for Trotter layers there is no systematic difference.
  • Both methods sit 2-15x above the best possible error at the same bond dimension, so the randomized sketch, not compounding across layers, dominates the error.
  • The per-site cost grows with χ2\chi^2 times the product of the layer bonds. Thin Trotter layers run at 0.6-1.4x the pairwise time up to depth 5, while random MPOs of bond 8 and 16 at depth 4 are 30x and 136x slower.
StackDepthχ\chione sweep (s)pairwise (s)ratio
Trotter, 1 layer + MPS2640.07640.06421.19
Trotter, 2 layers + MPS3640.09360.1470.639
Trotter, 3 layers + MPS4640.2010.2070.975
Trotter, 4 layers + MPS5640.3840.2831.36
random D=8D=8, 2 layers + MPS3641.670.523.21
random D=8D=8, 3 layers + MPS46424.70.83729.5
random D=16D=16, 3 layers + MPS4643162.33136

On this page