CHROMA
syssolver_quda_multigrid_wilson_params.cc
Go to the documentation of this file.
2 #include "chromabase.h"
3 #include "io/xml_group_reader.h"
4 #include "chroma_config.h"
5 
6 
7 
8 using namespace QDP;
9 
10 namespace Chroma {
11 
12  SysSolverQUDAMULTIGRIDWilsonParams::SysSolverQUDAMULTIGRIDWilsonParams(XMLReader& xml,
13  const std::string& path)
14  {
15  XMLReader paramtop(xml, path);
16 
17  read(paramtop, "MaxIter", MaxIter);
18  read(paramtop, "RsdTarget", RsdTarget);
19  read(paramtop, "WilsonParams", WilsonParams);
20  read(paramtop, "AntiPeriodicT", AntiPeriodicT);
21 
22  read(paramtop, "Delta", Delta);
23 
24 
25  read(paramtop, "SolverType", solverType);
26 
27  if ( paramtop.count("Verbose") > 0 ) {
28  read(paramtop, "Verbose", verboseP);
29  }
30  else {
31  verboseP = false;
32  }
33  if ( paramtop.count("AsymmetricLinop") > 0 ) {
34  read(paramtop, "AsymmetricLinop", asymmetricP);
35  }
36  else {
37  asymmetricP = false; // Symmetric is default
38  }
39 
40  if( paramtop.count("CudaPrecision") > 0 ) {
41  read(paramtop, "CudaPrecision", cudaPrecision);
42  }
43  else {
44  cudaPrecision = DEFAULT;
45  }
46 
47  if( paramtop.count("CudaSloppyPrecision") > 0 ) {
48  read(paramtop, "CudaSloppyPrecision", cudaSloppyPrecision);
49  }
50  else {
51  cudaSloppyPrecision = DEFAULT;
52  }
53 
54  if( paramtop.count("CudaReconstruct") > 0 ) {
55  read(paramtop, "CudaReconstruct", cudaReconstruct);
56  }
57  else {
58  cudaReconstruct = RECONS_12;
59  }
60 
61  if( paramtop.count("CudaSloppyReconstruct") > 0 ) {
62  read(paramtop, "CudaSloppyReconstruct", cudaSloppyReconstruct);
63  }
64  else {
65  cudaSloppyReconstruct = RECONS_12;
66  }
67 
68  if( paramtop.count("AxialGaugeFix") > 0 ) {
69  read(paramtop, "AxialGaugeFix", axialGaugeP);
70  }
71  else {
72  axialGaugeP = false;
73  }
74 
75  if( paramtop.count("SilentFail") > 0) {
76  read(paramtop, "SilentFail", SilentFailP);
77  }
78  else {
79  SilentFailP = false;
80  }
81 
82  if( paramtop.count("RsdToleranceFactor") > 0 ) {
83  read(paramtop, "RsdToleranceFactor", RsdToleranceFactor);
84  }
85  else {
86  RsdToleranceFactor = Real(10); // Tolerate an order of magnitude difference by default.
87  }
88 
89  if( paramtop.count("AutotuneDslash") > 0 ) {
90  read(paramtop, "AutotuneDslash", tuneDslashP);
91  }
92  else {
93  tuneDslashP = false;
94  }
95  QDPIO::cout << "tuneDslasP = " << tuneDslashP << std::endl;
96 
97  if( paramtop.count("Pipeline") > 0 ) {
98  read(paramtop, "Pipeline", Pipeline);
99  }
100  else {
101  Pipeline=1;
102  }
103 
104  if( paramtop.count("MULTIGRIDParams") > 0 ) {
105  MULTIGRIDParams = new MULTIGRIDSolverParams(paramtop, "./MULTIGRIDParams");
106  MULTIGRIDParamsP = true;
107  }
108  else {
109  MULTIGRIDParamsP = false;
110  }
111 
112  }
113 
114  void read(XMLReader& xml, const std::string& path,
116  {
118  p = tmp;
119  }
120 
121  void write(XMLWriter& xml, const std::string& path,
123  push(xml, path);
124  write(xml, "MaxIter", p.MaxIter);
125  write(xml, "RsdTarget", p.RsdTarget);
126  write(xml, "WilsonParams", p.WilsonParams);
127  write(xml, "AntiPeriodicT", p.AntiPeriodicT);
128  write(xml, "Delta", p.Delta);
129  write(xml, "SolverType", p.solverType);
130  write(xml, "Verbose", p.verboseP);
131  write(xml, "AsymmetricLinop", p.asymmetricP);
132  write(xml, "CudaPrecision", p.cudaPrecision);
133  write(xml, "CudaReconstruct", p.cudaReconstruct);
134  write(xml, "CudaSloppyPrecision", p.cudaSloppyPrecision);
135  write(xml, "CudaSloppyReconstruct", p.cudaSloppyReconstruct);
136  write(xml, "AxialGaugeFix", p.axialGaugeP);
137  write(xml, "SilentFail", p.SilentFailP);
138  write(xml, "RsdToleranceFactor", p.RsdToleranceFactor);
139  write(xml, "AutotuneDslash", p.tuneDslashP);
140  write(xml, "Pipeline", p.Pipeline);
141 
142  if( p.MULTIGRIDParamsP ) {
143  write(xml, "MULTIGRIDParams", *(p.MULTIGRIDParams));
144  }
145 
146  pop(xml);
147 
148  }
149 
150 
151 
152 }
Primary include file for CHROMA library code.
Double tmp
Definition: meslate.cc:60
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
void write(XMLWriter &xml, const std::string &path, const SysSolverQUDAMULTIGRIDWilsonParams &p)
void read(XMLReader &xml, const std::string &path, SysSolverQUDAMULTIGRIDWilsonParams &p)
@ RECONS_12
Definition: enum_quda_io.h:80
::std::string string
Definition: gtest.h:1979
push(xml_out,"Cooled_Topology")
pop(xml_out)
Read an XML group as a std::string.