mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-10-24 17:54:47 +01:00 
			
		
		
		
	Hide internal data
This commit is contained in:
		| @@ -73,15 +73,15 @@ public: | ||||
|   void coarseToFine(const CoarseField& in, Field& out) { | ||||
|  | ||||
|     out = zero; | ||||
|     out.checkerboard = _evec._v[0].checkerboard; | ||||
|     out.Checkerboard() = _evec._v[0].Checkerboard(); | ||||
|  | ||||
|     int Nbasis = sizeof(in._odata[0]._internal._internal) / sizeof(in._odata[0]._internal._internal[0]); | ||||
|     int Nbasis = sizeof(in[0]._internal._internal) / sizeof(in[0]._internal._internal[0]); | ||||
|     assert(Nbasis == _evec._Nm); | ||||
|      | ||||
| #pragma omp parallel for | ||||
|     for (int b=0;b<_bgrid._o_blocks;b++) { | ||||
|       for (int j=0;j<_evec._Nm;j++) { | ||||
| 	_bgrid.block_caxpy(b,out,in._odata[b]._internal._internal[j],_evec._v[j],out); | ||||
| 	_bgrid.block_caxpy(b,out,in[b]._internal._internal[j],_evec._v[j],out); | ||||
|       } | ||||
|     } | ||||
|  | ||||
| @@ -92,7 +92,7 @@ public: | ||||
|  | ||||
|     out = zero; | ||||
|  | ||||
|     int Nbasis = sizeof(out._odata[0]._internal._internal) / sizeof(out._odata[0]._internal._internal[0]); | ||||
|     int Nbasis = sizeof(out[0]._internal._internal) / sizeof(out[0]._internal._internal[0]); | ||||
|     assert(Nbasis == _evec._Nm); | ||||
|  | ||||
|  | ||||
| @@ -105,7 +105,7 @@ public: | ||||
| 	// |rhs> -= <j|rhs> |j> | ||||
| 	auto c = _bgrid.block_sp(b,_evec._v[j],tmp); | ||||
| 	_bgrid.block_caxpy(b,tmp,-c,_evec._v[j],tmp); // may make this more numerically stable | ||||
| 	out._odata[b]._internal._internal[j] = c; | ||||
| 	out[b]._internal._internal[j] = c; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -113,7 +113,7 @@ public: | ||||
|       vCoeff_t ret = 0.0; | ||||
|       for (int i=0;i<_block_sites;i++) { // only odd sites | ||||
| 	int ss = block_site_to_o_site(x0,i); | ||||
| 	ret += TensorRemove(innerProduct(x._odata[ss],y._odata[ss])); | ||||
| 	ret += TensorRemove(innerProduct(x[ss],y[ss])); | ||||
|       } | ||||
|  | ||||
|       return ret; | ||||
| @@ -140,7 +140,7 @@ public: | ||||
| 	  for (int j=0;j<nsimd;j++) { | ||||
| 	    int t = lsize * i + l*nsimd + j; | ||||
|  | ||||
| 	    ret[j] += conjugate(((Coeff_t*)&x._odata[ss]._internal)[l*nsimd + j]) * y[t]; | ||||
| 	    ret[j] += conjugate(((Coeff_t*)&x[ss]._internal)[l*nsimd + j]) * y[t]; | ||||
| 	  } | ||||
| 	} | ||||
|       } | ||||
| @@ -175,7 +175,7 @@ public: | ||||
|  | ||||
|       for (int i=0;i<_block_sites;i++) { // only odd sites | ||||
| 	int ss = block_site_to_o_site(x0,i); | ||||
| 	vcaxpy(ret._odata[ss],a,x._odata[ss],y._odata[ss]); | ||||
| 	vcaxpy(ret[ss],a,x[ss],y[ss]); | ||||
|       } | ||||
|  | ||||
|     } | ||||
| @@ -192,7 +192,7 @@ public: | ||||
|  | ||||
| 	int n = lsize / nsimd; | ||||
| 	for (int l=0;l<n;l++) { | ||||
| 	  vCoeff_t r = a* ((vCoeff_t*)&x._odata[ss]._internal)[l]; | ||||
| 	  vCoeff_t r = a* ((vCoeff_t*)&x[ss]._internal)[l]; | ||||
|  | ||||
| 	  for (int j=0;j<nsimd;j++) { | ||||
| 	    int t = lsize * i + l*nsimd + j; | ||||
| @@ -213,7 +213,7 @@ public: | ||||
| 	int ss = block_site_to_o_site(x0,i); | ||||
|  | ||||
| 	for (int l=0;l<lsize;l++) | ||||
| 	  ((Coeff_t*)&ret._odata[ss]._internal)[l] = (Coeff_t)x[lsize * i + l]; // convert precision | ||||
| 	  ((Coeff_t*)&ret[ss]._internal)[l] = (Coeff_t)x[lsize * i + l]; // convert precision | ||||
|       } | ||||
|  | ||||
|     } | ||||
| @@ -228,7 +228,7 @@ public: | ||||
| 	int ss = block_site_to_o_site(x0,i); | ||||
|  | ||||
| 	for (int l=0;l<lsize;l++) | ||||
| 	  x[lsize * i + l] = (ComplexD)((Coeff_t*)&ret._odata[ss]._internal)[l]; | ||||
| 	  x[lsize * i + l] = (ComplexD)((Coeff_t*)&ret[ss]._internal)[l]; | ||||
|       } | ||||
|  | ||||
|     } | ||||
| @@ -255,7 +255,7 @@ public: | ||||
|        | ||||
|       for (int i=0;i<_block_sites;i++) { // only odd sites | ||||
| 	int ss = block_site_to_o_site(x0,i); | ||||
| 	vcscale(ret._odata[ss],a,ret._odata[ss]); | ||||
| 	vcscale(ret[ss],a,ret[ss]); | ||||
|       } | ||||
|     } | ||||
|  | ||||
| @@ -310,7 +310,7 @@ public: | ||||
| 	   | ||||
| 	  for (int s=0;s<4;s++) | ||||
| 	    for (int c=0;c<3;c++) { | ||||
| 	      Coeff_t& ld = ((Coeff_t*)&v._odata[oi]._internal._internal[s]._internal[c])[ii]; | ||||
| 	      Coeff_t& ld = ((Coeff_t*)&v[oi]._internal._internal[s]._internal[c])[ii]; | ||||
| 	      int ti = 12*lti + 3*s + c; | ||||
| 	      ld = Coeff_t(buf[2*ti+0], buf[2*ti+1]); | ||||
| 	    } | ||||
| @@ -350,7 +350,7 @@ public: | ||||
|  | ||||
| 	  for (int s=0;s<4;s++) | ||||
| 	    for (int c=0;c<3;c++) { | ||||
| 	      Coeff_t& ld = ((Coeff_t*)&v._odata[oi]._internal._internal[s]._internal[c])[ii]; | ||||
| 	      Coeff_t& ld = ((Coeff_t*)&v[oi]._internal._internal[s]._internal[c])[ii]; | ||||
| 	      int ti = 12*lti + 3*s + c; | ||||
| 	      buf[2*ti+0] = ld.real(); | ||||
| 	      buf[2*ti+1] = ld.imag(); | ||||
|   | ||||
| @@ -174,7 +174,7 @@ namespace Grid { | ||||
| 	 } | ||||
| 	  | ||||
| 	 // loop | ||||
| 	 ret._v[nev].checkerboard = Odd; | ||||
| 	 ret._v[nev].Checkerboard() = Odd; | ||||
| #pragma omp parallel  | ||||
| 	 { | ||||
| 	    | ||||
| @@ -706,13 +706,13 @@ namespace Grid { | ||||
| 		 read_floats(lptr, &buf1[0], buf1.size() ); | ||||
| 		 if (mnb != -1) { | ||||
| 		   for (l=0;l<nkeep_single;l++) { | ||||
| 		     ((CoeffCoarse_t*)&coef._v[j]._odata[oi]._internal._internal[l])[ii] = CoeffCoarse_t(buf1[2*l+0],buf1[2*l+1]); | ||||
| 		     ((CoeffCoarse_t*)&coef._v[j][oi]._internal._internal[l])[ii] = CoeffCoarse_t(buf1[2*l+0],buf1[2*l+1]); | ||||
| 		   } | ||||
| 		 } | ||||
| 		 read_floats_fp16(lptr, &buf2[0], buf2.size(), _FP16_COEF_EXP_SHARE_FLOATS); | ||||
| 		 if (mnb != -1) { | ||||
| 		   for (l=nkeep_single;l<nkeep;l++) { | ||||
| 		     ((CoeffCoarse_t*)&coef._v[j]._odata[oi]._internal._internal[l])[ii] = CoeffCoarse_t(buf2[2*(l-nkeep_single)+0],buf2[2*(l-nkeep_single)+1]); | ||||
| 		     ((CoeffCoarse_t*)&coef._v[j][oi]._internal._internal[l])[ii] = CoeffCoarse_t(buf2[2*(l-nkeep_single)+0],buf2[2*(l-nkeep_single)+1]); | ||||
| 		   } | ||||
| 		 } | ||||
| 		  | ||||
| @@ -721,7 +721,7 @@ namespace Grid { | ||||
| 	    | ||||
| 	   // set checkerboard | ||||
| 	   for (int i=0;i<(int)pr._evec.size();i++) | ||||
| 	     pr._evec._v[i].checkerboard = Odd; | ||||
| 	     pr._evec._v[i].Checkerboard() = Odd; | ||||
| 	  | ||||
| 	   gsw2.Stop(); | ||||
| 	   seconds=gsw2.useconds()/1e6; | ||||
| @@ -875,7 +875,7 @@ namespace Grid { | ||||
| 	     gsw4.Start(); | ||||
| 	     gsw5.Start(); | ||||
| 	     for (int l=0;l<nsingleCap;l++) { | ||||
| 	       auto res = ((CoeffCoarse_t*)&coef._v[j]._odata[oi]._internal._internal[l])[ii]; | ||||
| 	       auto res = ((CoeffCoarse_t*)&coef._v[j][oi]._internal._internal[l])[ii]; | ||||
| 	       buf[2*l+0] = res.real(); | ||||
| 	       buf[2*l+1] = res.imag(); | ||||
| 	       //nrmTest += res.real() * res.real() + res.imag() * res.imag(); | ||||
| @@ -884,7 +884,7 @@ namespace Grid { | ||||
| 	     write_floats(f,fbuf,crc, &buf[0], size1 ); | ||||
| 	     gsw4.Stop(); | ||||
| 	     for (int l=nsingleCap;l<(int)pr._evec.size();l++) { | ||||
| 	       auto res = ((CoeffCoarse_t*)&coef._v[j]._odata[oi]._internal._internal[l])[ii]; | ||||
| 	       auto res = ((CoeffCoarse_t*)&coef._v[j][oi]._internal._internal[l])[ii]; | ||||
| 	       buf[2*(l-nsingleCap)+0] = res.real(); | ||||
| 	       buf[2*(l-nsingleCap)+1] = res.imag(); | ||||
| 	       //nrmTest += res.real() * res.real() + res.imag() * res.imag(); | ||||
| @@ -990,7 +990,7 @@ namespace Grid { | ||||
|       | ||||
|      for (int i=0;i<N;i++) { | ||||
|  | ||||
|        if (ret._v[i].checkerboard != Odd) | ||||
|        if (ret._v[i].Checkerboard() != Odd) | ||||
| 	 continue; | ||||
|  | ||||
|        // create buffer and put data in argonne format in there | ||||
|   | ||||
| @@ -142,14 +142,14 @@ public: | ||||
|       return false; | ||||
|     fseeko(_f,cur,SEEK_SET); | ||||
|  | ||||
|     size_t sz = sizeof(out._odata[0]) * out._odata.size(); | ||||
|     size_t sz = sizeof(out[0]) * out._odata.size(); | ||||
|  | ||||
|     GridStopWatch gsw; | ||||
|     gsw.Start(); | ||||
|     uint32_t crc_exp; | ||||
|     assert(fread(&crc_exp,4,1,_f)==1); | ||||
|     assert(fread(&out._odata[0],sz,1,_f)==1); | ||||
|     assert(FieldVectorIO::crc32_threaded((unsigned char*)&out._odata[0],sz,0x0)==crc_exp); | ||||
|     assert(fread(&out[0],sz,1,_f)==1); | ||||
|     assert(FieldVectorIO::crc32_threaded((unsigned char*)&out[0],sz,0x0)==crc_exp); | ||||
|     gsw.Stop(); | ||||
|  | ||||
|     printf("CheckpointLinearFunction:: reading %lld\n",(long long)sz); | ||||
| @@ -161,13 +161,13 @@ public: | ||||
|  | ||||
|     fseek(_f,0,SEEK_CUR); // switch to write | ||||
|  | ||||
|     size_t sz = sizeof(out._odata[0]) * out._odata.size(); | ||||
|     size_t sz = sizeof(out[0]) * out._odata.size(); | ||||
|  | ||||
|     GridStopWatch gsw; | ||||
|     gsw.Start(); | ||||
|     uint32_t crc = FieldVectorIO::crc32_threaded((unsigned char*)&out._odata[0],sz,0x0); | ||||
|     uint32_t crc = FieldVectorIO::crc32_threaded((unsigned char*)&out[0],sz,0x0); | ||||
|     assert(fwrite(&crc,4,1,_f)==1); | ||||
|     assert(fwrite(&out._odata[0],sz,1,_f)==1); | ||||
|     assert(fwrite(&out[0],sz,1,_f)==1); | ||||
|     fflush(_f); // try this on the GPFS to suppress OPA usage for disk during dslash; this is not needed at Lustre/JLAB | ||||
|     gsw.Stop(); | ||||
|  | ||||
| @@ -390,7 +390,7 @@ void CoarseGridLanczos(BlockProjector<Field>& pr,RealD alpha2,RealD beta,int Npo | ||||
|       gsw.Start(); | ||||
|  | ||||
|       pr.coarseToFine(coef[i],v_i); | ||||
|       v_i.checkerboard = Odd; | ||||
|       v_i.Checkerboard() = Odd; | ||||
|        | ||||
|       for (int j=0;j<smoothed_eval_outer;j++) { | ||||
| 	tmp=zero; | ||||
| @@ -425,7 +425,7 @@ void CoarseGridLanczos(BlockProjector<Field>& pr,RealD alpha2,RealD beta,int Npo | ||||
|   if (cg_test_enabled) { | ||||
|     ConjugateGradient<LatticeFermion> CG(1.0e-8, cg_test_maxiter, false); | ||||
|     LatticeFermion src_orig(bgrid._grid); | ||||
|     src_orig.checkerboard = Odd; | ||||
|     src_orig.Checkerboard() = Odd; | ||||
|     src_orig = 1.0; | ||||
|     src_orig = src_orig * (1.0 / ::sqrt(norm2(src_orig)) ); | ||||
|     auto result = src_orig;  | ||||
| @@ -594,7 +594,7 @@ int main (int argc, char ** argv) { | ||||
|   LatticeFermion    src(FrbGrid); | ||||
|   { | ||||
|     src=1.0; | ||||
|     src.checkerboard = Odd; | ||||
|     src.Checkerboard() = Odd; | ||||
|  | ||||
|     // normalize | ||||
|     RealD nn = norm2(src); | ||||
|   | ||||
| @@ -85,7 +85,7 @@ public: | ||||
|     Grid::QCD::ScidacReader RD ; | ||||
|     RD.open(evecs_file); | ||||
|     for(int k=0;k<nbasis;k++) { | ||||
|       this->_Aggregate.subspace[k].checkerboard=this->_checkerboard; | ||||
|       this->_Aggregate.subspace[k].Checkerboard()=this->_checkerboard; | ||||
|       RD.readScidacFieldRecord(this->_Aggregate.subspace[k],record); | ||||
|        | ||||
|     } | ||||
|   | ||||
| @@ -87,8 +87,8 @@ public: | ||||
|  | ||||
|     GridBase *FineGrid = _Aggregate.FineGrid; | ||||
|  | ||||
|     FineField fin(FineGrid) ;fin.checkerboard  =_Aggregate.checkerboard; | ||||
|     FineField fout(FineGrid);fout.checkerboard =_Aggregate.checkerboard; | ||||
|     FineField fin(FineGrid) ;fin.Checkerboard()  =_Aggregate.Checkerboard(); | ||||
|     FineField fout(FineGrid);fout.Checkerboard() =_Aggregate.Checkerboard(); | ||||
|  | ||||
|     _Aggregate.PromoteFromSubspace(in,fin); | ||||
|     _poly(_Linop,fin,fout); | ||||
| @@ -139,7 +139,7 @@ public: | ||||
|     int Nk = nbasis; | ||||
|     _Aggregate.subspace.resize(Nk,_FineGrid); | ||||
|     _Aggregate.subspace[0]=1.0; | ||||
|     _Aggregate.subspace[0].checkerboard=_checkerboard; | ||||
|     _Aggregate.subspace[0].Checkerboard()=_checkerboard; | ||||
|     normalise(_Aggregate.subspace[0]); | ||||
|     PlainHermOp<FineField>    Op(_FineOp); | ||||
|     for(int k=1;k<Nk;k++){ | ||||
| @@ -148,7 +148,7 @@ public: | ||||
|       std::cout << GridLogMessage << "testFine subspace "<<k<<" " <<norm2(_Aggregate.subspace[k])<<std::endl; | ||||
|     } | ||||
|     for(int k=0;k<Nk;k++){ | ||||
|       std::cout << GridLogMessage << "testFine subspace "<<k<<"  cb " <<_Aggregate.subspace[k].checkerboard<<std::endl; | ||||
|       std::cout << GridLogMessage << "testFine subspace "<<k<<"  cb " <<_Aggregate.subspace[k].Checkerboard()<<std::endl; | ||||
|     } | ||||
|     _Aggregate.Orthogonalise(); | ||||
|   } | ||||
| @@ -165,14 +165,14 @@ public: | ||||
|  | ||||
|     std::vector<RealD>          eval(Nm); | ||||
|  | ||||
|     FineField src(_FineGrid); src=1.0; src.checkerboard = _checkerboard; | ||||
|     FineField src(_FineGrid); src=1.0; src.Checkerboard() = _checkerboard; | ||||
|  | ||||
|     ImplicitlyRestartedLanczos<FineField> IRL(ChebyOp,Op,Nk,Nk,Nm,resid,MaxIt,betastp,MinRes); | ||||
|     _Aggregate.subspace.resize(Nm,_FineGrid); | ||||
|     IRL.calc(eval,_Aggregate.subspace,src,Nk,false); | ||||
|     _Aggregate.subspace.resize(Nk,_FineGrid); | ||||
|     for(int k=0;k<Nk;k++){ | ||||
|       std::cout << GridLogMessage << "testFine subspace "<<k<<"  cb " <<_Aggregate.subspace[k].checkerboard<<std::endl; | ||||
|       std::cout << GridLogMessage << "testFine subspace "<<k<<"  cb " <<_Aggregate.subspace[k].Checkerboard()<<std::endl; | ||||
|     } | ||||
|     _Aggregate.Orthogonalise(); | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user