Hi,
I tried to calculate the PBC Transverse Field Ising Model (Quantum Ising model) using CUDA. However, when I use CUDA, the output of DMRG seems off. In some cases, it finds the low-energy state adequately, but the maximum error remains significantly high.
What could be causing this issue, and how can I ensure that CUDA provides accurate results for DMRG calculations?
here’s my code and outputs
function TFIM_DMRG(_N,_g,_init_state)
psi0 = 0
_sites = 0
if _init_state ==0
_sites = siteinds("S=1/2",_N)
psi0 = randomMPS(Float32,_sites)
else
psi0 = _init_state
_sites = siteinds(psi0)
end
os = OpSum()
for j = 1 : _N-1
os += -2*_g,"Sx",j
os += -4,"Sz",j,"Sz",j+1
end
os += -2*_g,"Sx",_N
println("PBC Calculation")
os += -4,"Sz",_N,"Sz",1
H = MPO(os,_sites)
nsweeps = 10
MAXD = [20,500]
MIND = 100
noise
cutoff = 1E-10
psi0 = cu(psi0)
H = cu(H)
synchronize()
_energy,_psi = dmrg(H,psi0 ;nsweeps,mindim =MAXD,maxdim=MIND,cutoff,outputlevel = 1,eigsolve_krylovdim = 10)
return _energy,_psi,_sites
end
@fastmath(false)
E,P,S = TFIM_DMRG(200,0,0)
output for the CUDA and CPU
After sweep 1 energy=-374.00418 maxlinkdim=4 maxerr=5.39E-08 time=8.065
After sweep 2 energy=-583.0105 maxlinkdim=16 maxerr=1.39E-08 time=7.075
After sweep 3 energy=-194.10936 maxlinkdim=64 maxerr=1.70E-08 time=8.491
After sweep 4 energy=-199.90022 maxlinkdim=100 maxerr=1.10E-07 time=8.856
After sweep 5 energy=-1851.682 maxlinkdim=100 maxerr=1.87E-09 time=8.856
After sweep 6 energy=-365.16278 maxlinkdim=100 maxerr=4.16E-11 time=8.891
After sweep 7 energy=-199.94135 maxlinkdim=100 maxerr=1.13E-07 time=7.980
After sweep 8 energy=-196.01514 maxlinkdim=100 maxerr=6.03E-08 time=8.880
After sweep 9 energy=-200.00003 maxlinkdim=100 maxerr=1.14E-08 time=8.872
After sweep 10 energy=-205.27542 maxlinkdim=100 maxerr=5.92E-08 time=8.881
After sweep 1 energy=-199.9999999999992 maxlinkdim=4 maxerr=3.25E-17 time=0.550
After sweep 2 energy=-199.99999999999943 maxlinkdim=16 maxerr=7.50E-32 time=0.903
After sweep 3 energy=-199.99999999999952 maxlinkdim=64 maxerr=3.01E-19 time=14.889
After sweep 4 energy=-199.99999999999952 maxlinkdim=100 maxerr=3.07E-29 time=61.358
...
Thank you.