#include using namespace std; using namespace Grid; using namespace Grid::QCD; int main (int argc, char ** argv) { Grid_init(&argc,&argv); std::vector tmp_latt_size; std::vector simd_layout; std::vector mpi_layout; GridParseLayout(argv,argc,mpi_layout,simd_layout,tmp_latt_size); const int Nvec=8; typedef Lattice< iVector< vReal,Nvec> > LatticeVec; int Nloop=1000; std::cout << "===================================================================================================="< latt_size ({lat,lat,lat,lat}); GridCartesian Grid(latt_size,simd_layout,mpi_layout); //GridParallelRNG pRNG(&Grid); pRNG.SeedRandomDevice(); LatticeVec z(&Grid); //random(pRNG,z); LatticeVec x(&Grid); //random(pRNG,x); LatticeVec y(&Grid); //random(pRNG,y); double a=2.0; double start=usecond(); for(int i=0;i &ret,double a,const Lattice &lhs,const Lattice &rhs){ axpy(z,a,x,y); } double stop=usecond(); double time = (stop-start)/Nloop*1000; double bytes=3*lat*lat*lat*lat*Nvec*sizeof(Real); std::cout< latt_size ({lat,lat,lat,lat}); GridCartesian Grid(latt_size,simd_layout,mpi_layout); //GridParallelRNG pRNG(&Grid); pRNG.SeedRandomDevice(); LatticeVec z(&Grid); //random(pRNG,z); LatticeVec x(&Grid); //random(pRNG,x); LatticeVec y(&Grid); //random(pRNG,y); double a=2.0; double start=usecond(); for(int i=0;i latt_size ({lat,lat,lat,lat}); GridCartesian Grid(latt_size,simd_layout,mpi_layout); //GridParallelRNG pRNG(&Grid); pRNG.SeedRandomDevice(); LatticeVec z(&Grid); //random(pRNG,z); LatticeVec x(&Grid); //random(pRNG,x); LatticeVec y(&Grid); //random(pRNG,y); RealD a=2.0; double start=usecond(); for(int i=0;i latt_size ({lat,lat,lat,lat}); GridCartesian Grid(latt_size,simd_layout,mpi_layout); //GridParallelRNG pRNG(&Grid); pRNG.SeedRandomDevice(); LatticeVec z(&Grid); //random(pRNG,z); LatticeVec x(&Grid); //random(pRNG,x); LatticeVec y(&Grid); //random(pRNG,y); RealD a=2.0; ComplexD nn; double start=usecond(); for(int i=0;i