CHROMA
dwf_qpropt_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Pick up possibly optimized DWF inverters.
4  *
5  * Typedefs to pick up possibly optimized DWF inverters
6  */
7 
8 #ifndef DWF_QPROPT_W_H
9 #define DWF_QPROPT_W_H
10 
11 #include "chroma_config.h"
12 
13 // The QDP naive class: PrecFermAct5DQprop
15 
16 
17 // The following is an ifdef lis that switches in optimised
18 // Dslash-es. Currently only optimised inverters are the SSE and ALTICEC
19 #if defined(BUILD_CG_DWF)
21 
22 // Internal configuration
23 #include <cg-dwf-config.h>
24 
25 #ifdef CG_DWF_ARCH_SSE
26 // SSE architecture
29 
30 // Enable both single and a double prec solver
31 #define SINGLE_PREC_SOLVER
32 #define DOUBLE_PREC_SOLVER
33 
34 
35 // Include the qprop file
36 #ifdef CHROMA_USE_CG_DWF_LOWMEM
38 #else
40 #endif
41 
42 // Define types
43 namespace Chroma {
45 }
46 #elif defined CG_DWF_ARCH_BLUELIGHT // CG_DWF_ARCH_SSE
49 // Enable both single and a double prec solver
50 #define SINGLE_PREC_SOLVER
51 #define DOUBLE_PREC_SOLVER
52 
53 // Include the qprop file
54 #ifdef CHROMA_USE_CG_DWF_LOWMEM
56 #else
58 #endif
59 
60 namespace Chroma {
62 }
63 #elif defined CG_DWF_ARCH_ALTIVEC
65 // Enable only single prec solver
66 #define SINGLE_PREC_SOLVER
67 #ifdef CHROMA_USE_CG_DWF_LOWMEM
69 #else
71 #endif
72 // To satisfy type requirements pass the type of single prec
73 // as the double prec solver. However this will be turned off by
74 // the fact that we have not defined DOUBLE_PREC_SOLVER
75 namespace Chroma {
77 }
78 #endif
79 
80 #elif defined(BUILD_SSE_DWF_CG)
81 // The file defines the SSE Dslash class
82 // The following typedef switches it in.
83 #include "eoprec_dwf_qprop_array_sse_w.h"
84 namespace Chroma {
85 typedef SSEDWFQpropT DWFQpropT;
86 } // end namespace Chroma
87 
88 #elif defined(BUILD_ALTIVEC_DWF_CG)
89 // The file defines the ALTIVEC Dslash class
90 // The following typedef switches it in.
91 #include "eoprec_dwf_qprop_array_altivec_w.h"
92 namespace Chroma {
93 typedef ALTIVECDWFQpropT DWFQpropT;
94 } // end namespace Chroma
95 
96 #elif defined(BUILD_MDWF)
97 
98 // OK Set up Andrews new MDWF solver here.
99 #include "mdwf_solver.h"
100 namespace Chroma {
101  typedef MDWFQpropT DWFQpropT;
102 }
103 
104 
105 #else
106 // Bottom line, if no optimised DWF qpropT-s exist then the naive QDP qpropT
107 // becomes the DWFQpropT
108 namespace Chroma {
110 } // end namespace Chroma
111 #endif
112 
113 
114 #endif
DWF/Bluegene altivec solver.
DWF/Bluegene double-prec solver.
DWF/Bluegene single-prec solver.
Base class for AVP's DWF solver interface.
DWF/SSE double-prec solver.
Base class for AVP's SSEF-DWF solver interface.
SSE Propagator DWF qpropT.
AVP's DWF Solver interface.
Definition: mdwf_solver.h:29
Propagator of a generic even-odd preconditioned 5D fermion linear operator.
4D style even-odd preconditioned domain-wall fermion action
4D style even-odd preconditioned domain-wall fermion action
Propagator solver for a generic even-odd preconditioned fermion operator.
DWF/SSE double-prec solver.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
PrecFermAct5DQprop< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > DWFQpropT
Definition: dwf_qpropt_w.h:109