1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-04-09 21:50:45 +01:00

thread_for caused the problems - slow for loop for now

This commit is contained in:
Felix Erben 2019-09-26 13:33:49 +01:00
parent 8415e23fc6
commit bf62ec163d
2 changed files with 11 additions and 38 deletions

View File

@ -96,10 +96,9 @@ void BaryonUtils<FImpl>::ContractBaryons(const PropagatorField &q1_src,
auto v2 = q2_src.View(); auto v2 = q2_src.View();
auto v3 = q3_src.View(); auto v3 = q3_src.View();
std::cout << "wick contract " << wick_contraction << std::endl;
int count=0;
// accelerator_for(ss, grid->oSites(), grid->Nsimd(), { // accelerator_for(ss, grid->oSites(), grid->Nsimd(), {
thread_for(ss,grid->oSites(),{ //thread_for(ss,grid->oSites(),{
for(int ss=0; ss < grid->oSites(); ss++){
auto D1 = v1[ss]; auto D1 = v1[ss];
auto D2 = v2[ss]; auto D2 = v2[ss];
@ -111,10 +110,6 @@ void BaryonUtils<FImpl>::ContractBaryons(const PropagatorField &q1_src,
auto gD3 = GammaB * D3; auto gD3 = GammaB * D3;
vobj result=Zero(); vobj result=Zero();
/* if (count<10){
std::cout << "outside epsilon " << count << std::endl;
count++;
}*/
for (int ie_src=0; ie_src < 6 ; ie_src++){ for (int ie_src=0; ie_src < 6 ; ie_src++){
int a_src = epsilon[ie_src][0]; //a int a_src = epsilon[ie_src][0]; //a
@ -182,6 +177,6 @@ void BaryonUtils<FImpl>::ContractBaryons(const PropagatorField &q1_src,
} }
vbaryon_corr[ss] = result; vbaryon_corr[ss] = result;
} );//end loop over lattice sites } // );//end loop over lattice sites
} }
NAMESPACE_END(Grid); NAMESPACE_END(Grid);

View File

@ -52,11 +52,10 @@ public:
std::string, q3_src, std::string, q3_src,
std::string, GammaA, std::string, GammaA,
std::string, GammaB, std::string, GammaB,
// char[], quarks_snk,
// char[], quarks_src,
std::string, quarks_snk, std::string, quarks_snk,
std::string, quarks_src, std::string, quarks_src,
int, parity, int, parity,
std::string, sink,
std::string, output); std::string, output);
}; };
@ -67,6 +66,8 @@ public:
FERM_TYPE_ALIASES(FImpl1, 1); FERM_TYPE_ALIASES(FImpl1, 1);
FERM_TYPE_ALIASES(FImpl2, 2); FERM_TYPE_ALIASES(FImpl2, 2);
FERM_TYPE_ALIASES(FImpl3, 3); FERM_TYPE_ALIASES(FImpl3, 3);
BASIC_TYPE_ALIASES(ScalarImplCR, Scalar);
SINK_TYPE_ALIASES(Scalar);
class Result: Serializable class Result: Serializable
{ {
public: public:
@ -105,7 +106,7 @@ TBaryon<FImpl1, FImpl2, FImpl3>::TBaryon(const std::string name)
template <typename FImpl1, typename FImpl2, typename FImpl3> template <typename FImpl1, typename FImpl2, typename FImpl3>
std::vector<std::string> TBaryon<FImpl1, FImpl2, FImpl3>::getInput(void) std::vector<std::string> TBaryon<FImpl1, FImpl2, FImpl3>::getInput(void)
{ {
std::vector<std::string> input = {par().q1_src, par().q2_src, par().q3_src}; std::vector<std::string> input = {par().q1_src, par().q2_src, par().q3_src, par().sink};
return input; return input;
} }
@ -135,49 +136,26 @@ void TBaryon<FImpl1, FImpl2, FImpl3>::execute(void)
<< " ) and parity " << par().parity << "." << std::endl; << " ) and parity " << par().parity << "." << std::endl;
auto &q1_src = envGet(PropagatorField1, par().q1_src); auto &q1_src = envGet(PropagatorField1, par().q1_src);
LOG(Message) << "1" << std::endl;
auto &q2_src = envGet(PropagatorField2, par().q2_src); auto &q2_src = envGet(PropagatorField2, par().q2_src);
auto &q3_src = envGet(PropagatorField3, par().q3_src); auto &q3_src = envGet(PropagatorField3, par().q3_src);
envGetTmp(LatticeComplex, c); envGetTmp(LatticeComplex, c);
Result result; Result result;
int nt = env().getDim(Tp); int nt = env().getDim(Tp);
result.corr.resize(nt); result.corr.resize(nt);
LOG(Message) << "2" << std::endl;
std::vector<Gamma::Algebra> ggA = strToVec<Gamma::Algebra>(par().GammaA); std::vector<Gamma::Algebra> ggA = strToVec<Gamma::Algebra>(par().GammaA);
LOG(Message) << "3" << std::endl;
Gamma GammaA(ggA[0]); Gamma GammaA(ggA[0]);
LOG(Message) << "4" << std::endl;
std::vector<Gamma::Algebra> ggB = strToVec<Gamma::Algebra>(par().GammaB); std::vector<Gamma::Algebra> ggB = strToVec<Gamma::Algebra>(par().GammaB);
Gamma GammaB(ggB[0]); Gamma GammaB(ggB[0]);
std::vector<TComplex> buf; std::vector<TComplex> buf;
const int parity {par().parity}; const int parity {par().parity};
LOG(Message) << "5" << std::endl;
const char * quarks_snk{par().quarks_snk.c_str()}; const char * quarks_snk{par().quarks_snk.c_str()};
LOG(Message) << "6" << std::endl;
const char * quarks_src{par().quarks_src.c_str()}; const char * quarks_src{par().quarks_src.c_str()};
LOG(Message) << "quarks_snk " << quarks_snk[0] << quarks_snk[1] << quarks_snk[2] << std::endl;
LOG(Message) << "GammaA " << (GammaA.g) << std::endl;
LOG(Message) << "GammaB " << (GammaB.g) << std::endl;
GridCartesian *Ugrid = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(),GridDefaultSimd(Nd,vComplex::Nsimd()),GridDefaultMpi()); BaryonUtils<FIMPL>::ContractBaryons(q1_src,q2_src,q3_src,GammaA,GammaB,quarks_snk,quarks_src,parity,c);
LatticePropagator q(Ugrid);
GridParallelRNG RNG4(Ugrid);
gaussian(RNG4,q);
Gamma gA = Gamma(Gamma::Algebra::Identity);
Gamma gB = Gamma(Gamma::Algebra::Gamma5);
int p=1;
char * om = "sss";
LatticeComplex c2(Ugrid);
//BaryonUtils<FIMPL>::ContractBaryons(q1_src,q2_src,q3_src,GammaA,GammaB,quarks_snk,quarks_src,parity,c); //sliceSum(c,buf,Tp);
BaryonUtils<FIMPL>::ContractBaryons(q,q,q,gA,gB,om,om,p,c); SinkFnScalar &sink = envGet(SinkFnScalar, par().sink);
std::vector<Gamma> GA={gA}; buf = sink(c);
std::vector<Gamma> GB={gB};
//A2Autils<FIMPL>::ContractFourQuarkColourMix(q,q,GA,GB,c,c2);
LOG(Message) << "survived ContractBaryons" << std::endl;
sliceSum(c,buf,Tp);
LOG(Message) << "survived sliceSum" << std::endl;
for (unsigned int t = 0; t < buf.size(); ++t) for (unsigned int t = 0; t < buf.size(); ++t)
{ {