11 int main(
int argc,
char **argv)
18 multi1d<int> nrow(
Nd);
33 Layout::setLattSize(nrow);
37 push(xml,
"t_lwldslash_array");
41 multi1d<LatticeColorMatrix>
u(
Nd);
42 for(
int m=0;
m <
u.size(); ++
m)
47 LatticeFermion
psi,
chi, chi2;
52 QDPIO::cout <<
"Constructing naive QDPWilsonDslash" << std::endl;
55 multi1d<LatticeColorMatrix>,
57 multi1d<LatticeColorMatrix>,
58 multi1d<LatticeColorMatrix> >(
u));
63 QDPIO::cout <<
"Done" << std::endl;
66 push(xml,
"Unoptimized_test");
71 for(
cb = 0;
cb < 2; ++
cb) {
74 QDP::StopWatch swatch;
78 for(iter=1; ; iter <<= 1)
80 QDPIO::cout <<
"Applying naive D " << iter <<
" times" << std::endl;
85 for(
int i=iter;
i-- > 0; ) {
90 mydt=swatch.getTimeInSeconds();
91 QDPInternal::globalSum(mydt);
92 mydt /= Layout::numNodes();
101 QDPIO::cout <<
"Applying naive D for timings" << std::endl;
105 for(
int i=iter;
i-- > 0; ) {
110 mydt=swatch.getTimeInSeconds();
111 mydt=1.0e6*mydt/double(iter*(Layout::sitesOnNode()/2));
112 QDPInternal::globalSum(mydt);
113 mydt /= Layout::numNodes();
115 float mflops = float(1320.0f/mydt);
116 QDPIO::cout <<
"cb = " <<
cb <<
" isign = " <<
isign << std::endl;
117 QDPIO::cout <<
"The time per lattice point is "<< mydt
118 <<
" micro sec (" << mflops <<
") Mflops " << std::endl;
120 push(xml,
"Unopt_test");
123 write(xml,
"mflops",mflops);
131 QDPIO::cout <<
"Constructing (possibly optimized) WilsonDslash" << std::endl;
135 QDPIO::cout <<
"Done" << std::endl;
137 push(xml,
"Optimized_test");
141 for(
cb = 0;
cb < 2; ++
cb) {
144 QDP::StopWatch swatch;
148 for(iter=1; ; iter <<= 1)
150 QDPIO::cout <<
"Applying D_opt " << iter <<
" times" << std::endl;
154 for(
int i=iter;
i-- > 0; ) {
159 mydt=swatch.getTimeInSeconds();
161 QDPInternal::globalSum(mydt);
162 mydt /= Layout::numNodes();
171 QDPIO::cout <<
"Applying D_opt for timings" << std::endl;
175 for(
int i=iter;
i-- > 0; ) {
180 mydt=swatch.getTimeInSeconds();
181 mydt=1.0e6*mydt/double(iter*(Layout::sitesOnNode()/2));
182 QDPInternal::globalSum(mydt);
183 mydt /= Layout::numNodes();
185 float mflops = float(1320.0f/mydt);
186 QDPIO::cout <<
"cb = " <<
cb <<
" isign = " <<
isign << std::endl;
187 QDPIO::cout <<
"After " << iter <<
" calls, the time per lattice point is "<< mydt
188 <<
" micro sec (" << mflops <<
") Mflops " << std::endl;
190 push(xml,
"OPT_test");
193 write(xml,
"mflops",mflops);
205 for(
cb = 0;
cb < 2;
cb++) {
213 n2 = norm2( chi2 -
chi );
215 QDPIO::cout <<
"Paranoia test: || D(psi, "
216 << (
isign > 0 ?
"+, " :
"-, ") <<
cb
218 << (
isign > 0 ?
"+, " :
"-, ") <<
cb <<
" ) || = " << n2
225 for(
cb = 0;
cb < 2;
cb++) {
233 n2 = norm2( chi2 -
chi );
235 QDPIO::cout <<
"OPT test: || D(psi, "
236 << (
isign > 0 ?
"+, " :
"-, ") <<
cb
238 << (
isign > 0 ?
"+, " :
"-, ") <<
cb <<
" ) || = " << n2
241 push(xml,
"OPT_correctness_test");
244 write(xml,
"norm2_diff",n2);
Primary include file for CHROMA in application codes.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
Periodic version of FermState.
General Wilson-Dirac dslash.
General Wilson-Dirac dslash.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams ¶m)
Writer parameters.
void proginfo(XMLWriter &xml)
Print out basic information about this program.
void apply(T &chi, const T &psi, enum PlusMinus isign, int cb) const
General Wilson-Dirac dslash.
void apply(T &chi, const T &psi, enum PlusMinus isign, int cb) const
General Wilson-Dirac dslash.
Asqtad Staggered-Dirac operator.
std::string getXMLOutputFileName()
Get output file name.
static multi1d< LatticeColorMatrix > u
push(xml_out,"Condensates")
void initialize(int *argc, char ***argv)
Chroma initialisation routine.
void finalize(void)
Chroma finalization routine.
multi1d< LatticeFermion > chi(Ncb)
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
FloatingPoint< double > Double
int main(int argc, char **argv)