Reduction arrays have as argument CartesianIndex

This commit is contained in:
Alberto Ramos 2021-10-17 22:48:30 +02:00
parent 79a6e21cbc
commit 428f9782ce
6 changed files with 72 additions and 21 deletions

View file

@ -66,8 +66,8 @@ struct YMworkspace{T}
mm = vector_field(SU3alg{T}, lp)
u1 = vector_field(SU3{T}, lp)
end
cs = scalar_field(Complex{T}, lp)
rs = scalar_field(T, lp)
cs = scalar_field_point(Complex{T}, lp)
rs = scalar_field_point(T, lp)
end
return new{T}(GRP,ALG,T,f1, f2, mm, u1, cs, rs)

View file

@ -15,7 +15,7 @@ function krnl_impr!(plx, U::AbstractArray{T}, c0, c1, lp::SpaceParm{N,M,D}) wher
Ush = @cuStaticSharedMem(T, (D,2))
plx[b,r] = zero(plx[b,r])
S = zero(eltype(plx))
for id1 in 1:N-1
bu1, ru1 = up((b, r), id1, lp)
Ush[b,1] = U[b,id1,r]
@ -85,10 +85,13 @@ function krnl_impr!(plx, U::AbstractArray{T}, c0, c1, lp::SpaceParm{N,M,D}) wher
g2 = Ush[b,2]\Ush[b,1]
plx[b,r] += c0*tr(g2*ga/gb) + c1*( tr(g2*h2/gb) + tr(g2*ga/h3))
S += c0*tr(g2*ga/gb) + c1*( tr(g2*h2/gb) + tr(g2*ga/h3))
end
end
I = point_coord((b,r), lp)
plx[I] = S
return nothing
end
@ -98,7 +101,7 @@ function krnl_plaq!(plx, U::AbstractArray{T}, lp::SpaceParm{N,M,D}) where {T,N,M
Ush = @cuStaticSharedMem(T, (D,2))
plx[b,r] = zero(plx[b,r])
S = zero(eltype(plx))
for id1 in 1:N-1
bu1, ru1 = up((b, r), id1, lp)
Ush[b,1] = U[b,id1,r]
@ -119,10 +122,13 @@ function krnl_plaq!(plx, U::AbstractArray{T}, lp::SpaceParm{N,M,D}) where {T,N,M
gt2 = U[bu2,id1,ru2]
end
plx[b,r] += tr(Ush[b,1]*gt1 / (Ush[b,2]*gt2))
S += tr(Ush[b,1]*gt1 / (Ush[b,2]*gt2))
end
end
I = point_coord((b,r), lp)
plx[I] = S
return nothing
end