Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
LGPU FPP
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Fernando Pérez Panadero
LGPU FPP
Commits
a8f7442d
Commit
a8f7442d
authored
1 year ago
by
Fernando Pérez Panadero
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
All the dirac operators included with one kernel only
parent
94690bc0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
248 additions
and
3 deletions
+248
-3
src/Dirac/Dirac.jl
src/Dirac/Dirac.jl
+247
-2
src/LatticeGPU.jl
src/LatticeGPU.jl
+1
-1
No files found.
src/Dirac/Dirac.jl
View file @
a8f7442d
...
...
@@ -446,7 +446,6 @@ function krnl_csw!(csw::AbstractArray{T}, U, Ubnd, ipl, lp::SpaceParm{4,M,B,D})
return
nothing
end
function
Dw_new
!
(
so
,
U
,
si
,
dpar
::
DiracParam
,
dws
::
DiracWorkspace
,
lp
::
SpaceParm
{
4
,
6
,
B
,
D
})
where
{
B
,
D
}
if
abs
(
dpar
.
csw
)
>
1.0E-10
...
...
@@ -611,6 +610,252 @@ function krnl_Dw_new!(so, U, si, m0, th, ct, lp::SpaceParm{4,6,BC_SF_ORBI,D}) wh
return
nothing
end
function
g5Dw_new
!
(
so
,
U
,
si
,
dpar
::
DiracParam
,
dws
::
DiracWorkspace
,
lp
::
SpaceParm
{
4
,
6
,
B
,
D
})
where
{
B
,
D
}
if
abs
(
dpar
.
csw
)
>
1.0E-10
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dwimpr_new!
(
so
,
U
,
si
,
dws
.
csw
,
dpar
.
m0
,
dpar
.
th
,
dpar
.
csw
,
dpar
.
ct
,
lp
)
end
end
else
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dw_new!
(
so
,
U
,
si
,
dpar
.
m0
,
dpar
.
th
,
lp
)
end
end
end
return
nothing
end
function
krnl_g5Dwimpr_new
!
(
so
,
U
,
si
,
Fcsw
,
m0
,
th
,
csw
,
lp
::
SpaceParm
{
4
,
6
,
B
,
D
})
where
{
B
,
D
}
b
=
Int64
(
CUDA
.
threadIdx
()
.
x
);
r
=
Int64
(
CUDA
.
blockIdx
()
.
x
)
bu1
,
ru1
=
up
((
b
,
r
),
1
,
lp
)
bd1
,
rd1
=
dw
((
b
,
r
),
1
,
lp
)
bu2
,
ru2
=
up
((
b
,
r
),
2
,
lp
)
bd2
,
rd2
=
dw
((
b
,
r
),
2
,
lp
)
bu3
,
ru3
=
up
((
b
,
r
),
3
,
lp
)
bd3
,
rd3
=
dw
((
b
,
r
),
3
,
lp
)
bu4
,
ru4
=
up
((
b
,
r
),
4
,
lp
)
bd4
,
rd4
=
dw
((
b
,
r
),
4
,
lp
)
@inbounds
begin
so
[
b
,
r
]
=
(
4
+
m0
)
*
si
[
b
,
r
]
+
0.5
*
csw
*
im
*
(
Fcsw
[
b
,
1
,
r
]
*
dmul
(
Gamma
{
10
},
si
[
b
,
r
])
+
Fcsw
[
b
,
2
,
r
]
*
dmul
(
Gamma
{
11
},
si
[
b
,
r
])
+
Fcsw
[
b
,
3
,
r
]
*
dmul
(
Gamma
{
12
},
si
[
b
,
r
])
-
Fcsw
[
b
,
4
,
r
]
*
dmul
(
Gamma
{
15
},
si
[
b
,
r
])
-
Fcsw
[
b
,
5
,
r
]
*
dmul
(
Gamma
{
14
},
si
[
b
,
r
])
-
Fcsw
[
b
,
6
,
r
]
*
dmul
(
Gamma
{
13
},
si
[
b
,
r
]))
so
[
b
,
r
]
-=
0.5
*
(
th
[
1
]
*
gpmul
(
Pgamma
{
1
,
-
1
},
U
[
b
,
1
,
r
],
si
[
bu1
,
ru1
])
+
conj
(
th
[
1
])
*
gdagpmul
(
Pgamma
{
1
,
+
1
},
U
[
bd1
,
1
,
rd1
],
si
[
bd1
,
rd1
])
+
th
[
2
]
*
gpmul
(
Pgamma
{
2
,
-
1
},
U
[
b
,
2
,
r
],
si
[
bu2
,
ru2
])
+
conj
(
th
[
2
])
*
gdagpmul
(
Pgamma
{
2
,
+
1
},
U
[
bd2
,
2
,
rd2
],
si
[
bd2
,
rd2
])
+
th
[
3
]
*
gpmul
(
Pgamma
{
3
,
-
1
},
U
[
b
,
3
,
r
],
si
[
bu3
,
ru3
])
+
conj
(
th
[
3
])
*
gdagpmul
(
Pgamma
{
3
,
+
1
},
U
[
bd3
,
3
,
rd3
],
si
[
bd3
,
rd3
])
+
th
[
4
]
*
gpmul
(
Pgamma
{
4
,
-
1
},
U
[
b
,
4
,
r
],
si
[
bu4
,
ru4
])
+
conj
(
th
[
4
])
*
gdagpmul
(
Pgamma
{
4
,
+
1
},
U
[
bd4
,
4
,
rd4
],
si
[
bd4
,
rd4
])
)
so
[
b
,
r
]
=
dmul
(
Gamma
{
5
},
so
[
b
,
r
])
end
return
nothing
end
function
krnl_g5Dw_new
!
(
so
,
U
,
si
,
m0
,
th
,
lp
::
SpaceParm
{
4
,
6
,
B
,
D
})
where
{
B
,
D
}
b
=
Int64
(
CUDA
.
threadIdx
()
.
x
);
r
=
Int64
(
CUDA
.
blockIdx
()
.
x
)
bu1
,
ru1
=
up
((
b
,
r
),
1
,
lp
)
bd1
,
rd1
=
dw
((
b
,
r
),
1
,
lp
)
bu2
,
ru2
=
up
((
b
,
r
),
2
,
lp
)
bd2
,
rd2
=
dw
((
b
,
r
),
2
,
lp
)
bu3
,
ru3
=
up
((
b
,
r
),
3
,
lp
)
bd3
,
rd3
=
dw
((
b
,
r
),
3
,
lp
)
bu4
,
ru4
=
up
((
b
,
r
),
4
,
lp
)
bd4
,
rd4
=
dw
((
b
,
r
),
4
,
lp
)
@inbounds
begin
so
[
b
,
r
]
=
(
4
+
m0
)
*
si
[
b
,
r
]
so
[
b
,
r
]
-=
0.5
*
(
th
[
1
]
*
gpmul
(
Pgamma
{
1
,
-
1
},
U
[
b
,
1
,
r
],
si
[
bu1
,
ru1
])
+
conj
(
th
[
1
])
*
gdagpmul
(
Pgamma
{
1
,
+
1
},
U
[
bd1
,
1
,
rd1
],
si
[
bd1
,
rd1
])
+
th
[
2
]
*
gpmul
(
Pgamma
{
2
,
-
1
},
U
[
b
,
2
,
r
],
si
[
bu2
,
ru2
])
+
conj
(
th
[
2
])
*
gdagpmul
(
Pgamma
{
2
,
+
1
},
U
[
bd2
,
2
,
rd2
],
si
[
bd2
,
rd2
])
+
th
[
3
]
*
gpmul
(
Pgamma
{
3
,
-
1
},
U
[
b
,
3
,
r
],
si
[
bu3
,
ru3
])
+
conj
(
th
[
3
])
*
gdagpmul
(
Pgamma
{
3
,
+
1
},
U
[
bd3
,
3
,
rd3
],
si
[
bd3
,
rd3
])
+
th
[
4
]
*
gpmul
(
Pgamma
{
4
,
-
1
},
U
[
b
,
4
,
r
],
si
[
bu4
,
ru4
])
+
conj
(
th
[
4
])
*
gdagpmul
(
Pgamma
{
4
,
+
1
},
U
[
bd4
,
4
,
rd4
],
si
[
bd4
,
rd4
])
)
so
[
b
,
r
]
=
dmul
(
Gamma
{
5
},
so
[
b
,
r
])
end
return
nothing
end
function
g5Dw_new
!
(
so
,
U
,
si
,
dpar
::
DiracParam
,
dws
::
DiracWorkspace
,
lp
::
SpaceParm
{
4
,
6
,
BC_SF_ORBI
,
D
})
where
{
D
}
if
abs
(
dpar
.
csw
)
>
1.0E-10
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dwimpr_new!
(
so
,
U
,
si
,
dws
.
csw
,
dpar
.
m0
,
dpar
.
th
,
dpar
.
csw
,
dpar
.
ct
,
lp
)
end
end
else
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dw_new!
(
so
,
U
,
si
,
dpar
.
m0
,
dpar
.
th
,
dpar
.
ct
,
lp
)
end
end
end
return
nothing
end
function
krnl_g5Dwimpr_new
!
(
so
,
U
,
si
,
Fcsw
,
m0
,
th
,
csw
,
ct
,
lp
::
SpaceParm
{
4
,
6
,
BC_SF_ORBI
,
D
})
where
{
D
}
# The field si is assumed to be zero at t = 0
b
=
Int64
(
CUDA
.
threadIdx
()
.
x
);
r
=
Int64
(
CUDA
.
blockIdx
()
.
x
)
if
(
point_time
((
b
,
r
),
lp
)
!=
1
)
bu1
,
ru1
=
up
((
b
,
r
),
1
,
lp
)
bd1
,
rd1
=
dw
((
b
,
r
),
1
,
lp
)
bu2
,
ru2
=
up
((
b
,
r
),
2
,
lp
)
bd2
,
rd2
=
dw
((
b
,
r
),
2
,
lp
)
bu3
,
ru3
=
up
((
b
,
r
),
3
,
lp
)
bd3
,
rd3
=
dw
((
b
,
r
),
3
,
lp
)
bu4
,
ru4
=
up
((
b
,
r
),
4
,
lp
)
bd4
,
rd4
=
dw
((
b
,
r
),
4
,
lp
)
@inbounds
begin
so
[
b
,
r
]
=
(
4
+
m0
)
*
si
[
b
,
r
]
+
0.5
*
csw
*
im
*
(
Fcsw
[
b
,
1
,
r
]
*
dmul
(
Gamma
{
10
},
si
[
b
,
r
])
+
Fcsw
[
b
,
2
,
r
]
*
dmul
(
Gamma
{
11
},
si
[
b
,
r
])
+
Fcsw
[
b
,
3
,
r
]
*
dmul
(
Gamma
{
12
},
si
[
b
,
r
])
-
Fcsw
[
b
,
4
,
r
]
*
dmul
(
Gamma
{
15
},
si
[
b
,
r
])
-
Fcsw
[
b
,
5
,
r
]
*
dmul
(
Gamma
{
14
},
si
[
b
,
r
])
-
Fcsw
[
b
,
6
,
r
]
*
dmul
(
Gamma
{
13
},
si
[
b
,
r
]))
so
[
b
,
r
]
-=
0.5
*
(
th
[
1
]
*
gpmul
(
Pgamma
{
1
,
-
1
},
U
[
b
,
1
,
r
],
si
[
bu1
,
ru1
])
+
conj
(
th
[
1
])
*
gdagpmul
(
Pgamma
{
1
,
+
1
},
U
[
bd1
,
1
,
rd1
],
si
[
bd1
,
rd1
])
+
th
[
2
]
*
gpmul
(
Pgamma
{
2
,
-
1
},
U
[
b
,
2
,
r
],
si
[
bu2
,
ru2
])
+
conj
(
th
[
2
])
*
gdagpmul
(
Pgamma
{
2
,
+
1
},
U
[
bd2
,
2
,
rd2
],
si
[
bd2
,
rd2
])
+
th
[
3
]
*
gpmul
(
Pgamma
{
3
,
-
1
},
U
[
b
,
3
,
r
],
si
[
bu3
,
ru3
])
+
conj
(
th
[
3
])
*
gdagpmul
(
Pgamma
{
3
,
+
1
},
U
[
bd3
,
3
,
rd3
],
si
[
bd3
,
rd3
])
+
th
[
4
]
*
gpmul
(
Pgamma
{
4
,
-
1
},
U
[
b
,
4
,
r
],
si
[
bu4
,
ru4
])
+
conj
(
th
[
4
])
*
gdagpmul
(
Pgamma
{
4
,
+
1
},
U
[
bd4
,
4
,
rd4
],
si
[
bd4
,
rd4
])
)
if
(
point_time
((
b
,
r
),
lp
)
==
2
)
||
(
point_time
((
b
,
r
),
lp
)
==
lp
.
iL
[
4
])
so
[
b
,
r
]
+=
(
ct
-
1.0
)
*
si
[
b
,
r
]
end
end
end
so
[
b
,
r
]
=
dmul
(
Gamma
{
5
},
so
[
b
,
r
])
return
nothing
end
function
krnl_g5Dw_new
!
(
so
,
U
,
si
,
m0
,
th
,
ct
,
lp
::
SpaceParm
{
4
,
6
,
BC_SF_ORBI
,
D
})
where
{
D
}
# The field si is assumed to be zero at t = 0
b
=
Int64
(
CUDA
.
threadIdx
()
.
x
);
r
=
Int64
(
CUDA
.
blockIdx
()
.
x
)
if
(
point_time
((
b
,
r
),
lp
)
!=
1
)
bu1
,
ru1
=
up
((
b
,
r
),
1
,
lp
)
bd1
,
rd1
=
dw
((
b
,
r
),
1
,
lp
)
bu2
,
ru2
=
up
((
b
,
r
),
2
,
lp
)
bd2
,
rd2
=
dw
((
b
,
r
),
2
,
lp
)
bu3
,
ru3
=
up
((
b
,
r
),
3
,
lp
)
bd3
,
rd3
=
dw
((
b
,
r
),
3
,
lp
)
bu4
,
ru4
=
up
((
b
,
r
),
4
,
lp
)
bd4
,
rd4
=
dw
((
b
,
r
),
4
,
lp
)
@inbounds
begin
so
[
b
,
r
]
=
(
4
+
m0
)
*
si
[
b
,
r
]
so
[
b
,
r
]
-=
0.5
*
(
th
[
1
]
*
gpmul
(
Pgamma
{
1
,
-
1
},
U
[
b
,
1
,
r
],
si
[
bu1
,
ru1
])
+
conj
(
th
[
1
])
*
gdagpmul
(
Pgamma
{
1
,
+
1
},
U
[
bd1
,
1
,
rd1
],
si
[
bd1
,
rd1
])
+
th
[
2
]
*
gpmul
(
Pgamma
{
2
,
-
1
},
U
[
b
,
2
,
r
],
si
[
bu2
,
ru2
])
+
conj
(
th
[
2
])
*
gdagpmul
(
Pgamma
{
2
,
+
1
},
U
[
bd2
,
2
,
rd2
],
si
[
bd2
,
rd2
])
+
th
[
3
]
*
gpmul
(
Pgamma
{
3
,
-
1
},
U
[
b
,
3
,
r
],
si
[
bu3
,
ru3
])
+
conj
(
th
[
3
])
*
gdagpmul
(
Pgamma
{
3
,
+
1
},
U
[
bd3
,
3
,
rd3
],
si
[
bd3
,
rd3
])
+
th
[
4
]
*
gpmul
(
Pgamma
{
4
,
-
1
},
U
[
b
,
4
,
r
],
si
[
bu4
,
ru4
])
+
conj
(
th
[
4
])
*
gdagpmul
(
Pgamma
{
4
,
+
1
},
U
[
bd4
,
4
,
rd4
],
si
[
bd4
,
rd4
])
)
if
(
point_time
((
b
,
r
),
lp
)
==
2
)
||
(
point_time
((
b
,
r
),
lp
)
==
lp
.
iL
[
4
])
so
[
b
,
r
]
+=
(
ct
-
1.0
)
*
si
[
b
,
r
]
end
end
end
so
[
b
,
r
]
=
dmul
(
Gamma
{
5
},
so
[
b
,
r
])
return
nothing
end
function
DwdagDw_new
!
(
so
,
U
,
si
,
dpar
::
DiracParam
,
dws
::
DiracWorkspace
,
lp
::
SpaceParm
{
4
,
6
,
BC_SF_ORBI
,
D
})
where
{
D
}
if
abs
(
dpar
.
csw
)
>
1.0E-10
@timeit
"DwdagDw_new"
begin
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dwimpr_new!
(
dws
.
st
,
U
,
si
,
dws
.
csw
,
dpar
.
m0
,
dpar
.
th
,
dpar
.
csw
,
dpar
.
ct
,
lp
)
end
end
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dwimpr_new!
(
so
,
U
,
dws
.
st
,
dws
.
csw
,
dpar
.
m0
,
dpar
.
th
,
dpar
.
csw
,
dpar
.
ct
,
lp
)
end
end
end
else
@timeit
"DwdagDw_new"
begin
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dw_new!
(
dws
.
st
,
U
,
si
,
dpar
.
m0
,
dpar
.
th
,
dpar
.
ct
,
lp
)
end
end
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dw_new!
(
so
,
U
,
dws
.
st
,
dpar
.
m0
,
dpar
.
th
,
dpar
.
ct
,
lp
)
end
end
end
end
return
nothing
end
function
DwdagDw_new
!
(
so
,
U
,
si
,
dpar
::
DiracParam
,
dws
::
DiracWorkspace
,
st
,
lp
::
SpaceParm
{
4
,
6
,
B
,
D
})
where
{
B
,
D
}
if
abs
(
dpar
.
csw
)
>
1.0E-10
@timeit
"DwdagDw_new"
begin
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dwimpr_new!
(
dws
.
st
,
U
,
si
,
dws
.
csw
,
dpar
.
m0
,
dpar
.
th
,
dpar
.
csw
,
lp
)
end
end
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dwimpr_new!
(
so
,
U
,
dws
.
st
,
dws
.
csw
,
dpar
.
m0
,
dpar
.
th
,
dpar
.
csw
,
lp
)
end
end
end
else
@timeit
"DwdagDw_new"
begin
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dw_new!
(
dws
.
st
,
U
,
si
,
dpar
.
m0
,
dpar
.
th
,
lp
)
end
end
@timeit
"g5Dw_new"
begin
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_g5Dw_new!
(
so
,
U
,
dws
.
st
,
dpar
.
m0
,
dpar
.
th
,
lp
)
end
end
end
end
return
nothing
end
function
SF_bndfix
!
(
sp
,
lp
::
SpaceParm
{
4
,
6
,
BC_SF_ORBI
,
D
})
where
{
D
}
CUDA
.
@sync
begin
CUDA
.
@cuda
threads
=
lp
.
bsz
blocks
=
lp
.
rsz
krnl_sfbndfix_new!
(
sp
,
lp
)
...
...
@@ -668,7 +913,7 @@ function krnl_assign_pf!(f::AbstractArray, p ,lp::SpaceParm, t::Int64)
end
export
Dw!
,
DwdagDw!
,
g5Dw!
,
pfrandomize!
,
Csw!
,
Dw_new!
,
SF_bndfix!
export
Dw!
,
DwdagDw!
,
g5Dw!
,
pfrandomize!
,
Csw!
,
Dw_new!
,
g5Dw_new!
,
DwdagDw_new!
,
SF_bndfix!
include
(
"DiracIO.jl"
)
...
...
This diff is collapsed.
Click to expand it.
src/LatticeGPU.jl
View file @
a8f7442d
...
...
@@ -57,7 +57,7 @@ export pmul, gpmul, gdagpmul, dmul
include
(
"Dirac/Dirac.jl"
)
using
.
Dirac
export
DiracWorkspace
,
DiracParam
export
Dw!
,
DwdagDw!
,
pfrandomize!
,
g5Dw!
,
Csw!
,
Dw_new!
,
SF_bndfix!
export
Dw!
,
DwdagDw!
,
pfrandomize!
,
g5Dw!
,
Csw!
,
Dw_new!
,
g5Dw_new!
,
DwdagDw_new!
,
SF_bndfix!
export
read_prop
,
save_prop
,
read_dpar
export
flw
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment