12 typedef multi1d<LatticeFermion>
MLF;
13 typedef multi1d<LatticeColorMatrix>
LCM;
25 for(iter=1; ; iter <<= 1)
27 QDPIO::cout <<
"Applying D " << iter <<
" times" << std::endl;
33 for(
int i=iter;
i-- > 0; ) {
42 for(
int i=iter;
i-- > 0; ) {
52 for(
int i=iter;
i-- > 0; ) {
62 for(
int i=iter;
i-- > 0; ) {
72 for(
int i=iter;
i-- > 0; ) {
82 for(
int i=iter;
i-- > 0; ) {
93 mydt=double(myt2-myt1)/double(CLOCKS_PER_SEC);
94 QDPInternal::globalSum(mydt);
95 mydt /= Layout::numNodes();
105 for(
int i=iter;
i-- > 0; ) {
114 for(
int i=iter;
i-- > 0; ) {
124 for(
int i=iter;
i-- > 0; ) {
134 for(
int i=iter;
i-- > 0; ) {
144 for(
int i=iter;
i-- > 0; ) {
153 for(
int i=iter;
i-- > 0; ) {
164 mydt = (double)(myt2-myt1)/((double)(CLOCKS_PER_SEC));
165 mydt *= 1.0e6/((double)(iter*(Layout::sitesOnNode()/2)));
166 QDPInternal::globalSum(mydt);
167 mydt /= Layout::numNodes();
172 int main(
int argc,
char **argv)
178 const int foo[] = {8,8,16,16};
179 multi1d<int> nrow(
Nd);
181 Layout::setLattSize(nrow);
187 multi1d<LatticeColorMatrix>
u(
Nd);
188 for(
int m=0;
m <
u.size(); ++
m)
192 QDPIO::cout <<
"Constructing CFZ Op" << std::endl;
203 p.OverMass = Real(1.4);
205 p.ApproxMax = 6.4635;
213 QDPIO::cout <<
"Done" << std::endl;
216 for(
int n=0;
n < S_pdwf.
size(); ++
n)
223 QDPIO::cout <<
"Applying D" << std::endl;
224 QDPIO::cout <<
" isign = " <<
isign << std::endl;
231 int Ndiag = (10*
N5-8)*Nc*Ns;
232 int NdiagInv = (10*
N5-8)*Nc*Ns;
233 int Neo = (
N5-1)*(1320 + 2*Nc*Ns);
234 int Nflops = 2*Ndiag + 2*Neo + NdiagInv;
239 QDPIO::cout <<
"EvenEvenInv: The time per lattice point is "<< mydt <<
" micro sec"
240 <<
" (" << ((double)(NdiagInv)/mydt) <<
") Mflops " << std::endl;
243 QDPIO::cout <<
"EvenEven: The time per lattice point is "<< mydt <<
" micro sec"
244 <<
" (" << ((double)(Ndiag)/mydt) <<
") Mflops " << std::endl;
248 QDPIO::cout <<
"OddOdd: The time per lattice point is "<< mydt <<
" micro sec"
249 <<
" (" << ((double)(Ndiag)/mydt) <<
") Mflops " << std::endl;
253 QDPIO::cout <<
"EvenOdd: The time per lattice point is "<< mydt <<
" micro sec"
254 <<
" (" << ((double)(Neo)/mydt) <<
") Mflops " << std::endl;
257 QDPIO::cout <<
"Odd-Even: The time per lattice point is "<< mydt <<
" micro sec"
258 <<
" (" << ((double)(Neo)/mydt) <<
") Mflops " << std::endl;
262 QDPIO::cout <<
"Total: The time per lattice point is "<< mydt <<
" micro sec"
263 <<
" (" << ((double)(Nflops)/mydt) <<
") Mflops " << std::endl;
266 for(
int n=0;
n < S_pdwf.
size(); ++
n)
273 QDPIO::cout <<
"Applying D" << std::endl;
274 QDPIO::cout <<
" isign = " <<
isign << std::endl;
281 int Ndiag = (10*
N5-18)*Nc*Ns;
282 int NdiagInv = (10*
N5-18)*Nc*Ns;
283 int Neo = (
N5-2)*(1320 + 2*Nc*Ns);
284 int Nflops = 2*Ndiag + 2*Neo + NdiagInv;
288 QDPIO::cout <<
"EvenEvenInvPV: The time per lattice point is "<< mydt <<
" micro sec"
289 <<
" (" << ((double)(NdiagInv)/mydt) <<
") Mflops " << std::endl;
292 QDPIO::cout <<
"EvenEvenPV: The time per lattice point is "<< mydt <<
" micro sec"
293 <<
" (" << ((double)(Ndiag)/mydt) <<
") Mflops " << std::endl;
297 QDPIO::cout <<
"OddOddPV: The time per lattice point is "<< mydt <<
" micro sec"
298 <<
" (" << ((double)(Ndiag)/mydt) <<
") Mflops " << std::endl;
302 QDPIO::cout <<
"EvenOddPV: The time per lattice point is "<< mydt <<
" micro sec"
303 <<
" (" << ((double)(Neo)/mydt) <<
") Mflops " << std::endl;
306 QDPIO::cout <<
"Odd-EvenPV: The time per lattice point is "<< mydt <<
" micro sec"
307 <<
" (" << ((double)(Neo)/mydt) <<
") Mflops " << std::endl;
311 QDPIO::cout <<
"TotalPV: The time per lattice point is "<< mydt <<
" micro sec"
312 <<
" (" << ((double)(Nflops)/mydt) <<
") Mflops " << std::endl;
Primary include file for CHROMA in application codes.
Even-odd preconditioned linear operator.
5D continued fraction overlap action (Borici,Wenger, Edwards)
EvenOddPrecConstDetLinearOperatorArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Produce a linear operator for this action.
int size(void) const
Expected length of array index.
EvenOddPrecConstDetLinearOperatorArray< T, P, Q > * linOpPV(Handle< FermState< T, P, Q > > state) const
Produce a Pauli-Villars linear operator for this 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.
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.
Params for 5D overlap ferm acts.
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