CHROMA
clover_term_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Include possibly optimized Clover terms
4  */
5 
6 #ifndef __clover_term_w_h__
7 #define __clover_term_w_h__
8 
9 #include "chroma_config.h"
10 #include "qdp_config.h"
11 
12 // The QDP naive clover term
13 //
14 
15 
16 // The following is an ifdef lis that switches in optimised
17 // terms. Currently only optimised dslash is the SSE One;
18 
19 #if defined(BUILD_BAGEL_CLOVER_TERM)
21 namespace Chroma {
22  // Assume DP Build
23  typedef BAGELCloverTerm CloverTerm;
24  typedef BAGELCloverTerm CloverTermD;
26 
27 } // end namespace Chroma
28 
29 #elif defined(BUILD_SSED_CLOVER_TERM)
30 
31 # include "clover_term_ssed.h"
32 #include "clover_term_qdp_w.h"
33 namespace Chroma {
34 
35 
36 #if BASE_PRECISION==32
37  using CloverTerm = QDPCloverTerm;
38 #else
39  using CloverTerm = SSEDCloverTerm;
40 #endif
41 
43  using CloverTermD = SSEDCloverTerm;
44 
45  template<typename T, typename U>
46  using CloverTermT = QDPCloverTermT<T,U>;
47 }
48 #elif defined(BUILD_JIT_CLOVER_TERM)
49 
50 #if defined(QDPJIT_IS_QDPJITPTX)
51 #include "clover_term_ptx_w.h"
52 namespace Chroma {
53  using CloverTerm = PTXCloverTerm;
56 
57  template<typename T, typename U>
58  using CloverTermT = PTXCloverTermT<T,U>;
59 
60 }
61 #elif defined(QDPJIT_IS_QDPJITNVVM)
62 #include "clover_term_nvvm_w.h"
63 namespace Chroma {
64  using CloverTerm = NVVMCloverTerm;
67 
68  template<typename T, typename U>
69  using CloverTermT = NVVMCloverTermT<T,U>;
70 
71 }
72 #else
73 #include "clover_term_llvm_w.h"
74 namespace Chroma {
75  using CloverTerm = LLVMCloverTerm;
78 
79  template<typename T,typename U>
80  using CloverTermT = LLVMCloverTermT<T,U>;
81 
82 }
83 #endif
84 
85 #else
86 
87 // Bottom line, if no optimised Dslash-s exist then the naive QDP Dslash
88 // becomes the WilsonDslash
89 
90 #include "clover_term_qdp_w.h"
91 namespace Chroma {
95 
96  template<typename T,typename U>
98 } // end namespace Chroma
99 #endif
100 
101 
102 #endif
Clover term linear operator.
Clover term linear operator.
Clover term linear operator.
Clover term linear operator.
Clover term linear operator.
Clover term linear operator.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
LLVMCloverTermT< LatticeFermionF, LatticeColorMatrixF > LLVMCloverTermF
QDPCloverTermT< LatticeFermionF, LatticeColorMatrixF > QDPCloverTermF
QDPCloverTerm CloverTerm
Definition: clover_term_w.h:92
NVVMCloverTermT< LatticeFermionF, LatticeColorMatrixF > NVVMCloverTermF
PTXCloverTermT< LatticeFermion, LatticeColorMatrix > PTXCloverTerm
NVVMCloverTermT< LatticeFermion, LatticeColorMatrix > NVVMCloverTerm
LLVMCloverTermT< LatticeFermionD, LatticeColorMatrixD > LLVMCloverTermD
QDPCloverTermT< LatticeFermionD, LatticeColorMatrixD > QDPCloverTermD
PTXCloverTermT< LatticeFermionD, LatticeColorMatrixD > PTXCloverTermD
QDPCloverTermF CloverTermF
Definition: clover_term_w.h:93
QDPCloverTermD CloverTermD
Definition: clover_term_w.h:94
QDPCloverTermT< T, U > CloverTermT
Definition: clover_term_w.h:97
NVVMCloverTermT< LatticeFermionD, LatticeColorMatrixD > NVVMCloverTermD
PTXCloverTermT< LatticeFermionF, LatticeColorMatrixF > PTXCloverTermF
QDPCloverTermT< LatticeFermion, LatticeColorMatrix > QDPCloverTerm
LLVMCloverTermT< LatticeFermion, LatticeColorMatrix > LLVMCloverTerm