diff --git a/Grid/algorithms/iterative/ConjugateGradientMixedPrec.h b/Grid/algorithms/iterative/ConjugateGradientMixedPrec.h index 08942097..cd2e4374 100644 --- a/Grid/algorithms/iterative/ConjugateGradientMixedPrec.h +++ b/Grid/algorithms/iterative/ConjugateGradientMixedPrec.h @@ -35,7 +35,8 @@ NAMESPACE_BEGIN(Grid); typename std::enable_if< getPrecision::value == 2, int>::type = 0, typename std::enable_if< getPrecision::value == 1, int>::type = 0> class MixedPrecisionConjugateGradient : public LinearFunction { - public: + public: + using LinearFunction::operator(); RealD Tolerance; RealD InnerTolerance; //Initial tolerance for inner CG. Defaults to Tolerance but can be changed Integer MaxInnerIterations; diff --git a/Grid/algorithms/iterative/Deflation.h b/Grid/algorithms/iterative/Deflation.h index 43fe3e35..2eb28bf9 100644 --- a/Grid/algorithms/iterative/Deflation.h +++ b/Grid/algorithms/iterative/Deflation.h @@ -33,16 +33,19 @@ namespace Grid { template class ZeroGuesser: public LinearFunction { public: + using LinearFunction::operator(); virtual void operator()(const Field &src, Field &guess) { guess = Zero(); }; }; template class DoNothingGuesser: public LinearFunction { public: + using LinearFunction::operator(); virtual void operator()(const Field &src, Field &guess) { }; }; template class SourceGuesser: public LinearFunction { public: + using LinearFunction::operator(); virtual void operator()(const Field &src, Field &guess) { guess = src; }; }; @@ -57,6 +60,7 @@ private: const unsigned int N; public: + using LinearFunction::operator(); DeflatedGuesser(const std::vector & _evec,const std::vector & _eval) : DeflatedGuesser(_evec, _eval, _evec.size()) @@ -87,6 +91,7 @@ private: const std::vector &eval_coarse; public: + using LinearFunction::operator(); LocalCoherenceDeflatedGuesser(const std::vector &_subspace, const std::vector &_evec_coarse, const std::vector &_eval_coarse) diff --git a/Grid/allocator/MemoryManager.cc b/Grid/allocator/MemoryManager.cc index 30be510b..ef02f6aa 100644 --- a/Grid/allocator/MemoryManager.cc +++ b/Grid/allocator/MemoryManager.cc @@ -159,7 +159,6 @@ void MemoryManager::Init(void) char * str; int Nc; - int NcS; str= getenv("GRID_ALLOC_NCACHE_LARGE"); if ( str ) { diff --git a/Grid/qcd/action/fermion/implementation/WilsonKernelsHandImplementation.h b/Grid/qcd/action/fermion/implementation/WilsonKernelsHandImplementation.h index 0703b613..771aec85 100644 --- a/Grid/qcd/action/fermion/implementation/WilsonKernelsHandImplementation.h +++ b/Grid/qcd/action/fermion/implementation/WilsonKernelsHandImplementation.h @@ -77,23 +77,23 @@ Author: paboyle #define REGISTER #ifdef GRID_SIMT -#define LOAD_CHIMU(ptype) \ +#define LOAD_CHIMU(Ptype) \ {const SiteSpinor & ref (in[offset]); \ - Chimu_00=coalescedReadPermute(ref()(0)(0),perm,lane); \ - Chimu_01=coalescedReadPermute(ref()(0)(1),perm,lane); \ - Chimu_02=coalescedReadPermute(ref()(0)(2),perm,lane); \ - Chimu_10=coalescedReadPermute(ref()(1)(0),perm,lane); \ - Chimu_11=coalescedReadPermute(ref()(1)(1),perm,lane); \ - Chimu_12=coalescedReadPermute(ref()(1)(2),perm,lane); \ - Chimu_20=coalescedReadPermute(ref()(2)(0),perm,lane); \ - Chimu_21=coalescedReadPermute(ref()(2)(1),perm,lane); \ - Chimu_22=coalescedReadPermute(ref()(2)(2),perm,lane); \ - Chimu_30=coalescedReadPermute(ref()(3)(0),perm,lane); \ - Chimu_31=coalescedReadPermute(ref()(3)(1),perm,lane); \ - Chimu_32=coalescedReadPermute(ref()(3)(2),perm,lane); } + Chimu_00=coalescedReadPermute(ref()(0)(0),perm,lane); \ + Chimu_01=coalescedReadPermute(ref()(0)(1),perm,lane); \ + Chimu_02=coalescedReadPermute(ref()(0)(2),perm,lane); \ + Chimu_10=coalescedReadPermute(ref()(1)(0),perm,lane); \ + Chimu_11=coalescedReadPermute(ref()(1)(1),perm,lane); \ + Chimu_12=coalescedReadPermute(ref()(1)(2),perm,lane); \ + Chimu_20=coalescedReadPermute(ref()(2)(0),perm,lane); \ + Chimu_21=coalescedReadPermute(ref()(2)(1),perm,lane); \ + Chimu_22=coalescedReadPermute(ref()(2)(2),perm,lane); \ + Chimu_30=coalescedReadPermute(ref()(3)(0),perm,lane); \ + Chimu_31=coalescedReadPermute(ref()(3)(1),perm,lane); \ + Chimu_32=coalescedReadPermute(ref()(3)(2),perm,lane); } #define PERMUTE_DIR(dir) ; #else -#define LOAD_CHIMU(ptype) \ +#define LOAD_CHIMU(Ptype) \ {const SiteSpinor & ref (in[offset]); \ Chimu_00=ref()(0)(0);\ Chimu_01=ref()(0)(1);\ @@ -109,12 +109,12 @@ Author: paboyle Chimu_32=ref()(3)(2);} #define PERMUTE_DIR(dir) \ - permute##dir(Chi_00,Chi_00); \ - permute##dir(Chi_01,Chi_01);\ - permute##dir(Chi_02,Chi_02);\ - permute##dir(Chi_10,Chi_10); \ - permute##dir(Chi_11,Chi_11);\ - permute##dir(Chi_12,Chi_12); + permute##dir(Chi_00,Chi_00); \ + permute##dir(Chi_01,Chi_01); \ + permute##dir(Chi_02,Chi_02); \ + permute##dir(Chi_10,Chi_10); \ + permute##dir(Chi_11,Chi_11); \ + permute##dir(Chi_12,Chi_12); #endif @@ -371,88 +371,91 @@ Author: paboyle result_32-= UChi_12; #define HAND_STENCIL_LEGB(PROJ,PERM,DIR,RECON) \ - SE=st.GetEntry(ptype,DIR,ss); \ - offset = SE->_offset; \ - local = SE->_is_local; \ - perm = SE->_permute; \ - if ( local ) { \ - LOAD_CHIMU(PERM); \ - PROJ; \ - if ( perm) { \ - PERMUTE_DIR(PERM); \ - } \ - } else { \ - LOAD_CHI; \ - } \ - acceleratorSynchronise(); \ - MULT_2SPIN(DIR); \ - RECON; + {int ptype; \ + SE=st.GetEntry(ptype,DIR,ss); \ + auto offset = SE->_offset; \ + auto local = SE->_is_local; \ + auto perm = SE->_permute; \ + if ( local ) { \ + LOAD_CHIMU(PERM); \ + PROJ; \ + if ( perm) { \ + PERMUTE_DIR(PERM); \ + } \ + } else { \ + LOAD_CHI; \ + } \ + acceleratorSynchronise(); \ + MULT_2SPIN(DIR); \ + RECON; } -#define HAND_STENCIL_LEG(PROJ,PERM,DIR,RECON) \ - SE=&st_p[DIR+8*ss]; \ - ptype=st_perm[DIR]; \ - offset = SE->_offset; \ - local = SE->_is_local; \ - perm = SE->_permute; \ - if ( local ) { \ - LOAD_CHIMU(PERM); \ - PROJ; \ - if ( perm) { \ - PERMUTE_DIR(PERM); \ - } \ - } else { \ - LOAD_CHI; \ - } \ - acceleratorSynchronise(); \ - MULT_2SPIN(DIR); \ - RECON; +#define HAND_STENCIL_LEG(PROJ,PERM,DIR,RECON) \ + { SE=&st_p[DIR+8*ss]; \ + auto ptype=st_perm[DIR]; \ + auto offset = SE->_offset; \ + auto local = SE->_is_local; \ + auto perm = SE->_permute; \ + if ( local ) { \ + LOAD_CHIMU(PERM); \ + PROJ; \ + if ( perm) { \ + PERMUTE_DIR(PERM); \ + } \ + } else { \ + LOAD_CHI; \ + } \ + acceleratorSynchronise(); \ + MULT_2SPIN(DIR); \ + RECON; } #define HAND_STENCIL_LEGA(PROJ,PERM,DIR,RECON) \ - SE=&st_p[DIR+8*ss]; \ - ptype=st_perm[DIR]; \ - /*SE=st.GetEntry(ptype,DIR,ss);*/ \ - offset = SE->_offset; \ - perm = SE->_permute; \ - LOAD_CHIMU(PERM); \ - PROJ; \ - MULT_2SPIN(DIR); \ - RECON; + { SE=&st_p[DIR+8*ss]; \ + auto ptype=st_perm[DIR]; \ + /*SE=st.GetEntry(ptype,DIR,ss);*/ \ + auto offset = SE->_offset; \ + auto perm = SE->_permute; \ + LOAD_CHIMU(PERM); \ + PROJ; \ + MULT_2SPIN(DIR); \ + RECON; } #define HAND_STENCIL_LEG_INT(PROJ,PERM,DIR,RECON) \ - SE=st.GetEntry(ptype,DIR,ss); \ - offset = SE->_offset; \ - local = SE->_is_local; \ - perm = SE->_permute; \ - if ( local ) { \ - LOAD_CHIMU(PERM); \ - PROJ; \ - if ( perm) { \ - PERMUTE_DIR(PERM); \ - } \ - } else if ( st.same_node[DIR] ) { \ - LOAD_CHI; \ - } \ - acceleratorSynchronise(); \ - if (local || st.same_node[DIR] ) { \ - MULT_2SPIN(DIR); \ - RECON; \ - } \ - acceleratorSynchronise(); + { int ptype; \ + SE=st.GetEntry(ptype,DIR,ss); \ + auto offset = SE->_offset; \ + auto local = SE->_is_local; \ + auto perm = SE->_permute; \ + if ( local ) { \ + LOAD_CHIMU(PERM); \ + PROJ; \ + if ( perm) { \ + PERMUTE_DIR(PERM); \ + } \ + } else if ( st.same_node[DIR] ) { \ + LOAD_CHI; \ + } \ + acceleratorSynchronise(); \ + if (local || st.same_node[DIR] ) { \ + MULT_2SPIN(DIR); \ + RECON; \ + } \ + acceleratorSynchronise(); } #define HAND_STENCIL_LEG_EXT(PROJ,PERM,DIR,RECON) \ - SE=st.GetEntry(ptype,DIR,ss); \ - offset = SE->_offset; \ - if((!SE->_is_local)&&(!st.same_node[DIR]) ) { \ - LOAD_CHI; \ - MULT_2SPIN(DIR); \ - RECON; \ - nmu++; \ - } \ - acceleratorSynchronise(); + { int ptype; \ + SE=st.GetEntry(ptype,DIR,ss); \ + auto offset = SE->_offset; \ + if((!SE->_is_local)&&(!st.same_node[DIR]) ) { \ + LOAD_CHI; \ + MULT_2SPIN(DIR); \ + RECON; \ + nmu++; \ + } \ + acceleratorSynchronise(); } -#define HAND_RESULT(ss) \ - { \ - SiteSpinor & ref (out[ss]); \ +#define HAND_RESULT(ss) \ + { \ + SiteSpinor & ref (out[ss]); \ coalescedWrite(ref()(0)(0),result_00,lane); \ coalescedWrite(ref()(0)(1),result_01,lane); \ coalescedWrite(ref()(0)(2),result_02,lane); \ @@ -563,7 +566,6 @@ WilsonKernels::HandDhopSiteSycl(StencilVector st_perm,StencilEntry *st_p, HAND_DECLARATIONS(Simt); - int offset,local,perm, ptype; StencilEntry *SE; HAND_STENCIL_LEG(XM_PROJ,3,Xp,XM_RECON); HAND_STENCIL_LEG(YM_PROJ,2,Yp,YM_RECON_ACCUM); @@ -593,9 +595,7 @@ WilsonKernels::HandDhopSite(StencilView &st, DoubledGaugeFieldView &U,Site HAND_DECLARATIONS(Simt); - int offset,local,perm, ptype; StencilEntry *SE; - HAND_STENCIL_LEG(XM_PROJ,3,Xp,XM_RECON); HAND_STENCIL_LEG(YM_PROJ,2,Yp,YM_RECON_ACCUM); HAND_STENCIL_LEG(ZM_PROJ,1,Zp,ZM_RECON_ACCUM); @@ -623,8 +623,6 @@ void WilsonKernels::HandDhopSiteDag(StencilView &st,DoubledGaugeFieldView HAND_DECLARATIONS(Simt); StencilEntry *SE; - int offset,local,perm, ptype; - HAND_STENCIL_LEG(XP_PROJ,3,Xp,XP_RECON); HAND_STENCIL_LEG(YP_PROJ,2,Yp,YP_RECON_ACCUM); HAND_STENCIL_LEG(ZP_PROJ,1,Zp,ZP_RECON_ACCUM); @@ -640,8 +638,8 @@ template accelerator_inline void WilsonKernels::HandDhopSiteInt(StencilView &st,DoubledGaugeFieldView &U,SiteHalfSpinor *buf, int ss,int sU,const FermionFieldView &in, FermionFieldView &out) { - auto st_p = st._entries_p; - auto st_perm = st._permute_type; + // auto st_p = st._entries_p; + // auto st_perm = st._permute_type; // T==0, Z==1, Y==2, Z==3 expect 1,2,2,2 simd layout etc... typedef typename Simd::scalar_type S; typedef typename Simd::vector_type V; @@ -652,7 +650,6 @@ WilsonKernels::HandDhopSiteInt(StencilView &st,DoubledGaugeFieldView &U,Si HAND_DECLARATIONS(Simt); - int offset,local,perm, ptype; StencilEntry *SE; ZERO_RESULT; HAND_STENCIL_LEG_INT(XM_PROJ,3,Xp,XM_RECON_ACCUM); @@ -670,8 +667,8 @@ template accelerator_inline void WilsonKernels::HandDhopSiteDagInt(StencilView &st,DoubledGaugeFieldView &U,SiteHalfSpinor *buf, int ss,int sU,const FermionFieldView &in, FermionFieldView &out) { - auto st_p = st._entries_p; - auto st_perm = st._permute_type; + // auto st_p = st._entries_p; + // auto st_perm = st._permute_type; typedef typename Simd::scalar_type S; typedef typename Simd::vector_type V; typedef decltype( coalescedRead( in[0]()(0)(0) )) Simt; @@ -682,7 +679,6 @@ void WilsonKernels::HandDhopSiteDagInt(StencilView &st,DoubledGaugeFieldVi HAND_DECLARATIONS(Simt); StencilEntry *SE; - int offset,local,perm, ptype; ZERO_RESULT; HAND_STENCIL_LEG_INT(XP_PROJ,3,Xp,XP_RECON_ACCUM); HAND_STENCIL_LEG_INT(YP_PROJ,2,Yp,YP_RECON_ACCUM); @@ -699,8 +695,8 @@ template accelerator_inline void WilsonKernels::HandDhopSiteExt(StencilView &st,DoubledGaugeFieldView &U,SiteHalfSpinor *buf, int ss,int sU,const FermionFieldView &in, FermionFieldView &out) { - auto st_p = st._entries_p; - auto st_perm = st._permute_type; + // auto st_p = st._entries_p; + // auto st_perm = st._permute_type; // T==0, Z==1, Y==2, Z==3 expect 1,2,2,2 simd layout etc... typedef typename Simd::scalar_type S; typedef typename Simd::vector_type V; @@ -711,7 +707,7 @@ WilsonKernels::HandDhopSiteExt(StencilView &st,DoubledGaugeFieldView &U,Si HAND_DECLARATIONS(Simt); - int offset, ptype; + // int offset, ptype; StencilEntry *SE; int nmu=0; ZERO_RESULT; @@ -730,8 +726,8 @@ template accelerator_inline void WilsonKernels::HandDhopSiteDagExt(StencilView &st,DoubledGaugeFieldView &U,SiteHalfSpinor *buf, int ss,int sU,const FermionFieldView &in, FermionFieldView &out) { - auto st_p = st._entries_p; - auto st_perm = st._permute_type; + // auto st_p = st._entries_p; + // auto st_perm = st._permute_type; typedef typename Simd::scalar_type S; typedef typename Simd::vector_type V; typedef decltype( coalescedRead( in[0]()(0)(0) )) Simt; @@ -742,7 +738,7 @@ void WilsonKernels::HandDhopSiteDagExt(StencilView &st,DoubledGaugeFieldVi HAND_DECLARATIONS(Simt); StencilEntry *SE; - int offset, ptype; + // int offset, ptype; int nmu=0; ZERO_RESULT; HAND_STENCIL_LEG_EXT(XP_PROJ,3,Xp,XP_RECON_ACCUM); diff --git a/Grid/stencil/Stencil.h b/Grid/stencil/Stencil.h index fb01abbb..c2bc8dab 100644 --- a/Grid/stencil/Stencil.h +++ b/Grid/stencil/Stencil.h @@ -322,8 +322,8 @@ public: int simd_layout = _grid->_simd_layout[dimension]; int comm_dim = _grid->_processors[dimension] >1 ; - int recv_from_rank; - int xmit_to_rank; + // int recv_from_rank; + // int xmit_to_rank; if ( ! comm_dim ) return 1; if ( displacement == 0 ) return 1; diff --git a/benchmarks/Benchmark_IO.cc b/benchmarks/Benchmark_IO.cc index 87e7224d..01325c53 100644 --- a/benchmarks/Benchmark_IO.cc +++ b/benchmarks/Benchmark_IO.cc @@ -137,7 +137,7 @@ int main (int argc, char ** argv) Eigen::MatrixXd mean(nVol, 4), stdDev(nVol, 4), rob(nVol, 4); Eigen::VectorXd avMean(4), avStdDev(4), avRob(4); - double n = BENCH_IO_NPASS; + // double n = BENCH_IO_NPASS; stats(mean, stdDev, perf); stats(avMean, avStdDev, avPerf); @@ -164,7 +164,7 @@ int main (int argc, char ** argv) mean(volInd(l), gWrite), stdDev(volInd(l), gWrite)); } MSG << std::endl; - MSG << "Robustness of individual results, in \%. (rob = 100\% - std dev / mean)" << std::endl; + MSG << "Robustness of individual results, in %. (rob = 100% - std dev / mean)" << std::endl; MSG << std::endl; grid_printf("%4s %12s %12s %12s %12s\n", "L", "std read", "std write", "Grid read", "Grid write"); @@ -185,7 +185,7 @@ int main (int argc, char ** argv) avMean(sRead), avStdDev(sRead), avMean(sWrite), avStdDev(sWrite), avMean(gRead), avStdDev(gRead), avMean(gWrite), avStdDev(gWrite)); MSG << std::endl; - MSG << "Robustness of volume-averaged results, in \%. (rob = 100\% - std dev / mean)" << std::endl; + MSG << "Robustness of volume-averaged results, in %. (rob = 100% - std dev / mean)" << std::endl; MSG << std::endl; grid_printf("%12s %12s %12s %12s\n", "std read", "std write", "Grid read", "Grid write"); diff --git a/benchmarks/Benchmark_ITT.cc b/benchmarks/Benchmark_ITT.cc index 81d1acd4..2f7acb56 100644 --- a/benchmarks/Benchmark_ITT.cc +++ b/benchmarks/Benchmark_ITT.cc @@ -142,7 +142,7 @@ public: // bzero((void *)rbuf[d],lat*lat*lat*Ls*sizeof(HalfSpinColourVectorD)); } - int ncomm; + // int ncomm; double dbytes; for(int dir=0;dir<8;dir++) { @@ -290,7 +290,7 @@ public: LatticeSU4 z(&Grid); z=Zero(); LatticeSU4 x(&Grid); x=Zero(); LatticeSU4 y(&Grid); y=Zero(); - double a=2.0; + // double a=2.0; uint64_t Nloop=NLOOP; diff --git a/benchmarks/Benchmark_comms_host_device.cc b/benchmarks/Benchmark_comms_host_device.cc index 49a2181c..53173d9f 100644 --- a/benchmarks/Benchmark_comms_host_device.cc +++ b/benchmarks/Benchmark_comms_host_device.cc @@ -72,7 +72,7 @@ int main (int argc, char ** argv) std::cout << GridLogMessage << "Number of iterations to average: "<< Nloop << std::endl; std::vector t_time(Nloop); - time_statistics timestat; + // time_statistics timestat; std::cout< class CovariantLaplacianCshift : public SparseMatrixBase { @@ -55,6 +56,16 @@ void MakePhase(Coordinate mom,LatticeComplex &phase) } phase = exp(phase*ci); } +void LinkSmear(int nstep, RealD rho,LatticeGaugeField &Uin,LatticeGaugeField &Usmr) +{ + Smear_Stout Stout(rho); + LatticeGaugeField Utmp(Uin.Grid()); + Utmp = Uin; + for(int i=0;i::avgPlaquette(U); + Real plaq=WilsonLoops::avgPlaquette(U); std::cout << " Initial plaquette "<::SteepestDescentGaugeFix(Ufix,xform,alpha,10000,1.0e-12, 1.0e-12,true,orthog); + FourierAcceleratedGaugeFixer::SteepestDescentGaugeFix(Ufix,xform,alpha,100000,1.0e-14, 1.0e-14,true,orthog); - plaq=WilsonLoops::avgPlaquette(Ufix); + plaq=WilsonLoops::avgPlaquette(Ufix); std::cout << " Final plaquette "< void GaussianSmear(LatticeGaugeField &U,Field &unsmeared,Field &smeared) { - typedef CovariantLaplacianCshift Laplacian_t; + typedef CovariantLaplacianCshift Laplacian_t; Laplacian_t Laplacian(U); Integer Iterations = 40; @@ -167,19 +178,21 @@ void Solve(Action &D,LatticePropagator &source,LatticePropagator &propagator) GridBase *UGrid = D.GaugeGrid(); GridBase *FGrid = D.FermionGrid(); - LatticeFermion src4 (UGrid); + LatticeFermion src4 (UGrid); src4 = Zero(); LatticeFermion src5 (FGrid); LatticeFermion result5(FGrid); LatticeFermion result4(UGrid); - ConjugateGradient CG(1.0e-8,100000); - SchurRedBlackDiagMooeeSolve schur(CG); + ConjugateGradient CG(1.0e-12,100000); + SchurRedBlackDiagTwoSolve schur(CG); ZeroGuesser ZG; // Could be a DeflatedGuesser if have eigenvectors + std::cout<(src4,source,s,c); - + std::cout< seeds4({1,2,3,4}); - GridParallelRNG RNG4(UGrid); RNG4.SeedFixedIntegers(seeds4); LatticeGaugeField Umu(UGrid); - LatticeGaugeField Ufixed(UGrid); + LatticeGaugeField Utmp(UGrid); + LatticeGaugeField Usmr(UGrid); std::string config; if( argc > 1 && argv[1][0] != '-' ) { @@ -308,13 +316,20 @@ int main (int argc, char ** argv) { std::cout<::ColdConfiguration(Umu); - // SU::HotConfiguration(RNG4,Umu); - config="HotConfig"; + config="ColdConfig"; } - GaugeFix(Umu,Ufixed); - Umu=Ufixed; - + // GaugeFix(Umu,Utmp); + // Umu=Utmp; + int nsmr=3; + RealD rho=0.1; + RealD plaq_gf =WilsonLoops::avgPlaquette(Umu); + LinkSmear(nsmr,rho,Umu,Usmr); + RealD plaq_smr=WilsonLoops::avgPlaquette(Usmr); + std::cout << GridLogMessage << " GF Plaquette " < smeared_link({ 0,0,1} ); std::vector masses({ 0.004,0.02477,0.447} ); // u/d, s, c ?? std::vector M5s ({ 1.8,1.8,1.0} ); std::vector bs ({ 1.0,1.0,1.5} ); // DDM @@ -330,6 +345,9 @@ int main (int argc, char ** argv) std::cout< boundary = {1,1,1,-1}; + typedef MobiusFermionR FermionAction; + FermionAction::ImplParams Params(boundary); for(int m=0;m PointProps(nmass,UGrid); - std::vector GaussProps(nmass,UGrid); + int tslice = 0; + ////////////////////////////////////////////////////////////////////// + // RNG seeded for Z2 wall + ////////////////////////////////////////////////////////////////////// + // You can manage seeds however you like. + // Recommend SeedUniqueString. + ////////////////////////////////////////////////////////////////////// + GridParallelRNG RNG4(UGrid); RNG4.SeedUniqueString("Study2-Source_Z2_p_0_0_0_t_0-880"); + Z2WallSource (RNG4,tslice,z2wall_source); + GFWallSource (tslice,gfwall_source); + std::vector Z2Props (nmass,UGrid); std::vector GFProps (nmass,UGrid); for(int m=0;m