mirror of
https://igit.ific.uv.es/alramos/latticegpu.jl.git
synced 2025-05-14 19:23:42 +02:00
55 lines
1.6 KiB
Julia
55 lines
1.6 KiB
Julia
###
|
|
### "THE BEER-WARE LICENSE":
|
|
### Alberto Ramos wrote this file. As long as you retain this
|
|
### notice you can do whatever you want with this stuff. If we meet some
|
|
### day, and you think this stuff is worth it, you can buy me a beer in
|
|
### return. <alberto.ramos@cern.ch>
|
|
###
|
|
### file: YMfields.jl
|
|
### created: Thu Jul 15 15:16:47 2021
|
|
###
|
|
|
|
function randomize!(f, lp::SpaceParm, ymws::YMworkspace)
|
|
|
|
if ymws.ALG == SU2alg
|
|
@timeit "Randomize SU(2) algebra field" begin
|
|
m = CUDA.randn(ymws.PRC, lp.bsz,lp.ndim,3,lp.rsz)
|
|
CUDA.@sync begin
|
|
CUDA.@cuda threads=lp.bsz blocks=lp.rsz krnl_assign_SU2!(f,m,lp)
|
|
end
|
|
end
|
|
return nothing
|
|
end
|
|
|
|
if ymws.ALG == SU3alg
|
|
@timeit "Randomize SU(3) algebra field" begin
|
|
m = CUDA.randn(ymws.PRC, lp.bsz,lp.ndim,8,lp.rsz)
|
|
CUDA.@sync begin
|
|
CUDA.@cuda threads=lp.bsz blocks=lp.rsz krnl_assign_SU3!(f,m,lp)
|
|
end
|
|
end
|
|
return nothing
|
|
end
|
|
|
|
return nothing
|
|
end
|
|
|
|
function krnl_assign_SU3!(frc, m, lp::SpaceParm)
|
|
|
|
b, r = CUDA.threadIdx().x, CUDA.blockIdx().x
|
|
for id in 1:lp.ndim
|
|
frc[b,id,r] = SU3alg(m[b,id,1,r], m[b,id,2,r], m[b,id,3,r],
|
|
m[b,id,4,r], m[b,id,5,r], m[b,id,6,r],
|
|
m[b,id,7,r], m[b,id,8,r])
|
|
end
|
|
return nothing
|
|
end
|
|
|
|
function krnl_assign_SU2!(frc, m, lp::SpaceParm)
|
|
|
|
b, r = CUDA.threadIdx().x, CUDA.blockIdx().x
|
|
for id in 1:lp.ndim
|
|
frc[b,id,r] = SU2alg(m[b,id,1,r], m[b,id,2,r], m[b,id,3,r])
|
|
end
|
|
return nothing
|
|
end
|