Benchmarks and limitations

All numbers come from the raw data in research/experiments/results/ of the repository (reproduction commands in research/REPRODUCE.md). Timings were taken on one shared Apple-silicon machine (8 threads); load was recorded but not controlled, so treat factors below 2 as noise. Instances are mostly single random draws.

Dense order-2 MAX-CUT on random 3-regular graphs

\(n\)

block size \(s\)

ours: value, time, memory

MOSEK: value, time, memory

10

56

12.0002, 0.5 s, 0.13 GiB

12.0000, 0.1 s, 0.14 GiB

14

106

19.0000, 1.7 s, 0.17 GiB

19.0000, 0.4 s, 0.21 GiB

20

211

26.0010, 8.7 s, 0.21 GiB

26.0000, 3.9 s, 0.99 GiB

26

352

36.0000, 26.3 s, 0.32 GiB

36.0000, 43.0 s, 5.41 GiB

30

466

40.0026, 61.6 s, 0.44 GiB

40.0000, 252.6 s, 13.27 GiB

40

821

54.0065, 241 s, 1.04 GiB

killed (memory; Schur matrix ≳ 39 GiB)

50

1276

68.0040, 583 s, 1.89 GiB

not attempted

60

1831

81.0195, 2037 s, 2.49 GiB

not attempted

Reading it. Below \(n\approx26\) the interior-point solver is faster. Above it, ours is faster and uses a small fraction of the memory. The cut found equals \(\lfloor U\rfloor\) at every size, i.e. optimality is proved.

Optimality proofs on Biq Mac-style and real instances

  • 60 order-2 MAX-CUT instances drawn from the Biq Mac distributions (g05, pm1s, pm1d, torus Ising; 5 seeds, \(n\le40\)): all 60 certified optimal (best cut equals \(\lfloor U\rfloor\)).

  • 5 real library instances g05_60.0–g05_60.4 (downloaded from the Biq Mac library, \(n=60\)): all 5 certified optimal, after 794–1223 s (median 1102 s).

  • Larger library instances (\(n=80,100\)) and the complete-graph ising instances do not fit the dense order-2 model and were not run.

Comparison with other solvers

solver (class)

speed vs. ours

memory

bound returned

MOSEK / TSSOS / CS-TSSOS (interior point)

faster for \(n\lesssim26\); slower above

large (13 GiB at \(n=30\))

dual objective, accurate to solver tolerance

Burer–Monteiro ALM (low rank)

faster (4.7 s vs 62 s at \(n=30\))

small

none; multipliers are poor dual points

SCS (ADMM)

faster for \(n\le30\) at \(10^{-5}\)

up to 1.1 GiB at \(n=40\)

none; at \(10^{-3}\) the error is \(2\times10^{-3}\)–0.45

CGAL (conditional gradient)

faster

small

none

moment-sos

—

1.0 GiB at \(n=40\)

valid at every iterate

At every size we tried, at least one non-certified first-order method reached \(10^{-3}\) faster than we did; the price of having a bound at every iterate was a factor of 5–15 in time at \(n\ge20\). Not compared: ManiSDP, SketchyCGAL with a sketch, RiNNAL-POP, CDCS, COSMO, SDPNAL+.

TSSOS (Julia 1.13.3, MOSEK) returns the same values as the interior-point reference on the dense instances \(n=10\)–30 and takes 12, 12, 16, 58 and 264 s (each including about 12 s of Julia start-up).

Limitations — read these before using the package

  1. Not faster than interior point on small problems. If the relaxation fits in memory and you need accuracy of \(10^{-8}\), use an interior-point solver.

  2. Moderate accuracy of the smoothing solver (\(10^{-3}\)–\(10^{-4}\)). solve_alm is more accurate but slower to a first useful bound.

  3. Dense block limit. Blocks beyond \(s\approx2500\) are out of reach (dense eigh); no partial eigensolver, no GPU path tested.

  4. Sparse library instances. On the Biq Mac torus instance t2g10 (\(n=100\), weights up to \(10^5\)) the correlative-sparsity relaxation has 73 blocks of size ≤ 301; CS-TSSOS reaches the order-2 value \(6.0495\times10^6\) in 42 s using 11 GB, while our smoothing solver stops at \(6.197\times10^6\) (\(2.4\%\) higher) in 109 s using 0.7 GiB, and solve_alm is slow here: with warm start it did not leave the order-1 plateau in 400 s, and with default settings it reaches only \(6.76\times10^6\) (12% above) in 980 s (about 70 s per outer iteration). The gap is smoothing bias, not a different relaxation: etas=po.PRECISE_ETAS reaches \(6.04969\times10^6\) (relative difference \(3.8\times10^{-5}\) from TSSOS) in 264 s. Term sparsity is implemented but weaker (see the sparsity guide).

  5. Neural networks. Order 2 matches interior point to \(10^{-5}\) up to about 14 variables. At 38–40 variables solve_alm had not converged after 25 min (78–94% of the order-1 → exact gap closed); at 60 it fails. On a small MNIST classifier order 1 already certified every robust point.

  6. Rigorous certificate was run for blocks up to size 821; it assumes IEEE arithmetic without under/overflow and certifies the stored (normalized) floating-point problem.

  7. Engineering limits. Monomials are 64-bit encoded: spin mode supports \(n\le63\) and continuous mode \(n\le26\) at order 2.

  8. Julia and the command line run a Python process; there is no native Julia solver.