-
Notifications
You must be signed in to change notification settings - Fork 45
Description
Hi, thank you for the great package!
I'm benchmarking DMRG calculations using MPSKit.jl with SU(2) symmetry, and I encountered a significant performance discrepancy compared to a U(1)-symmetric calculation done with ITensor.
Here are my benchmarks:
ITensors (Julia):
Symmetry: U(1)
Bond dimension: D = 4800
Time per sweep: 20.92 hours.
output:
After sweep 1 energy=-337.23217296396973 maxlinkdim=4800 maxerr=3.46E-05 time=70248.585
After sweep 2 energy=-337.2389290839439 maxlinkdim=4800 maxerr=3.78E-05 time=75324.747
MPSKit (0.12.6)
Symmetry: SU(2)
Max bond dimension: D = 4000
Time per sweep: 31.66 hours.
output:
[ Info: DMRG2 1: obj = -3.164484013797e+02 err = 9.1771680577e-01 time = 4.42 min
[ Info: DMRG2 2: obj = -3.292824077866e+02 err = 1.7325899602e-02 time = 17.07 min
[ Info: DMRG2 3: obj = -3.348343234046e+02 err = 4.5124942262e-03 time = 5.39 hr
[ Info: DMRG2 4: obj = -3.360135495584e+02 err = 8.0470138898e-04 time = 31.66 hr
Both calculations were performed on the same hardware, using a 64-core, 128-thread CPU machine. This seems counterintuitive, as I expected that the SU(2) symmetry would help reduce the computational cost due to block structure. Is this behavior expected, or might I have misconfigured something in my setup?
Thanks again for your hard work on this project!