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!
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!