mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
Thread loop changes
This commit is contained in:
parent
52c74f1cac
commit
ea9662ec85
@ -30,6 +30,8 @@ Author: Peter Boyle <paboyle@ph.ed.ac.uk>
|
|||||||
#include <Grid/qcd/action/fermion/ImprovedStaggeredFermion5D.h>
|
#include <Grid/qcd/action/fermion/ImprovedStaggeredFermion5D.h>
|
||||||
#include <Grid/perfmon/PerfCount.h>
|
#include <Grid/perfmon/PerfCount.h>
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
NAMESPACE_BEGIN(Grid);
|
NAMESPACE_BEGIN(Grid);
|
||||||
|
|
||||||
// 5d lattice for DWF.
|
// 5d lattice for DWF.
|
||||||
@ -223,7 +225,7 @@ void ImprovedStaggeredFermion5D<Impl>::DhopDir(const FermionField &in, FermionFi
|
|||||||
auto UUUmu_v = UUUmu.View();
|
auto UUUmu_v = UUUmu.View();
|
||||||
auto in_v = in.View();
|
auto in_v = in.View();
|
||||||
auto out_v = out.View();
|
auto out_v = out.View();
|
||||||
thread_loop( (int ss=0;ss<Umu.Grid()->oSites();ss++),{
|
thread_for( ss,Umu.Grid()->oSites(),{
|
||||||
for(int s=0;s<Ls;s++){
|
for(int s=0;s<Ls;s++){
|
||||||
int sU=ss;
|
int sU=ss;
|
||||||
int sF = s+Ls*sU;
|
int sF = s+Ls*sU;
|
||||||
@ -380,13 +382,13 @@ void ImprovedStaggeredFermion5D<Impl>::DhopInternalOverlappedComms(StencilImpl &
|
|||||||
auto out_v = out.View();
|
auto out_v = out.View();
|
||||||
if (dag == DaggerYes) {
|
if (dag == DaggerYes) {
|
||||||
int sz=st.surface_list.size();
|
int sz=st.surface_list.size();
|
||||||
thread_loop( (int ss = 0; ss < sz; ss++) ,{
|
thread_for( ss,sz,{
|
||||||
int sU = st.surface_list[ss];
|
int sU = st.surface_list[ss];
|
||||||
Kernels::DhopSiteDag(st,lo,U_v,UUU_v,st.CommBuf(),LLs,sU,in_v,out_v,0,1); //<----------
|
Kernels::DhopSiteDag(st,lo,U_v,UUU_v,st.CommBuf(),LLs,sU,in_v,out_v,0,1); //<----------
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
int sz=st.surface_list.size();
|
int sz=st.surface_list.size();
|
||||||
thread_loop( (int ss = 0; ss < sz; ss++) ,{
|
thread_for( ss,sz,{
|
||||||
int sU = st.surface_list[ss];
|
int sU = st.surface_list[ss];
|
||||||
Kernels::DhopSite(st,lo,U_v,UUU_v,st.CommBuf(),LLs,sU,in_v,out_v,0,1);//<----------
|
Kernels::DhopSite(st,lo,U_v,UUU_v,st.CommBuf(),LLs,sU,in_v,out_v,0,1);//<----------
|
||||||
});
|
});
|
||||||
@ -421,12 +423,12 @@ void ImprovedStaggeredFermion5D<Impl>::DhopInternalSerialComms(StencilImpl & st,
|
|||||||
auto in_v = in.View();
|
auto in_v = in.View();
|
||||||
auto out_v = out.View();
|
auto out_v = out.View();
|
||||||
if (dag == DaggerYes) {
|
if (dag == DaggerYes) {
|
||||||
thread_loop( (int ss = 0; ss < U.Grid()->oSites(); ss++), {
|
thread_for( ss,U.Grid()->oSites(),{
|
||||||
int sU=ss;
|
int sU=ss;
|
||||||
Kernels::DhopSiteDag(st, lo, U_v, UUU_v, st.CommBuf(), LLs, sU,in_v, out_v);
|
Kernels::DhopSiteDag(st, lo, U_v, UUU_v, st.CommBuf(), LLs, sU,in_v, out_v);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
thread_loop( (int ss = 0; ss < U.Grid()->oSites(); ss++) ,{
|
thread_for( ss,U.Grid()->oSites(),{
|
||||||
int sU=ss;
|
int sU=ss;
|
||||||
Kernels::DhopSite(st,lo,U_v,UUU_v,st.CommBuf(),LLs,sU,in_v,out_v);
|
Kernels::DhopSite(st,lo,U_v,UUU_v,st.CommBuf(),LLs,sU,in_v,out_v);
|
||||||
});
|
});
|
||||||
@ -442,41 +444,6 @@ void ImprovedStaggeredFermion5D<Impl>::DhopInternalSerialComms(StencilImpl & st,
|
|||||||
}
|
}
|
||||||
/*CHANGE END*/
|
/*CHANGE END*/
|
||||||
|
|
||||||
/* ORG
|
|
||||||
template<class Impl>
|
|
||||||
void ImprovedStaggeredFermion5D<Impl>::DhopInternal(StencilImpl & st, LebesgueOrder &lo,
|
|
||||||
DoubledGaugeField & U,DoubledGaugeField & UUU,
|
|
||||||
const FermionField &in, FermionField &out,int dag)
|
|
||||||
{
|
|
||||||
Compressor compressor;
|
|
||||||
int LLs = in.Grid()->_rdimensions[0];
|
|
||||||
|
|
||||||
DhopTotalTime -= usecond();
|
|
||||||
DhopCommTime -= usecond();
|
|
||||||
st.HaloExchange(in,compressor);
|
|
||||||
DhopCommTime += usecond();
|
|
||||||
|
|
||||||
DhopComputeTime -= usecond();
|
|
||||||
auto U_v = U.View();
|
|
||||||
auto UUU_v = UUU.View();
|
|
||||||
auto out_v = out.View();
|
|
||||||
auto in_v = in.View();
|
|
||||||
// Dhop takes the 4d grid from U, and makes a 5d index for fermion
|
|
||||||
if (dag == DaggerYes) {
|
|
||||||
thread_loop( (int ss = 0; ss < U.Grid()->oSites(); ss++), {
|
|
||||||
int sU=ss;
|
|
||||||
Kernels::DhopSiteDag(st, lo, U_v, UUU_v, st.CommBuf(), LLs, sU,in_v, out_v);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
thread_loop( (int ss = 0; ss < U.Grid()->oSites(); ss++) ,{
|
|
||||||
int sU=ss;
|
|
||||||
Kernels::DhopSite(st,lo,U_v,UUU_v,st.CommBuf(),LLs,sU,in_v,out_v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
DhopComputeTime += usecond();
|
|
||||||
DhopTotalTime += usecond();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
template<class Impl>
|
template<class Impl>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user