mirror of
https://github.com/paboyle/Grid.git
synced 2025-06-12 20:27:06 +01:00
Merge branch 'develop' into sycl
This commit is contained in:
84
tests/IO/Test_openqcd_io.cc
Normal file
84
tests/IO/Test_openqcd_io.cc
Normal file
@ -0,0 +1,84 @@
|
||||
/*************************************************************************************
|
||||
|
||||
Grid physics library, www.github.com/paboyle/Grid
|
||||
|
||||
Source file: ./tests/io/Test_openqcd_io.cc
|
||||
|
||||
Copyright (C) 2015 - 2020
|
||||
|
||||
Author: Daniel Richtmann <daniel.richtmann@ur.de>
|
||||
|
||||
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 <Grid/Grid.h>
|
||||
|
||||
|
||||
|
||||
using namespace Grid;
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
#if !defined(GRID_COMMS_NONE)
|
||||
Grid_init(&argc, &argv);
|
||||
|
||||
auto simd_layout = GridDefaultSimd(Nd, vComplex::Nsimd());
|
||||
auto mpi_layout = GridDefaultMpi();
|
||||
auto latt_size = GridDefaultLatt();
|
||||
|
||||
GridCartesian grid(latt_size, simd_layout, mpi_layout);
|
||||
|
||||
GridParallelRNG pRNG(&grid);
|
||||
|
||||
pRNG.SeedFixedIntegers(std::vector<int>({45, 12, 81, 9}));
|
||||
|
||||
LatticeGaugeField Umu_ref(&grid);
|
||||
LatticeGaugeField Umu_me(&grid);
|
||||
LatticeGaugeField Umu_diff(&grid);
|
||||
|
||||
FieldMetaData header_ref;
|
||||
FieldMetaData header_me;
|
||||
|
||||
Umu_ref = Zero();
|
||||
Umu_me = Zero();
|
||||
|
||||
std::string file("/home/daniel/configs/openqcd/test_16x8_pbcn6");
|
||||
|
||||
if(GridCmdOptionExists(argv, argv + argc, "--config")) {
|
||||
file = GridCmdOptionPayload(argv, argv + argc, "--config");
|
||||
std::cout << "file: " << file << std::endl;
|
||||
assert(!file.empty());
|
||||
}
|
||||
|
||||
OpenQcdIOChromaReference::readConfiguration(Umu_ref, header_ref, file);
|
||||
OpenQcdIO::readConfiguration(Umu_me, header_me, file);
|
||||
|
||||
std::cout << GridLogMessage << header_ref << std::endl;
|
||||
std::cout << GridLogMessage << header_me << std::endl;
|
||||
|
||||
Umu_diff = Umu_ref - Umu_me;
|
||||
|
||||
// clang-format off
|
||||
std::cout << GridLogMessage
|
||||
<< "norm2(Umu_ref) = " << norm2(Umu_ref)
|
||||
<< " norm2(Umu_me) = " << norm2(Umu_me)
|
||||
<< " norm2(Umu_diff) = " << norm2(Umu_diff) << std::endl;
|
||||
// clang-format on
|
||||
|
||||
Grid_finalize();
|
||||
#endif
|
||||
}
|
126
tests/Test_innerproduct_norm.cc
Normal file
126
tests/Test_innerproduct_norm.cc
Normal file
@ -0,0 +1,126 @@
|
||||
/*************************************************************************************
|
||||
|
||||
Grid physics library, www.github.com/paboyle/Grid
|
||||
|
||||
Source file: ./tests/Test_innerproduct_norm.cc
|
||||
|
||||
Copyright (C) 2015
|
||||
|
||||
Author: Daniel Richtmann <daniel.richtmann@ur.de>
|
||||
|
||||
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 <Grid/Grid.h>
|
||||
|
||||
using namespace Grid;
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
Grid_init(&argc, &argv);
|
||||
|
||||
const int nIter = 100;
|
||||
|
||||
// clang-format off
|
||||
GridCartesian *Grid_d = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(), GridDefaultSimd(Nd, vComplexD::Nsimd()), GridDefaultMpi());
|
||||
GridCartesian *Grid_f = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(), GridDefaultSimd(Nd, vComplexF::Nsimd()), GridDefaultMpi());
|
||||
// clang-format on
|
||||
|
||||
GridParallelRNG pRNG_d(Grid_d);
|
||||
GridParallelRNG pRNG_f(Grid_f);
|
||||
|
||||
std::vector<int> seeds_d({1, 2, 3, 4});
|
||||
std::vector<int> seeds_f({5, 6, 7, 8});
|
||||
|
||||
pRNG_d.SeedFixedIntegers(seeds_d);
|
||||
pRNG_f.SeedFixedIntegers(seeds_f);
|
||||
|
||||
// clang-format off
|
||||
LatticeFermionD x_d(Grid_d); random(pRNG_d, x_d);
|
||||
LatticeFermionD y_d(Grid_d); random(pRNG_d, y_d);
|
||||
LatticeFermionF x_f(Grid_f); random(pRNG_f, x_f);
|
||||
LatticeFermionF y_f(Grid_f); random(pRNG_f, y_f);
|
||||
// clang-format on
|
||||
|
||||
GridStopWatch sw_ref;
|
||||
GridStopWatch sw_res;
|
||||
|
||||
{ // double precision
|
||||
ComplexD ip_d_ref, ip_d_res, diff_ip_d;
|
||||
RealD norm2_d_ref, norm2_d_res, diff_norm2_d;
|
||||
|
||||
sw_ref.Reset();
|
||||
sw_ref.Start();
|
||||
for(int i = 0; i < nIter; ++i) {
|
||||
ip_d_ref = innerProduct(x_d, y_d);
|
||||
norm2_d_ref = norm2(x_d);
|
||||
}
|
||||
sw_ref.Stop();
|
||||
|
||||
sw_res.Reset();
|
||||
sw_res.Start();
|
||||
for(int i = 0; i < nIter; ++i) { innerProductNorm(ip_d_res, norm2_d_res, x_d, y_d); }
|
||||
sw_res.Stop();
|
||||
|
||||
diff_ip_d = ip_d_ref - ip_d_res;
|
||||
diff_norm2_d = norm2_d_ref - norm2_d_res;
|
||||
|
||||
// clang-format off
|
||||
std::cout << GridLogMessage << "Double: ip_ref = " << ip_d_ref << " ip_res = " << ip_d_res << " diff = " << diff_ip_d << std::endl;
|
||||
std::cout << GridLogMessage << "Double: norm2_ref = " << norm2_d_ref << " norm2_res = " << norm2_d_res << " diff = " << diff_norm2_d << std::endl;
|
||||
std::cout << GridLogMessage << "Double: time_ref = " << sw_ref.Elapsed() << " time_res = " << sw_res.Elapsed() << std::endl;
|
||||
// clang-format on
|
||||
|
||||
assert(diff_ip_d == 0.);
|
||||
assert(diff_norm2_d == 0.);
|
||||
|
||||
std::cout << GridLogMessage << "Double: all checks passed" << std::endl;
|
||||
}
|
||||
|
||||
{ // single precision
|
||||
ComplexD ip_f_ref, ip_f_res, diff_ip_f;
|
||||
RealD norm2_f_ref, norm2_f_res, diff_norm2_f;
|
||||
|
||||
sw_ref.Reset();
|
||||
sw_ref.Start();
|
||||
for(int i = 0; i < nIter; ++i) {
|
||||
ip_f_ref = innerProduct(x_f, y_f);
|
||||
norm2_f_ref = norm2(x_f);
|
||||
}
|
||||
sw_ref.Stop();
|
||||
|
||||
sw_res.Reset();
|
||||
sw_res.Start();
|
||||
for(int i = 0; i < nIter; ++i) { innerProductNorm(ip_f_res, norm2_f_res, x_f, y_f); }
|
||||
sw_res.Stop();
|
||||
|
||||
diff_ip_f = ip_f_ref - ip_f_res;
|
||||
diff_norm2_f = norm2_f_ref - norm2_f_res;
|
||||
|
||||
// clang-format off
|
||||
std::cout << GridLogMessage << "Single: ip_ref = " << ip_f_ref << " ip_res = " << ip_f_res << " diff = " << diff_ip_f << std::endl;
|
||||
std::cout << GridLogMessage << "Single: norm2_ref = " << norm2_f_ref << " norm2_res = " << norm2_f_res << " diff = " << diff_norm2_f << std::endl;
|
||||
std::cout << GridLogMessage << "Single: time_ref = " << sw_ref.Elapsed() << " time_res = " << sw_res.Elapsed() << std::endl;
|
||||
// clang-format on
|
||||
|
||||
assert(diff_ip_f == 0.);
|
||||
assert(diff_norm2_f == 0.);
|
||||
|
||||
std::cout << GridLogMessage << "Single: all checks passed" << std::endl;
|
||||
}
|
||||
|
||||
Grid_finalize();
|
||||
}
|
@ -238,11 +238,11 @@ void TestWhat(What & Ddwf,
|
||||
RealD t1,t2;
|
||||
|
||||
SchurDiagMooeeOperator<What,LatticeFermion> HermOpEO(Ddwf);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e,dchi_e);
|
||||
pDco = innerProduct(phi_o,dchi_o);
|
||||
|
@ -218,11 +218,11 @@ int main (int argc, char ** argv)
|
||||
RealD t1,t2;
|
||||
|
||||
SchurDiagMooeeOperator<DomainWallEOFAFermionR,LatticeFermion> HermOpEO(Ddwf);
|
||||
HermOpEO.MpcDagMpc(chi_e, dchi_e, t1, t2);
|
||||
HermOpEO.MpcDagMpc(chi_o, dchi_o, t1, t2);
|
||||
HermOpEO.MpcDagMpc(chi_e, dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o, dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e, dphi_e, t1, t2);
|
||||
HermOpEO.MpcDagMpc(phi_o, dphi_o, t1, t2);
|
||||
HermOpEO.MpcDagMpc(phi_e, dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o, dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e, dchi_e);
|
||||
pDco = innerProduct(phi_o, dchi_o);
|
||||
|
@ -216,11 +216,11 @@ int main (int argc, char ** argv)
|
||||
|
||||
|
||||
SchurDiagMooeeOperator<DomainWallFermionR,LatticeFermion> HermOpEO(Ddwf);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e,dchi_e);
|
||||
pDco = innerProduct(phi_o,dchi_o);
|
||||
|
@ -201,11 +201,11 @@ int main (int argc, char ** argv)
|
||||
RealD t1,t2;
|
||||
|
||||
SchurDiagMooeeOperator<GparityWilsonFermionR,FermionField> HermOpEO(Dw);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e,dchi_e);
|
||||
pDco = innerProduct(phi_o,dchi_o);
|
||||
|
@ -220,11 +220,11 @@ int main (int argc, char ** argv)
|
||||
RealD t1,t2;
|
||||
|
||||
SchurDiagMooeeOperator<MobiusEOFAFermionR,LatticeFermion> HermOpEO(Ddwf);
|
||||
HermOpEO.MpcDagMpc(chi_e, dchi_e, t1, t2);
|
||||
HermOpEO.MpcDagMpc(chi_o, dchi_o, t1, t2);
|
||||
HermOpEO.MpcDagMpc(chi_e, dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o, dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e, dphi_e, t1, t2);
|
||||
HermOpEO.MpcDagMpc(phi_o, dphi_o, t1, t2);
|
||||
HermOpEO.MpcDagMpc(phi_e, dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o, dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e, dchi_e);
|
||||
pDco = innerProduct(phi_o, dchi_o);
|
||||
|
@ -266,11 +266,11 @@ int main (int argc, char ** argv)
|
||||
|
||||
|
||||
SchurDiagMooeeOperator<MobiusFermionR,LatticeFermion> HermOpEO(Ddwf);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e,dchi_e);
|
||||
pDco = innerProduct(phi_o,dchi_o);
|
||||
|
@ -270,11 +270,11 @@ int main (int argc, char ** argv)
|
||||
pickCheckerboard(Odd ,phi_o,phi);
|
||||
|
||||
SchurDiagMooeeOperator<ImprovedStaggeredFermionR,FermionField> HermOpEO(Ds);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e,dchi_e);
|
||||
pDco = innerProduct(phi_o,dchi_o);
|
||||
|
@ -290,11 +290,11 @@ int main (int argc, char ** argv)
|
||||
pickCheckerboard(Odd ,phi_o,phi);
|
||||
|
||||
SchurDiagMooeeOperator<ImprovedStaggeredFermion5DR,FermionField> HermOpEO(Ds);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e,dchi_e);
|
||||
pDco = innerProduct(phi_o,dchi_o);
|
||||
|
@ -207,11 +207,11 @@ int main (int argc, char ** argv)
|
||||
RealD t1,t2;
|
||||
|
||||
SchurDiagMooeeOperator<WilsonFermionR,LatticeFermion> HermOpEO(Dw);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e,dchi_e);
|
||||
pDco = innerProduct(phi_o,dchi_o);
|
||||
|
@ -208,11 +208,11 @@ int main (int argc, char ** argv)
|
||||
RealD t1,t2;
|
||||
|
||||
SchurDiagMooeeOperator<WilsonTMFermionR,LatticeFermion> HermOpEO(Dw);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e,dchi_e);
|
||||
pDco = innerProduct(phi_o,dchi_o);
|
||||
|
@ -280,11 +280,11 @@ int main (int argc, char ** argv)
|
||||
|
||||
|
||||
SchurDiagMooeeOperator<ZMobiusFermionR,LatticeFermion> HermOpEO(Ddwf);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(chi_e,dchi_e);
|
||||
HermOpEO.MpcDagMpc(chi_o,dchi_o);
|
||||
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o,t1,t2);
|
||||
HermOpEO.MpcDagMpc(phi_e,dphi_e);
|
||||
HermOpEO.MpcDagMpc(phi_o,dphi_o);
|
||||
|
||||
pDce = innerProduct(phi_e,dchi_e);
|
||||
pDco = innerProduct(phi_o,dchi_o);
|
||||
|
@ -70,9 +70,6 @@ int main (int argc, char ** argv)
|
||||
|
||||
SU3::HotConfiguration(RNG4,Umu);
|
||||
|
||||
TrivialPrecon<LatticeFermion> simple;
|
||||
|
||||
PrecGeneralisedConjugateResidual<LatticeFermion> PGCR(1.0e-6,10000,simple,4,160);
|
||||
|
||||
ConjugateResidual<LatticeFermion> CR(1.0e-6,10000);
|
||||
|
||||
@ -86,15 +83,19 @@ int main (int argc, char ** argv)
|
||||
std::cout<<GridLogMessage<<"* Solving with MdagM VPGCR "<<std::endl;
|
||||
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
||||
MdagMLinearOperator<DomainWallFermionR,LatticeFermion> HermOp(Ddwf);
|
||||
TrivialPrecon<LatticeFermion> simple;
|
||||
PrecGeneralisedConjugateResidual<LatticeFermion> PGCR(1.0e-6,10000,HermOp,simple,4,160);
|
||||
|
||||
result=Zero();
|
||||
PGCR(HermOp,src,result);
|
||||
PGCR(src,result);
|
||||
|
||||
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
||||
std::cout<<GridLogMessage<<"* Solving with g5-VPGCR "<<std::endl;
|
||||
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
||||
Gamma5R5HermitianLinearOperator<DomainWallFermionR,LatticeFermion> g5HermOp(Ddwf);
|
||||
PrecGeneralisedConjugateResidual<LatticeFermion> PGCR5(1.0e-6,10000,g5HermOp,simple,4,160);
|
||||
result=Zero();
|
||||
PGCR(g5HermOp,src,result);
|
||||
PGCR5(src,result);
|
||||
|
||||
std::cout<<GridLogMessage<<"*********************************************************"<<std::endl;
|
||||
std::cout<<GridLogMessage<<"* Solving with MdagM-CR "<<std::endl;
|
||||
|
@ -128,9 +128,7 @@ int main (int argc, char ** argv)
|
||||
std::cout<<GridLogMessage << "usec = "<< (t2-t1)<<std::endl;
|
||||
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
||||
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
||||
HermOp4d.Report();
|
||||
}
|
||||
Ds4d.Report();
|
||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||
|
||||
|
||||
@ -148,9 +146,7 @@ int main (int argc, char ** argv)
|
||||
std::cout<<GridLogMessage << "usec = "<< (t2-t1)<<std::endl;
|
||||
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
||||
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
||||
HermOp.Report();
|
||||
}
|
||||
Ds.Report();
|
||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||
|
||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||
@ -167,10 +163,8 @@ int main (int argc, char ** argv)
|
||||
std::cout<<GridLogMessage << "usec = "<< (t2-t1)<<std::endl;
|
||||
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
||||
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
||||
HermOp.Report();
|
||||
}
|
||||
|
||||
Ds.Report();
|
||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||
|
||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||
@ -187,9 +181,7 @@ int main (int argc, char ** argv)
|
||||
std::cout<<GridLogMessage << "usec = "<< (t2-t1)<<std::endl;
|
||||
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
||||
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
||||
HermOp.Report();
|
||||
}
|
||||
Ds.Report();
|
||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||
|
||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||
@ -206,9 +198,7 @@ int main (int argc, char ** argv)
|
||||
std::cout<<GridLogMessage << "usec = "<< (t2-t1)<<std::endl;
|
||||
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
||||
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
||||
HermOp.Report();
|
||||
}
|
||||
Ds.Report();
|
||||
std::cout << GridLogMessage << "************************************************************************ "<<std::endl;
|
||||
|
||||
std::cout << GridLogMessage << "****************************************************************** "<<std::endl;
|
||||
@ -232,7 +222,6 @@ int main (int argc, char ** argv)
|
||||
std::cout<<GridLogMessage << "usec = "<< (t2-t1)<<std::endl;
|
||||
std::cout<<GridLogMessage << "flops = "<< flops<<std::endl;
|
||||
std::cout<<GridLogMessage << "mflop/s = "<< flops/(t2-t1)<<std::endl;
|
||||
// HermOp4d.Report();
|
||||
}
|
||||
|
||||
|
||||
|
@ -220,7 +220,7 @@ void run(const TestParams ¶ms){
|
||||
|
||||
GridStopWatch CGTimer;
|
||||
|
||||
typename RunParamsOuter::HermOpType<MobiusFermionD> HermOpEO_outer(D_outer);
|
||||
typename RunParamsOuter::template HermOpType<MobiusFermionD> HermOpEO_outer(D_outer);
|
||||
|
||||
CGTimer.Start();
|
||||
CG_outer(HermOpEO_outer, src_o_outer, result_o_outer);
|
||||
|
Reference in New Issue
Block a user