Even/Odd splitting in OR sweeps

This commit is contained in:
Alberto Ramos 2025-09-09 12:47:15 +02:00
commit bdb69f5d0e
4 changed files with 222 additions and 48 deletions

View file

@ -9,26 +9,49 @@
### created: Tue Sep 2 16:29:48 2025
###
using LatticeGPU, Test, CUDA
using LatticeGPU, Test, CUDA, TimerOutputs
T = Float64
lp = SpaceParm{4}((4,4,4,4), (4,4,4,4), BC_PERIODIC, (0,0,0,0,0,1))
gp = GaugeParm{T}(SU3{T}, 6.5, 1.0)
#lp = SpaceParm{4}((4,4,4,4), (4,4,4,4), BC_SF_ORBI, (0,0,0,0,0,0))
lp = SpaceParm{4}((16,16,16,16), (4,4,4,4), BC_PERIODIC, (0,0,0,0,0,1))
gp = GaugeParm{T}(SU3{T}, 6.5, 1.0, (1.5,1.5), (0.0,0.0), lp.iL[1])
ymws = YMworkspace(SU3, T, lp)
println(gp.Ubnd)
randomize!(ymws.mom, lp, ymws)
U = exp.(ymws.mom)
act = gauge_action(U, lp, gp, ymws)
plq = plaquette(U, lp, gp, ymws)
pl_exact = Eoft_plaq(U, gp, lp, ymws)
cl_exact = Eoft_clover(U, gp, lp, ymws)
println(lp)
println("## Random config: ")
println(" - act: ", act)
println(" - plq: ", plq)
println(" - Epl: ", pl_exact)
println(" - Ecl: ", cl_exact)
updt_or_wilson!(U, gp, lp)
Ucp = copy(U)
eo = evenodd(lp)
for i in 1:2000
updt_or_wilson!(U, gp, eo, lp)
end
plq = plaquette(U, lp, gp, ymws)
act = gauge_action(U, lp, gp, ymws)
pl_exact = Eoft_plaq(U, gp, lp, ymws)
cl_exact = Eoft_clover(U, gp, lp, ymws)
println("## After OR [eo]: ")
println(" - act: ", act)
println(" - plq: ", plq)
println(" - Epl: ", pl_exact)
println(" - Ecl: ", cl_exact)
U .= Ucp
for i in 1:2000
updt_or_wilson!(U, gp, lp)
end
plq = plaquette(U, lp, gp, ymws)
act = gauge_action(U, lp, gp, ymws)
@ -39,3 +62,5 @@ println(" - act: ", act)
println(" - plq: ", plq)
println(" - Epl: ", pl_exact)
println(" - Ecl: ", cl_exact)
print_timer(linechars = :ascii)