Hi,
I am trying to run a DMRG optimizing over product states.
My guess was setting maxm = 1 in the final sweeps.
I used the following setup:
Sweeps sweeps = Sweeps(15);
sweeps.maxm() = 5,10,20,50,100,50,20,10,5,1;
sweeps.cutoff() = 1E-15;
sweeps.niter() = 2,2,2,3,4,3,2,2,1;
sweeps.noise() = 1e-4,1e-5,1e-6,1e-7,1e-8,0;
dmrg(psi0, H, sweeps);
The problem is, once in a while, the DMRG keeps m=0 and I get a segfault, e.g.,
Sweep=9, HS=1, Bond=1/2
I 0 q 8E-13 E -0.1662838484
I 1 q 8E-13 E -0.1662838484
Truncated to Cutoff=1.0E-15, Min_m=1, Max_m=5
Trunc. err=0.0E+00, States kept: m=2
Sweep=9, HS=1, Bond=2/2
I 0 q 8E-13 E -0.1662838484
I 1 q 7E-13 E -0.1662838484
Truncated to Cutoff=1.0E-15, Min_m=1, Max_m=5
Trunc. err=0.0E+00, States kept: m=2
Sweep=9, HS=2, Bond=2/2
I 0 q 7E-13 E -0.1662838484
I 1 q 7E-13 E -0.1662838484
Truncated to Cutoff=1.0E-15, Min_m=1, Max_m=5
Trunc. err=0.0E+00, States kept: m=2
Sweep=9, HS=2, Bond=1/2
I 0 q 7E-13 E -0.1662838484
I 1 q 7E-13 E -0.1662838484
Truncated to Cutoff=1.0E-15, Min_m=1, Max_m=5
Trunc. err=0.0E+00, States kept: m=2
vN Entropy at center bond b=1 = 0.693147179809
Eigs at center bond b=1: 0.5000 0.5000
Largest m during sweep 9/15 was 2
Largest truncation error: 0
Energy after sweep 9/15 is -0.166283848350
Sweep 9/15 CPU time = 0.000961s (Wall time = 0.00123s)
Sweep=10, HS=1, Bond=1/2
I 0 q 7E-13 E -0.1662838484
I 1 q 7E-13 E -0.1662838484
Truncated to Cutoff=1.0E-15, Min_m=1, Max_m=1
Trunc. err=5.0E-01, States kept: m=0
Sweep=10, HS=1, Bond=2/2
Intel MKL ERROR: Parameter 14 was incorrect on entry to cblas_dgemm.
Intel MKL ERROR: Parameter 9 was incorrect on entry to cblas_dgemm.
First, i thought it was the MKL, but it also happens with the OSX Accelerate framework. Btw., I am using v2.
I chose such sweeps.maxm() to give it room to escape local minima, but I don't know whether it is the best approach to optimize over product states.
Any thoughts on that?
Thanks in advance,