mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-09 23:45:36 +00:00
Switching Block lanczos precision to explicitly single
Adding sample run script and input file
This commit is contained in:
parent
8fd16686dc
commit
b2493d6d25
@ -34,7 +34,7 @@ using namespace Grid;
|
||||
//using namespace Grid::QCD;
|
||||
|
||||
//typedef typename GparityDomainWallFermionR::FermionField FermionField;
|
||||
typedef typename ZMobiusFermionR::FermionField FermionField;
|
||||
typedef typename ZMobiusFermionF::FermionField FermionField;
|
||||
|
||||
RealD AllZero(RealD x){ return 0.;}
|
||||
|
||||
@ -249,11 +249,11 @@ int main (int argc, char ** argv)
|
||||
CmdJobParams JP;
|
||||
JP.Parse(argv,argc);
|
||||
|
||||
GridCartesian * UGrid = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(), GridDefaultSimd(Nd,vComplex::Nsimd()),GridDefaultMpi());
|
||||
GridCartesian * UGridD = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(), GridDefaultSimd(Nd,vComplex::Nsimd()),GridDefaultMpi());
|
||||
GridCartesian * UGrid = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(), GridDefaultSimd(Nd,vComplexF::Nsimd()),GridDefaultMpi());
|
||||
GridRedBlackCartesian * UrbGrid = SpaceTimeGrid::makeFourDimRedBlackGrid(UGrid);
|
||||
GridCartesian * FGrid = SpaceTimeGrid::makeFiveDimGrid(JP.Ls,UGrid);
|
||||
GridRedBlackCartesian * FrbGrid = SpaceTimeGrid::makeFiveDimRedBlackGrid(JP.Ls,UGrid);
|
||||
// printf("UGrid=%p UrbGrid=%p FGrid=%p FrbGrid=%p\n",UGrid,UrbGrid,FGrid,FrbGrid);
|
||||
|
||||
std::vector<int> seeds4({1,2,3,4});
|
||||
std::vector<int> seeds5({5,6,7,8});
|
||||
@ -262,16 +262,18 @@ int main (int argc, char ** argv)
|
||||
// ypj [note] why seed RNG5 again? bug? In this case, run with a default seed().
|
||||
GridParallelRNG RNG5rb(FrbGrid); RNG5rb.SeedFixedIntegers(seeds5);
|
||||
|
||||
LatticeGaugeField Umu(UGrid);
|
||||
std::vector<LatticeColourMatrix> U(4,UGrid);
|
||||
LatticeGaugeField UmuD(UGridD);
|
||||
LatticeGaugeFieldF Umu(UGrid);
|
||||
std::vector<LatticeColourMatrixF> U(4,UGrid);
|
||||
|
||||
if ( JP.gaugefile.compare("Hot") == 0 ) {
|
||||
SU3::HotConfiguration(RNG4, Umu);
|
||||
SU3::HotConfiguration(RNG4, UmuD);
|
||||
} else {
|
||||
FieldMetaData header;
|
||||
NerscIO::readConfiguration(Umu,header,JP.gaugefile);
|
||||
NerscIO::readConfiguration(UmuD,header,JP.gaugefile);
|
||||
// ypj [fixme] additional checks for the loaded configuration?
|
||||
}
|
||||
precisionChange(Umu,UmuD);
|
||||
|
||||
for(int mu=0;mu<Nd;mu++){
|
||||
U[mu] = PeekIndex<LorentzIndex>(Umu,mu);
|
||||
@ -321,7 +323,7 @@ int main (int argc, char ** argv)
|
||||
// Split into 1^4 mpi communicators
|
||||
/////////////////////////////////////////////
|
||||
GridCartesian * SGrid = new GridCartesian(GridDefaultLatt(),
|
||||
GridDefaultSimd(Nd,vComplex::Nsimd()),
|
||||
GridDefaultSimd(Nd,vComplexF::Nsimd()),
|
||||
mpi_split,
|
||||
*UGrid);
|
||||
|
||||
@ -329,19 +331,19 @@ int main (int argc, char ** argv)
|
||||
GridRedBlackCartesian * SrbGrid = SpaceTimeGrid::makeFourDimRedBlackGrid(SGrid);
|
||||
GridRedBlackCartesian * SFrbGrid = SpaceTimeGrid::makeFiveDimRedBlackGrid(JP.Ls,SGrid);
|
||||
|
||||
LatticeGaugeField s_Umu(SGrid);
|
||||
LatticeGaugeFieldF s_Umu(SGrid);
|
||||
Grid_split (Umu,s_Umu);
|
||||
|
||||
//WilsonFermionR::ImplParams params;
|
||||
ZMobiusFermionR::ImplParams params;
|
||||
ZMobiusFermionF::ImplParams params;
|
||||
params.overlapCommsCompute = true;
|
||||
params.boundary_phases = JP.boundary_phase;
|
||||
ZMobiusFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,JP.omega,1.,0.,params);
|
||||
ZMobiusFermionF Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,JP.omega,1.,0.,params);
|
||||
// SchurDiagTwoOperator<ZMobiusFermionR,FermionField> HermOp(Ddwf);
|
||||
SchurDiagOneOperator<ZMobiusFermionR,FermionField> HermOp(Ddwf);
|
||||
ZMobiusFermionR Dsplit(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5,JP.omega,1.,0.,params);
|
||||
SchurDiagOneOperator<ZMobiusFermionF,FermionField> HermOp(Ddwf);
|
||||
ZMobiusFermionF Dsplit(s_Umu,*SFGrid,*SFrbGrid,*SGrid,*SrbGrid,mass,M5,JP.omega,1.,0.,params);
|
||||
// SchurDiagTwoOperator<ZMobiusFermionR,FermionField> SHermOp(Dsplit);
|
||||
SchurDiagOneOperator<ZMobiusFermionR,FermionField> SHermOp(Dsplit);
|
||||
SchurDiagOneOperator<ZMobiusFermionF,FermionField> SHermOp(Dsplit);
|
||||
|
||||
//std::vector<double> Coeffs { 0.,-1.};
|
||||
// ypj [note] this may not be supported by some compilers
|
||||
|
27
tests/lanczos/dwf.batch
Normal file
27
tests/lanczos/dwf.batch
Normal file
@ -0,0 +1,27 @@
|
||||
# run script on Cori
|
||||
#!/bin/bash
|
||||
#SBATCH -t 30
|
||||
#SBATCH -N 16
|
||||
#SBATCH -C knl
|
||||
#SBATCH -A mp13
|
||||
#SBATCH --ntasks-per-node=1
|
||||
|
||||
export OMP_PROC_BIND=true
|
||||
export OMP_PLACES=threads
|
||||
export OMP_NUM_THREADS=64
|
||||
|
||||
#BIN=benchmarks/Benchmark_ITT
|
||||
#OPT='--cpu-bind=cores'
|
||||
BIN=./Test_dwf_block_lanczos
|
||||
rundir=.
|
||||
CONF='--gconf '${rundir}'/ckpoint_lat.IEEE64BIG.5000'
|
||||
VOL='--grid 16.16.16.32'
|
||||
GRID='--mpi 1.2.2.4'
|
||||
OPT='--mass 0.00054 --M5 1.8 --phase in.params --omega in.params --shm 4096'
|
||||
BL='--rbl 4.32.32.30.7 --split 1.2.2.1 --check_int 8 --resid 1.0e-5 --cheby_l 0.0027 --cheby_u 7 --cheby_n 51'
|
||||
|
||||
#echo srun $OPT $BIN $gridoptions $jobparams
|
||||
#srun $OPT $BIN $gridoptions $jobparams
|
||||
|
||||
echo srun $BIN $CONF $OPT $BL $VOL $GRID
|
||||
srun $BIN $CONF $OPT $BL $VOL $GRID
|
17
tests/lanczos/in.params
Normal file
17
tests/lanczos/in.params
Normal file
@ -0,0 +1,17 @@
|
||||
boundary_phase 0 1 0
|
||||
boundary_phase 1 1 0
|
||||
boundary_phase 2 1 0
|
||||
boundary_phase 3 -1 0
|
||||
|
||||
omega 0 0.375 0
|
||||
omega 1 0.375 0
|
||||
omega 2 0.375 0
|
||||
omega 3 0.375 0
|
||||
omega 4 0.375 0
|
||||
omega 5 0.375 0
|
||||
omega 6 0.375 0
|
||||
omega 7 0.375 0
|
||||
omega 8 0.375 0
|
||||
omega 9 0.375 0
|
||||
omega 10 0.375 0
|
||||
omega 11 0.375 0
|
Loading…
Reference in New Issue
Block a user