diff --git a/benchmarks/Benchmark_dwf.cc b/benchmarks/Benchmark_dwf.cc index 10e4521b..a5532d3d 100644 --- a/benchmarks/Benchmark_dwf.cc +++ b/benchmarks/Benchmark_dwf.cc @@ -48,16 +48,18 @@ typedef WilsonFermion5D WilsonFermion5DR; typedef WilsonFermion5D WilsonFermion5DF; typedef WilsonFermion5D WilsonFermion5DD; - int main (int argc, char ** argv) { Grid_init(&argc,&argv); + CartesianCommunicator::SetCommunicatorPolicy(CartesianCommunicator::CommunicatorPolicySendrecv); + WilsonKernelsStatic::Comms = WilsonKernelsStatic::CommsAndCompute; + int threads = GridThread::GetThreads(); std::cout< latt4 = GridDefaultLatt(); - const int Ls=8; + const int Ls=16; GridCartesian * UGrid = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(), GridDefaultSimd(Nd,vComplex::Nsimd()),GridDefaultMpi()); GridRedBlackCartesian * UrbGrid = SpaceTimeGrid::makeFourDimRedBlackGrid(UGrid); GridCartesian * FGrid = SpaceTimeGrid::makeFiveDimGrid(Ls,UGrid); @@ -71,35 +73,66 @@ int main (int argc, char ** argv) std::vector seeds4({1,2,3,4}); std::vector seeds5({5,6,7,8}); - + + std::cout << GridLogMessage << "Initialising 4d RNG" << std::endl; GridParallelRNG RNG4(UGrid); RNG4.SeedFixedIntegers(seeds4); + std::cout << GridLogMessage << "Initialising 5d RNG" << std::endl; GridParallelRNG RNG5(FGrid); RNG5.SeedFixedIntegers(seeds5); + std::cout << GridLogMessage << "Initialised RNGs" << std::endl; LatticeFermion src (FGrid); random(RNG5,src); +#if 0 + src = zero; + { + std::vector origin({0,0,0,latt4[2]-1,0}); + SpinColourVectorF tmp; + tmp=zero; + tmp()(0)(0)=Complex(-2.0,0.0); + std::cout << " source site 0 " << tmp<(Umu,mu); + // if (mu !=2 ) ttmp = 0; + // ttmp = ttmp* pow(10.0,mu); + PokeIndex(Umu,ttmp,mu); + } + std::cout << GridLogMessage << "Forced to diagonal " << std::endl; +#endif + //////////////////////////////////// + // Naive wilson implementation + //////////////////////////////////// // replicate across fifth dimension + LatticeGaugeField Umu5d(FGrid); + std::vector U(4,FGrid); for(int ss=0;ssoSites();ss++){ for(int s=0;s U(4,FGrid); for(int mu=0;mu(Umu5d,mu); } + std::cout << GridLogMessage << "Setting up Cshift based reference " << std::endl; if (1) { @@ -121,6 +154,7 @@ int main (int argc, char ** argv) RealD NP = UGrid->_Nprocessors; + std::cout << GridLogMessage << "Creating action operator " << std::endl; DomainWallFermionR Dw(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5); std::cout << GridLogMessage<< "*****************************************************************" <Barrier(); Dw.ZeroCounters(); + Dw.Dhop(src,result,0); double t0=usecond(); for(int i=0;i1.0e-4) ) { + std::cout << "RESULT\n " << result<Barrier(); + exit(-1); + } + */ assert (norm2(err)< 1.0e-4 ); Dw.Report(); } @@ -182,21 +227,13 @@ int main (int argc, char ** argv) LatticeFermion sresult(sFGrid); WilsonFermion5DR sDw(Umu,*sFGrid,*sFrbGrid,*sUGrid,*sUrbGrid,M5); - - for(int x=0;x site({s,x,y,z,t}); - SpinColourVector tmp; - peekSite(tmp,src,site); - pokeSite(tmp,ssrc,site); - }}}}} + + localConvert(src,ssrc); std::cout<Barrier(); - double t0=usecond(); + sDw.Dhop(ssrc,sresult,0); sDw.ZeroCounters(); + double t0=usecond(); for(int i=0;i site({s,x,y,z,t}); - SpinColourVector normal, simd; - peekSite(normal,result,site); - peekSite(simd,sresult,site); - sum=sum+norm2(normal-simd); - if (norm2(normal-simd) > 1.0e-6 ) { - std::cout << "site "< 1.0e-4 ){ + std::cout<< "sD REF\n " < 1.0e-4 ){ + std::cout<< "sD REF\n " <::DhopEO "<::DhopEO "<Barrier(); + sDw.DhopEO(ssrc_o, sr_e, DaggerNo); sDw.ZeroCounters(); - sDw.stat.init("DhopEO"); + // sDw.stat.init("DhopEO"); double t0=usecond(); for (int i = 0; i < ncall; i++) { sDw.DhopEO(ssrc_o, sr_e, DaggerNo); } double t1=usecond(); FGrid->Barrier(); - sDw.stat.print(); + // sDw.stat.print(); double volume=Ls; for(int mu=0;mu1.0e-4) { + + if(( error>1.0e-4) ) { setCheckerboard(ssrc,ssrc_o); setCheckerboard(ssrc,ssrc_e); - std::cout<< ssrc << std::endl; + std::cout<< "DIFF\n " <1.0e-4)){ + std::cout<< "DAG RESULT\n " <Barrier(); + Dw.DhopEO(src_o,r_e,DaggerNo); double t0=usecond(); for(int i=0;i1.0e-4)){ + std::cout<< "Deo RESULT\n " <