12 typedef multi1d<LatticeFermion>
MLF;
13 typedef multi1d<LatticeColorMatrix>
LCM;
27 for(iter=1; ; iter <<= 1)
29 QDPIO::cout <<
"Applying D " << iter <<
" times" << std::endl;
35 for(
int i=iter;
i-- > 0; ) {
44 for(
int i=iter;
i-- > 0; ) {
54 for(
int i=iter;
i-- > 0; ) {
64 for(
int i=iter;
i-- > 0; ) {
74 for(
int i=iter;
i-- > 0; ) {
84 for(
int i=iter;
i-- > 0; ) {
95 mydt=double(myt2-myt1)/double(CLOCKS_PER_SEC);
96 QDPInternal::globalSum(mydt);
97 mydt /= Layout::numNodes();
107 for(
int i=iter;
i-- > 0; ) {
116 for(
int i=iter;
i-- > 0; ) {
126 for(
int i=iter;
i-- > 0; ) {
136 for(
int i=iter;
i-- > 0; ) {
146 for(
int i=iter;
i-- > 0; ) {
155 for(
int i=iter;
i-- > 0; ) {
167 mydt = (double)(myt2-myt1)/((double)(CLOCKS_PER_SEC));
168 mydt *= 1.0e6/((double)(iter*(Layout::sitesOnNode()/2)));
169 QDPInternal::globalSum(mydt);
170 mydt /= Layout::numNodes();
175 int main(
int argc,
char **argv)
181 const int foo[] = {8,8,16,8};
182 multi1d<int> nrow(
Nd);
184 Layout::setLattSize(nrow);
192 multi1d<LatticeColorMatrix>
u(
Nd);
193 QDPIO::cout <<
"1" << std::endl << std::flush;
194 for(
int m=0;
m <
u.size(); ++
m)
197 QDPIO::cout <<
"2" << std::endl << std::flush;
200 QDPIO::cout <<
"Constructing DWDslash" << std::endl;
207 Real WilsonMass = 1.5;
214 params.OverMass = WilsonMass;
228 QDPIO::cout <<
"Done" << std::endl;
231 psi.moveToFastMemoryHint();
232 chi.moveToFastMemoryHint();
234 for(
int n=0;
n < S_pdwf.
size(); ++
n)
240 QDPIO::cout <<
"Applying D" << std::endl;
241 QDPIO::cout <<
" isign = " <<
isign << std::endl;
250 int Ndiag = (4*
N5+2)*Nc*Ns;
251 int NdiagInv = (10*
N5-8)*Nc*Ns;
252 int Neo =
N5*(1320+24);
253 int Nflops = 2*Ndiag + 2*Neo +
N5*24;
258 QDPIO::cout <<
"EvenEvenInv: The time per lattice point is "<< mydt <<
" micro sec"
259 <<
" (" << ((double)(NdiagInv)/mydt) <<
") Mflops " << std::endl;
262 QDPIO::cout <<
"EvenEven: The time per lattice point is "<< mydt <<
" micro sec"
263 <<
" (" << ((double)(Ndiag)/mydt) <<
") Mflops " << std::endl;
267 QDPIO::cout <<
"OddOdd: The time per lattice point is "<< mydt <<
" micro sec"
268 <<
" (" << ((double)(Ndiag)/mydt) <<
") Mflops " << std::endl;
273 QDPIO::cout <<
"EvenOdd: The time per lattice point is "<< mydt <<
" micro sec"
274 <<
" (" << ((double)(Neo)/mydt) <<
") Mflops " << std::endl;
277 QDPIO::cout <<
"Odd-Even: The time per lattice point is "<< mydt <<
" micro sec"
278 <<
" (" << ((double)(Neo)/mydt) <<
") Mflops " << std::endl;
282 QDPIO::cout <<
"Total: The time per lattice point is "<< mydt <<
" micro sec"
283 <<
" (" << ((double)(Nflops)/mydt) <<
") Mflops " << std::endl;
292 for(iter=1; ; iter <<= 1) {
293 QDPIO::cout <<
"Applying D " << iter <<
" times" << std::endl;
296 for(
int i=iter;
i-- > 0; )
300 mydt=double(myt2-myt1)/double(CLOCKS_PER_SEC);
301 QDPInternal::globalSum(mydt);
302 mydt /= Layout::numNodes();
309 FlopCounter flopcount;
310 swatch.reset(); flopcount.reset();
312 for(
int i=iter;
i-- > 0; ) {
316 flopcount.addFlops(D_pdwf->
nFlops()*iter);
318 flopcount.report(
"PrecDWF total", swatch.getTimeInSeconds());
Primary include file for CHROMA in application codes.
4D style even-odd preconditioned domain-wall fermion action
int size() const
Length of DW flavor index/space.
virtual EvenOddPrecDWLikeLinOpBaseArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Override to produce a DWF-link even-odd prec. linear operator for this action.
Even-odd preconditioned linear operator.
virtual unsigned long nFlops() const
Return flops performed by the operator()
EvenOddPreconditioned NEF fermion action.
virtual FermState< T, P, Q > * createState(const Q &q) const
Given links (coordinates Q) create the state needed for the linear operators.
Class for counted reference semantics.
Concrete class for all fermionic actions with trivial boundary conditions.
@ COEFF_TYPE_TANH_UNSCALED
Asqtad Staggered-Dirac operator.
static multi1d< LatticeColorMatrix > u
void initialize(int *argc, char ***argv)
Chroma initialisation routine.
void finalize(void)
Chroma finalization routine.
multi1d< LatticeFermion > chi(Ncb)
multi1d< LatticeColorMatrix > LCM
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
XMLFileWriter & getXMLOutputInstance()
Get xml output instance.
multi1d< LatticeFermion > MLF
multi1d< LatticeFermion > MLF
int main(int argc, char **argv)
double time_func(const EvenOddPrecLinearOperator< MLF, LCM > &p, func which, MLF &chi, const MLF &psi, enum PlusMinus isign)
void(EvenOddPrecLinearOperator< MLF, LCM >::* EO_mem)(MLF &, const MLF &, enum PlusMinus) const