mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 14:04:32 +00:00 
			
		
		
		
	View location & access mode
This commit is contained in:
		@@ -252,9 +252,9 @@ public:
 | 
				
			|||||||
      double start=usecond();
 | 
					      double start=usecond();
 | 
				
			||||||
      for(int i=0;i<Nloop;i++){
 | 
					      for(int i=0;i<Nloop;i++){
 | 
				
			||||||
	z=a*x-y;
 | 
						z=a*x-y;
 | 
				
			||||||
	auto x_v = x.View();
 | 
						auto x_v = x.View(CpuWrite);
 | 
				
			||||||
	auto y_v = y.View();
 | 
						auto y_v = y.View(CpuWrite);
 | 
				
			||||||
	auto z_v = z.View();
 | 
						auto z_v = z.View(CpuRead);
 | 
				
			||||||
        x_v[0]=z_v[0]; // force serial dependency to prevent optimise away
 | 
					        x_v[0]=z_v[0]; // force serial dependency to prevent optimise away
 | 
				
			||||||
        y_v[4]=z_v[4];
 | 
					        y_v[4]=z_v[4];
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -534,8 +534,8 @@ public:
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
      LatticeGaugeField Umu5d(FGrid); 
 | 
					      LatticeGaugeField Umu5d(FGrid); 
 | 
				
			||||||
      std::vector<LatticeColourMatrix> U(4,FGrid);
 | 
					      std::vector<LatticeColourMatrix> U(4,FGrid);
 | 
				
			||||||
      auto Umu_v = Umu.View();
 | 
					      auto Umu_v = Umu.View(CpuRead);
 | 
				
			||||||
      auto Umu5d_v = Umu5d.View();
 | 
					      auto Umu5d_v = Umu5d.View(CpuWrite);
 | 
				
			||||||
      for(int ss=0;ss<Umu.Grid()->oSites();ss++){
 | 
					      for(int ss=0;ss<Umu.Grid()->oSites();ss++){
 | 
				
			||||||
	for(int s=0;s<Ls;s++){
 | 
						for(int s=0;s<Ls;s++){
 | 
				
			||||||
	  Umu5d_v[Ls*ss+s] = Umu_v[ss];
 | 
						  Umu5d_v[Ls*ss+s] = Umu_v[ss];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -129,8 +129,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  LatticeGaugeField Umu5d(FGrid); 
 | 
					  LatticeGaugeField Umu5d(FGrid); 
 | 
				
			||||||
  std::vector<LatticeColourMatrix> U(4,FGrid);
 | 
					  std::vector<LatticeColourMatrix> U(4,FGrid);
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    auto Umu5d_v = Umu5d.View();
 | 
					    auto Umu5d_v = Umu5d.View(CpuWrite);
 | 
				
			||||||
    auto Umu_v = Umu.View();
 | 
					    auto Umu_v = Umu.View(CpuRead);
 | 
				
			||||||
    for(int ss=0;ss<Umu.Grid()->oSites();ss++){
 | 
					    for(int ss=0;ss<Umu.Grid()->oSites();ss++){
 | 
				
			||||||
      for(int s=0;s<Ls;s++){
 | 
					      for(int s=0;s<Ls;s++){
 | 
				
			||||||
	Umu5d_v[Ls*ss+s] = Umu_v[ss];
 | 
						Umu5d_v[Ls*ss+s] = Umu_v[ss];
 | 
				
			||||||
@@ -258,8 +258,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      //    ref =  src - Gamma(Gamma::Algebra::GammaX)* src ; // 1+gamma_x
 | 
					      //    ref =  src - Gamma(Gamma::Algebra::GammaX)* src ; // 1+gamma_x
 | 
				
			||||||
      tmp = U[mu]*Cshift(src,mu+1,1);
 | 
					      tmp = U[mu]*Cshift(src,mu+1,1);
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
	auto ref_v = ref.View();
 | 
						auto ref_v = ref.View(CpuWrite);
 | 
				
			||||||
	auto tmp_v = tmp.View();
 | 
						auto tmp_v = tmp.View(CpuRead);
 | 
				
			||||||
	for(int i=0;i<ref_v.size();i++){
 | 
						for(int i=0;i<ref_v.size();i++){
 | 
				
			||||||
	  ref_v[i]+= tmp_v[i] + Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
						  ref_v[i]+= tmp_v[i] + Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -268,8 +268,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      tmp =adj(U[mu])*src;
 | 
					      tmp =adj(U[mu])*src;
 | 
				
			||||||
      tmp =Cshift(tmp,mu+1,-1);
 | 
					      tmp =Cshift(tmp,mu+1,-1);
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
	auto ref_v = ref.View();
 | 
						auto ref_v = ref.View(CpuWrite);
 | 
				
			||||||
	auto tmp_v = tmp.View();
 | 
						auto tmp_v = tmp.View(CpuRead);
 | 
				
			||||||
	for(int i=0;i<ref_v.size();i++){
 | 
						for(int i=0;i<ref_v.size();i++){
 | 
				
			||||||
	  ref_v[i]+= tmp_v[i] - Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
						  ref_v[i]+= tmp_v[i] - Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -130,8 +130,8 @@ void benchDw(std::vector<int> & latt4, int Ls, int threads,int report )
 | 
				
			|||||||
  LatticeGaugeField Umu5d(FGrid); 
 | 
					  LatticeGaugeField Umu5d(FGrid); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // replicate across fifth dimension
 | 
					  // replicate across fifth dimension
 | 
				
			||||||
  auto Umu5d_v = Umu5d.View();
 | 
					  auto Umu5d_v = Umu5d.View(CpuWrite);
 | 
				
			||||||
  auto Umu_v   = Umu.View();
 | 
					  auto Umu_v   = Umu.View(CpuRead);
 | 
				
			||||||
  for(int ss=0;ss<Umu.Grid()->oSites();ss++){
 | 
					  for(int ss=0;ss<Umu.Grid()->oSites();ss++){
 | 
				
			||||||
    for(int s=0;s<Ls;s++){
 | 
					    for(int s=0;s<Ls;s++){
 | 
				
			||||||
      Umu5d_v[Ls*ss+s] = Umu_v[ss];
 | 
					      Umu5d_v[Ls*ss+s] = Umu_v[ss];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,7 +79,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    double start=usecond();
 | 
					    double start=usecond();
 | 
				
			||||||
    thread_for(t,threads,{
 | 
					    thread_for(t,threads,{
 | 
				
			||||||
      auto x_t = x[t].View();
 | 
					      auto x_t = x[t].View(CpuRead);
 | 
				
			||||||
      sum[t] = x_t[0];
 | 
					      sum[t] = x_t[0];
 | 
				
			||||||
      for(int i=0;i<Nloop;i++){
 | 
					      for(int i=0;i<Nloop;i++){
 | 
				
			||||||
	for(auto ss=x_t.begin();ss<x_t.end();ss++){
 | 
						for(auto ss=x_t.begin();ss<x_t.end();ss++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -177,7 +177,7 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      Real nn;      
 | 
					      Real nn;      
 | 
				
			||||||
      double start=usecond();
 | 
					      double start=usecond();
 | 
				
			||||||
      for(int i=0;i<Nloop;i++){
 | 
					      for(int i=0;i<Nloop;i++){
 | 
				
			||||||
	auto x_v = x.View();
 | 
						auto x_v = x.View(CpuWrite);
 | 
				
			||||||
	nn=norm2(x);
 | 
						nn=norm2(x);
 | 
				
			||||||
	vsplat(x_v[0]._internal[0],nn);
 | 
						vsplat(x_v[0]._internal[0],nn);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,11 +85,11 @@ void sliceInnerProductMesonField(std::vector< std::vector<ComplexD> > &mat,
 | 
				
			|||||||
      for(int b=0;b<e2;b++){
 | 
					      for(int b=0;b<e2;b++){
 | 
				
			||||||
	int ss= so+n*stride+b;
 | 
						int ss= so+n*stride+b;
 | 
				
			||||||
	for(int i=0;i<Lblock;i++){
 | 
						for(int i=0;i<Lblock;i++){
 | 
				
			||||||
	  auto lhs_v = lhs[i].View();
 | 
						  auto lhs_v = lhs[i].View(CpuRead);
 | 
				
			||||||
	  auto left = conjugate(lhs_v[ss]);
 | 
						  auto left = conjugate(lhs_v[ss]);
 | 
				
			||||||
	  for(int j=0;j<Rblock;j++){
 | 
						  for(int j=0;j<Rblock;j++){
 | 
				
			||||||
	    int idx = i+Lblock*j+Lblock*Rblock*r;
 | 
						    int idx = i+Lblock*j+Lblock*Rblock*r;
 | 
				
			||||||
	    auto rhs_v = rhs[j].View();
 | 
						    auto rhs_v = rhs[j].View(CpuRead);
 | 
				
			||||||
	    auto right = rhs_v[ss];
 | 
						    auto right = rhs_v[ss];
 | 
				
			||||||
	    vector_type vv = left()(0)(0) * right()(0)(0)
 | 
						    vector_type vv = left()(0)(0) * right()(0)(0)
 | 
				
			||||||
	      +              left()(0)(1) * right()(0)(1)
 | 
						      +              left()(0)(1) * right()(0)(1)
 | 
				
			||||||
@@ -221,12 +221,12 @@ void sliceInnerProductMesonFieldGamma(std::vector< std::vector<ComplexD> > &mat,
 | 
				
			|||||||
      for(int b=0;b<e2;b++){
 | 
					      for(int b=0;b<e2;b++){
 | 
				
			||||||
	int ss= so+n*stride+b;
 | 
						int ss= so+n*stride+b;
 | 
				
			||||||
	for(int i=0;i<Lblock;i++){
 | 
						for(int i=0;i<Lblock;i++){
 | 
				
			||||||
 	  auto lhs_v=lhs[i].View();
 | 
					 	  auto lhs_v=lhs[i].View(CpuRead);
 | 
				
			||||||
	  auto left = conjugate(lhs_v[ss]);
 | 
						  auto left = conjugate(lhs_v[ss]);
 | 
				
			||||||
	  for(int j=0;j<Rblock;j++){
 | 
						  for(int j=0;j<Rblock;j++){
 | 
				
			||||||
	  for(int mu=0;mu<Ngamma;mu++){
 | 
						  for(int mu=0;mu<Ngamma;mu++){
 | 
				
			||||||
	    
 | 
						    
 | 
				
			||||||
	    auto rhs_v = rhs[j].View();
 | 
						    auto rhs_v = rhs[j].View(CpuRead);
 | 
				
			||||||
	    auto right = Gamma(gammas[mu])*rhs_v[ss];
 | 
						    auto right = Gamma(gammas[mu])*rhs_v[ss];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	      vector_type vv = left()(0)(0) * right()(0)(0)
 | 
						      vector_type vv = left()(0)(0) * right()(0)(0)
 | 
				
			||||||
@@ -370,12 +370,12 @@ void sliceInnerProductMesonFieldGamma1(std::vector< std::vector<ComplexD> > &mat
 | 
				
			|||||||
	int ss= so+n*stride+b;
 | 
						int ss= so+n*stride+b;
 | 
				
			||||||
	for(int i=0;i<Lblock;i++){
 | 
						for(int i=0;i<Lblock;i++){
 | 
				
			||||||
	  
 | 
						  
 | 
				
			||||||
	  auto lhs_v=lhs[i].View();
 | 
						  auto lhs_v=lhs[i].View(CpuRead);
 | 
				
			||||||
	  auto left = conjugate(lhs_v[ss]);
 | 
						  auto left = conjugate(lhs_v[ss]);
 | 
				
			||||||
	  for(int j=0;j<Rblock;j++){
 | 
						  for(int j=0;j<Rblock;j++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    SpinMatrix_v vv;
 | 
						    SpinMatrix_v vv;
 | 
				
			||||||
	    auto rhs_v = rhs[j].View();
 | 
						    auto rhs_v = rhs[j].View(CpuRead);
 | 
				
			||||||
	    auto right = rhs_v[ss];
 | 
						    auto right = rhs_v[ss];
 | 
				
			||||||
	    for(int s1=0;s1<Ns;s1++){
 | 
						    for(int s1=0;s1<Ns;s1++){
 | 
				
			||||||
	    for(int s2=0;s2<Ns;s2++){
 | 
						    for(int s2=0;s2<Ns;s2++){
 | 
				
			||||||
@@ -518,12 +518,12 @@ void sliceInnerProductMesonFieldGammaMom(std::vector< std::vector<ComplexD> > &m
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for(int i=0;i<Lblock;i++){
 | 
						for(int i=0;i<Lblock;i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  auto lhs_v = lhs[i].View();
 | 
						  auto lhs_v = lhs[i].View(CpuRead);
 | 
				
			||||||
	  auto left = conjugate(lhs_v[ss]);
 | 
						  auto left = conjugate(lhs_v[ss]);
 | 
				
			||||||
	  for(int j=0;j<Rblock;j++){
 | 
						  for(int j=0;j<Rblock;j++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    SpinMatrix_v vv;
 | 
						    SpinMatrix_v vv;
 | 
				
			||||||
	    auto rhs_v = rhs[j].View();
 | 
						    auto rhs_v = rhs[j].View(CpuRead);
 | 
				
			||||||
	    auto right = rhs_v[ss];
 | 
						    auto right = rhs_v[ss];
 | 
				
			||||||
	    for(int s1=0;s1<Ns;s1++){
 | 
						    for(int s1=0;s1<Ns;s1++){
 | 
				
			||||||
	    for(int s2=0;s2<Ns;s2++){
 | 
						    for(int s2=0;s2<Ns;s2++){
 | 
				
			||||||
@@ -537,7 +537,7 @@ void sliceInnerProductMesonFieldGammaMom(std::vector< std::vector<ComplexD> > &m
 | 
				
			|||||||
	    // Trigger unroll
 | 
						    // Trigger unroll
 | 
				
			||||||
	    for ( int m=0;m<Nmom;m++){
 | 
						    for ( int m=0;m<Nmom;m++){
 | 
				
			||||||
	      int idx = m+base;
 | 
						      int idx = m+base;
 | 
				
			||||||
	      auto mom_v = mom[m].View();
 | 
						      auto mom_v = mom[m].View(CpuRead);
 | 
				
			||||||
	      auto phase = mom_v[ss];
 | 
						      auto phase = mom_v[ss];
 | 
				
			||||||
	      mac(&lvSum[idx],&vv,&phase);
 | 
						      mac(&lvSum[idx],&vv,&phase);
 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,9 +66,9 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      LatticeColourMatrix x(&Grid);// random(pRNG,x);
 | 
					      LatticeColourMatrix x(&Grid);// random(pRNG,x);
 | 
				
			||||||
      LatticeColourMatrix y(&Grid);// random(pRNG,y);
 | 
					      LatticeColourMatrix y(&Grid);// random(pRNG,y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      auto x_v = x.View();
 | 
					      auto x_v = x.View(AcceleratorRead);
 | 
				
			||||||
      auto y_v = y.View();
 | 
					      auto y_v = y.View(AcceleratorRead);
 | 
				
			||||||
      auto z_v = z.View();
 | 
					      auto z_v = z.View(AcceleratorWrite);
 | 
				
			||||||
      const uint64_t Nsite = x_v.size();
 | 
					      const uint64_t Nsite = x_v.size();
 | 
				
			||||||
      const uint64_t nsimd = vComplex::Nsimd();
 | 
					      const uint64_t nsimd = vComplex::Nsimd();
 | 
				
			||||||
      for(int64_t i=0;i<Nwarm;i++){
 | 
					      for(int64_t i=0;i<Nwarm;i++){
 | 
				
			||||||
@@ -116,9 +116,9 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      LatticeColourMatrix x(&Grid);// random(pRNG,x);
 | 
					      LatticeColourMatrix x(&Grid);// random(pRNG,x);
 | 
				
			||||||
      LatticeColourMatrix y(&Grid);// random(pRNG,y);
 | 
					      LatticeColourMatrix y(&Grid);// random(pRNG,y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      auto x_v = x.View();
 | 
					      auto x_v = x.View(AcceleratorWrite);
 | 
				
			||||||
      auto y_v = y.View();
 | 
					      auto y_v = y.View(AcceleratorRead);
 | 
				
			||||||
      auto z_v = z.View();
 | 
					      auto z_v = z.View(AcceleratorRead);
 | 
				
			||||||
      const uint64_t Nsite = x_v.size();
 | 
					      const uint64_t Nsite = x_v.size();
 | 
				
			||||||
      const uint64_t nsimd = vComplex::Nsimd();
 | 
					      const uint64_t nsimd = vComplex::Nsimd();
 | 
				
			||||||
      for(int64_t i=0;i<Nwarm;i++){
 | 
					      for(int64_t i=0;i<Nwarm;i++){
 | 
				
			||||||
@@ -167,9 +167,9 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      LatticeColourMatrix x(&Grid);// random(pRNG,x);
 | 
					      LatticeColourMatrix x(&Grid);// random(pRNG,x);
 | 
				
			||||||
      LatticeColourMatrix y(&Grid);// random(pRNG,y);
 | 
					      LatticeColourMatrix y(&Grid);// random(pRNG,y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      auto x_v = x.View();
 | 
					      auto x_v = x.View(AcceleratorRead);
 | 
				
			||||||
      auto y_v = y.View();
 | 
					      auto y_v = y.View(AcceleratorRead);
 | 
				
			||||||
      auto z_v = z.View();
 | 
					      auto z_v = z.View(AcceleratorWrite);
 | 
				
			||||||
      const uint64_t Nsite = x_v.size();
 | 
					      const uint64_t Nsite = x_v.size();
 | 
				
			||||||
      const uint64_t nsimd = vComplex::Nsimd();
 | 
					      const uint64_t nsimd = vComplex::Nsimd();
 | 
				
			||||||
      for(int64_t i=0;i<Nwarm;i++){
 | 
					      for(int64_t i=0;i<Nwarm;i++){
 | 
				
			||||||
@@ -220,10 +220,10 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      LatticeColourMatrix y(&Grid);// random(pRNG,y);
 | 
					      LatticeColourMatrix y(&Grid);// random(pRNG,y);
 | 
				
			||||||
      LatticeColourMatrix w(&Grid);// random(pRNG,y);
 | 
					      LatticeColourMatrix w(&Grid);// random(pRNG,y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      auto x_v = x.View();
 | 
					      auto x_v = x.View(AcceleratorRead);
 | 
				
			||||||
      auto y_v = y.View();
 | 
					      auto y_v = y.View(AcceleratorRead);
 | 
				
			||||||
      auto z_v = z.View();
 | 
					      auto z_v = z.View(AcceleratorRead);
 | 
				
			||||||
      auto w_v = z.View();
 | 
					      auto w_v = w.View(AcceleratorWrite);
 | 
				
			||||||
      const uint64_t Nsite = x_v.size();
 | 
					      const uint64_t Nsite = x_v.size();
 | 
				
			||||||
      const uint64_t nsimd = vComplex::Nsimd();
 | 
					      const uint64_t nsimd = vComplex::Nsimd();
 | 
				
			||||||
      for(int64_t i=0;i<Nwarm;i++){
 | 
					      for(int64_t i=0;i<Nwarm;i++){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -125,8 +125,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      //    ref =  src + Gamma(Gamma::Algebra::GammaX)* src ; // 1-gamma_x
 | 
					      //    ref =  src + Gamma(Gamma::Algebra::GammaX)* src ; // 1-gamma_x
 | 
				
			||||||
      tmp = U[mu]*Cshift(src,mu,1);
 | 
					      tmp = U[mu]*Cshift(src,mu,1);
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
	auto ref_v = ref.View();
 | 
						auto ref_v = ref.View(CpuWrite);
 | 
				
			||||||
	auto tmp_v = tmp.View();
 | 
						auto tmp_v = tmp.View(CpuWrite);
 | 
				
			||||||
	for(int i=0;i<ref_v.size();i++){
 | 
						for(int i=0;i<ref_v.size();i++){
 | 
				
			||||||
	  ref_v[i]+= tmp_v[i] - Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
						  ref_v[i]+= tmp_v[i] - Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -135,8 +135,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      tmp =adj(U[mu])*src;
 | 
					      tmp =adj(U[mu])*src;
 | 
				
			||||||
      tmp =Cshift(tmp,mu,-1);
 | 
					      tmp =Cshift(tmp,mu,-1);
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
	auto ref_v = ref.View();
 | 
						auto ref_v = ref.View(CpuWrite);
 | 
				
			||||||
	auto tmp_v = tmp.View();
 | 
						auto tmp_v = tmp.View(CpuWrite);
 | 
				
			||||||
	for(int i=0;i<ref_v.size();i++){
 | 
						for(int i=0;i<ref_v.size();i++){
 | 
				
			||||||
	  ref_v[i]+= tmp_v[i] + Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
						  ref_v[i]+= tmp_v[i] + Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -187,8 +187,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
  for(int ss=0;ss<0;ss++ ){
 | 
					  for(int ss=0;ss<0;ss++ ){
 | 
				
			||||||
    for(int i=0;i<Ns;i++){
 | 
					    for(int i=0;i<Ns;i++){
 | 
				
			||||||
      for(int j=0;j<Nc;j++){
 | 
					      for(int j=0;j<Nc;j++){
 | 
				
			||||||
	auto ref_v = ref.View();
 | 
						auto ref_v = ref.View(CpuWrite);
 | 
				
			||||||
	auto result_v = result.View();
 | 
						auto result_v = result.View(CpuWrite);
 | 
				
			||||||
	ComplexF * ref_p = (ComplexF *)&ref_v[ss]()(i)(j);
 | 
						ComplexF * ref_p = (ComplexF *)&ref_v[ss]()(i)(j);
 | 
				
			||||||
	ComplexF * res_p = (ComplexF *)&result_v[ss]()(i)(j);
 | 
						ComplexF * res_p = (ComplexF *)&result_v[ss]()(i)(j);
 | 
				
			||||||
	std::cout<<GridLogMessage << ss<< " "<<i<<" "<<j<<" "<< (*ref_p)<<" " <<(*res_p)<<std::endl;
 | 
						std::cout<<GridLogMessage << ss<< " "<<i<<" "<<j<<" "<< (*ref_p)<<" " <<(*res_p)<<std::endl;
 | 
				
			||||||
@@ -204,8 +204,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      //    ref =  src - Gamma(Gamma::Algebra::GammaX)* src ; // 1+gamma_x
 | 
					      //    ref =  src - Gamma(Gamma::Algebra::GammaX)* src ; // 1+gamma_x
 | 
				
			||||||
      tmp = U[mu]*Cshift(src,mu,1);
 | 
					      tmp = U[mu]*Cshift(src,mu,1);
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
	auto ref_v = ref.View();
 | 
						auto ref_v = ref.View(CpuWrite);
 | 
				
			||||||
	auto tmp_v = tmp.View();
 | 
						auto tmp_v = tmp.View(CpuWrite);
 | 
				
			||||||
	for(int i=0;i<ref_v.size();i++){
 | 
						for(int i=0;i<ref_v.size();i++){
 | 
				
			||||||
	  ref_v[i]+= tmp_v[i] + Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
						  ref_v[i]+= tmp_v[i] + Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -214,8 +214,8 @@ int main (int argc, char ** argv)
 | 
				
			|||||||
      tmp =adj(U[mu])*src;
 | 
					      tmp =adj(U[mu])*src;
 | 
				
			||||||
      tmp =Cshift(tmp,mu,-1);
 | 
					      tmp =Cshift(tmp,mu,-1);
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
	auto ref_v = ref.View();
 | 
						auto ref_v = ref.View(CpuWrite);
 | 
				
			||||||
	auto tmp_v = tmp.View();
 | 
						auto tmp_v = tmp.View(CpuWrite);
 | 
				
			||||||
	for(int i=0;i<ref_v.size();i++){
 | 
						for(int i=0;i<ref_v.size();i++){
 | 
				
			||||||
	  ref_v[i]+= tmp_v[i] - Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
						  ref_v[i]+= tmp_v[i] - Gamma(Gmu[mu])*tmp_v[i]; ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user