From 68c13045d6ce9982f9bc760c085e29f2c3eb8f2e Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Wed, 7 Nov 2018 23:40:15 +0000 Subject: [PATCH] Added a test for Felix and Michael to look at --- tests/debug/Test_split_laplacian.cc | 104 ++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 tests/debug/Test_split_laplacian.cc diff --git a/tests/debug/Test_split_laplacian.cc b/tests/debug/Test_split_laplacian.cc new file mode 100644 index 00000000..174dc1b1 --- /dev/null +++ b/tests/debug/Test_split_laplacian.cc @@ -0,0 +1,104 @@ + /************************************************************************************* + + Grid physics library, www.github.com/paboyle/Grid + + Source file: ./tests/Test_dwf_mrhs_cg.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; + + +int main (int argc, char ** argv) +{ + typedef LatticeComplex ComplexField; + + Grid_init(&argc,&argv); + + std::vector latt_size = GridDefaultLatt(); + int nd = latt_size.size(); + int ndm1 = nd-1; + + std::vector simd_layout = GridDefaultSimd(nd,vComplex::Nsimd()); + std::vector mpi_layout = GridDefaultMpi(); + std::vector mpi_split (mpi_layout.size(),1); + + std::cout << " Full " << GridCmdVectorIntToString(latt_size) << " subgrid" < latt_m = latt_size; latt_m[nd-1] = 1; + std::vector mpi_m = mpi_layout; mpi_m [nd-1] = 1; + std::vector simd_m = GridDefaultSimd(ndm1,vComplex::Nsimd()); simd_m.push_back(1); + + + std::cout << " Requesting " << GridCmdVectorIntToString(latt_m)<< " subgrid" <GlobalSum(tmp); + std::cout << GridLogMessage<< " Full nodes "<< tmp <GlobalSum(tmp); + std::cout << GridLogMessage<< " Split nodes "<< tmp <Barrier(); + + auto local_latt = GridN->LocalDimensions(); + + Full_cpy = zero; + std::vector seeds({1,2,3,4}); + GridParallelRNG RNG(GridN); RNG.SeedFixedIntegers(seeds); + + random(RNG,Full); + for(int t=0;t