From 91cc33e90710ade34ed8d794c8d7a0bdcbb844ab Mon Sep 17 00:00:00 2001 From: Yong-Chull Jang Date: Sun, 5 Nov 2017 23:46:03 -0500 Subject: [PATCH] IRBL development test bed is added; bootstrap.sh is updated to avoid repeated download of the EIGEN package after the first build. --- .gitignore | 6 ++ bootstrap.sh | 15 ++-- tests/lanczos/Test_dwf_block_lanczos.cc | 107 ++++++++++++++++++++++++ tests/lanczos/Test_wilson_lanczos.cc | 2 +- 4 files changed, 124 insertions(+), 6 deletions(-) create mode 100644 tests/lanczos/Test_dwf_block_lanczos.cc diff --git a/.gitignore b/.gitignore index d743ee06..44e063b9 100644 --- a/.gitignore +++ b/.gitignore @@ -88,11 +88,17 @@ Thumbs.db ################### build*/* +# bootstrap # +############# +*.tar.bz2* + # IDE related files # ##################### *.xcodeproj/* build.sh .vscode +.ctags +tags # Eigen source # ################ diff --git a/bootstrap.sh b/bootstrap.sh index ac27ef25..1510e3a1 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,11 +1,16 @@ #!/usr/bin/env bash -EIGEN_URL='http://bitbucket.org/eigen/eigen/get/3.3.3.tar.bz2' +EIGEN_SRC='3.3.3.tar.bz2' +EIGEN_URL="http://bitbucket.org/eigen/eigen/get/${EIGEN_SRC}" -echo "-- deploying Eigen source..." -wget ${EIGEN_URL} --no-check-certificate -./scripts/update_eigen.sh `basename ${EIGEN_URL}` -#rm `basename ${EIGEN_URL}` +if [ -f ${EIGEN_SRC} ]; then + echo "-- skip deploying Eigen source..." +else + echo "-- deploying Eigen source..." + wget ${EIGEN_URL} --no-check-certificate + ./scripts/update_eigen.sh `basename ${EIGEN_URL}` + #rm `basename ${EIGEN_URL}` +fi echo '-- generating Make.inc files...' ./scripts/filelist diff --git a/tests/lanczos/Test_dwf_block_lanczos.cc b/tests/lanczos/Test_dwf_block_lanczos.cc new file mode 100644 index 00000000..da721efa --- /dev/null +++ b/tests/lanczos/Test_dwf_block_lanczos.cc @@ -0,0 +1,107 @@ + /************************************************************************************* + + Grid physics library, www.github.com/paboyle/Grid + + Source file: ./tests/Test_dwf_lanczos.cc + + Copyright (C) 2015 + +Author: Peter Boyle + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + See the full license in the file "LICENSE" in the top level distribution directory + *************************************************************************************/ + /* END LEGAL */ +#include + +using namespace std; +using namespace Grid; +using namespace Grid::QCD; + +typedef typename GparityDomainWallFermionR::FermionField FermionField; + +RealD AllZero(RealD x){ return 0.;} + +int main (int argc, char ** argv) +{ + Grid_init(&argc,&argv); + + const int Ls=8; + + GridCartesian * UGrid = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(), GridDefaultSimd(Nd,vComplex::Nsimd()),GridDefaultMpi()); + GridRedBlackCartesian * UrbGrid = SpaceTimeGrid::makeFourDimRedBlackGrid(UGrid); + GridCartesian * FGrid = SpaceTimeGrid::makeFiveDimGrid(Ls,UGrid); + GridRedBlackCartesian * FrbGrid = SpaceTimeGrid::makeFiveDimRedBlackGrid(Ls,UGrid); + printf("UGrid=%p UrbGrid=%p FGrid=%p FrbGrid=%p\n",UGrid,UrbGrid,FGrid,FrbGrid); + + std::vector seeds4({1,2,3,4}); + std::vector seeds5({5,6,7,8}); + GridParallelRNG RNG5(FGrid); RNG5.SeedFixedIntegers(seeds5); + GridParallelRNG RNG4(UGrid); RNG4.SeedFixedIntegers(seeds4); + GridParallelRNG RNG5rb(FrbGrid); RNG5.SeedFixedIntegers(seeds5); + + LatticeGaugeField Umu(UGrid); + SU3::HotConfiguration(RNG4, Umu); + + std::vector U(4,UGrid); + for(int mu=0;mu(Umu,mu); + } + + RealD mass=0.01; + RealD M5=1.8; + RealD mob_b=1.5; +// DomainWallFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5); + GparityMobiusFermionD ::ImplParams params; + std::vector twists({1,1,1,0}); + params.twists = twists; + GparityMobiusFermionR Ddwf(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5,mob_b,mob_b-1.,params); + +// MdagMLinearOperator HermOp(Ddwf); +// SchurDiagTwoOperator HermOp(Ddwf); + SchurDiagTwoOperator HermOp(Ddwf); +// SchurDiagMooeeOperator HermOp(Ddwf); + + const int Nstop = 30; + const int Nk = 40; + const int Np = 40; + const int Nm = Nk+Np; + const int MaxIt= 10000; + RealD resid = 1.0e-8; + + std::vector Coeffs { 0.,-1.}; + Polynomial PolyX(Coeffs); + Chebyshev Cheb(0.2,5.,11); +// ChebyshevLanczos Cheb(9.,1.,0.,20); +// Cheb.csv(std::cout); +// exit(-24); + ImplicitlyRestartedLanczos IRL(HermOp,Cheb,Nstop,Nk,Nm,resid,MaxIt); + + + std::vector eval(Nm); + FermionField src(FrbGrid); + gaussian(RNG5rb,src); + std::vector evec(Nm,FrbGrid); + for(int i=0;i<1;i++){ + std::cout << GridLogMessage <