QUDA  v0.7.0
A library for QCD on GPUs
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
dslash_quda.h
Go to the documentation of this file.
1 #ifndef _DSLASH_QUDA_H
2 #define _DSLASH_QUDA_H
3 
4 #include <quda_internal.h>
5 #include <tune_quda.h>
6 #include <face_quda.h>
7 #include <gauge_field.h>
8 
9 namespace quda {
10 
14  void setKernelPackT(bool pack);
15 
19  bool getKernelPackT();
20 
24  void setTwistPack(bool pack);
25 
29  bool getTwistPack();
30 
34  void setPackComms(const int *commDim);
35 
36  bool getDslashLaunch();
37 
38  void createDslashEvents();
39  void destroyDslashEvents();
40 
41 
42  // plain Wilson Dslash
43  void wilsonDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
44  const int oddBit, const int daggerBit, const cudaColorSpinorField *x,
45  const double &k, const int *commDim, TimeProfile &profile,
46  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2);
47 
48  // clover Dslash
49  void cloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge,
50  const FullClover cloverInv, const cudaColorSpinorField *in,
51  const int oddBit, const int daggerBit, const cudaColorSpinorField *x,
52  const double &k, const int *commDim, TimeProfile &profile,
53  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2);
54 
55  // clover Dslash
56  void asymCloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge,
57  const FullClover cloverInv, const cudaColorSpinorField *in,
58  const int oddBit, const int daggerBit, const cudaColorSpinorField *x,
59  const double &k, const int *commDim, TimeProfile &profile,
60  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2);
61 
62  // solo clover term
63  void cloverCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const FullClover clover,
64  const cudaColorSpinorField *in, const int oddBit);
65 
66  // domain wall Dslash
67  void domainWallDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
68  const int parity, const int dagger, const cudaColorSpinorField *x,
69  const double &m_f, const double &k, const int *commDim, TimeProfile &profile,
70  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH);
71 
72  // Added for 4d EO preconditioning in DWF
73  void domainWallDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
74  const int parity, const int dagger, const cudaColorSpinorField *x, const double &m_f, const double &k,
75  const int *commDim, const int DS_type, TimeProfile &profile,
76  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2);
77 
78  // Added for 4d EO preconditioning in Mobius DWF
79  void MDWFDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
80  const int parity, const int dagger, const cudaColorSpinorField *x, const double &m_f, const double &k,
81  const int *commDim, const int DS_type, TimeProfile &profile,
82  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2);
83 
84  // staggered Dslash
85  void staggeredDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge,
86  const cudaColorSpinorField *in, const int parity, const int dagger,
87  const cudaColorSpinorField *x, const double &k,
88  const int *commDim, TimeProfile &profile,
89  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2);
90 
91  // improved staggered Dslash
92  void improvedStaggeredDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &fatGauge, const cudaGaugeField &longGauge,
93  const cudaColorSpinorField *in, const int parity, const int dagger,
94  const cudaColorSpinorField *x, const double &k,
95  const int *commDim, TimeProfile &profile,
96  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2);
97 
98  // twisted mass Dslash
99  void twistedMassDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
100  const int parity, const int dagger, const cudaColorSpinorField *x, const QudaTwistDslashType type,
101  const double &kappa, const double &mu, const double &epsilon, const double &k, const int *commDim, TimeProfile &profile,
102  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2);
103 
104  // twisted mass Dslash
105  void ndegTwistedMassDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
106  const int parity, const int dagger, const cudaColorSpinorField *x, const QudaTwistDslashType type,
107  const double &kappa, const double &mu, const double &epsilon, const double &k, const int *commDim, TimeProfile &profile,
108  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH);
109 
110  // twisted clover Dslash
111  void twistedCloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge,
112  const FullClover *clover, const FullClover *cloverInv, const cudaColorSpinorField *in,
113  const int parity, const int dagger, const cudaColorSpinorField *x, const QudaTwistCloverDslashType type,
114  const double &kappa, const double &mu, const double &epsilon, const double &k, const int *commDim, TimeProfile &profile,
115  const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2);
116 
117  // solo twist term
118  void twistGamma5Cuda(cudaColorSpinorField *out, const cudaColorSpinorField *in, const int dagger,
119  const double &kappa, const double &mu, const double &epsilon,
120  const QudaTwistGamma5Type);
121 
122  // solo twist clover term
123  void twistCloverGamma5Cuda(cudaColorSpinorField *out, const cudaColorSpinorField *in, const int dagger, const double &kappa, const double &mu,
124  const double &epsilon, const QudaTwistGamma5Type twist, const FullClover *clov, const FullClover *clovInv, const int parity);
125 
126  // face packing routines
127  void packFace(void *ghost_buf, cudaColorSpinorField &in, const int nFace, const int dagger,
128  const int parity, const int dim, const int face_num, const cudaStream_t &stream,
129  const double a=0.0, const double b=0.0);
130 
131  void packFaceExtended(void *ghost_buf, cudaColorSpinorField &field, const int nFace, const int R[], const int dagger,
132  const int parity, const int dim, const int face_num, const cudaStream_t &stream, const bool unpack=false);
133 
134 
135  // face packing routines
136  void packFace(void *ghost_buf, cudaColorSpinorField &in, FullClover &clov, FullClover &clovInv,
137  const int nFace, const int dagger, const int parity, const int dim, const int face_num,
138  const cudaStream_t &stream, const double a=0.0);
139 
140 }
141 
142 #endif // _DSLASH_QUDA_H
int commDim(int)
void packFace(void *ghost_buf, cudaColorSpinorField &in, const int nFace, const int dagger, const int parity, const int dim, const int face_num, const cudaStream_t &stream, const double a=0.0, const double b=0.0)
bool getKernelPackT()
Definition: dslash_quda.cu:84
void setPackComms(const int *commDim)
Definition: dslash_pack.cu:39
__global__ void const RealA *const const RealA *const const RealA *const const RealB *const const RealB *const int int mu
enum QudaTwistCloverDslashType_s QudaTwistCloverDslashType
cudaStream_t * stream
void staggeredDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in, const int parity, const int dagger, const cudaColorSpinorField *x, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
void improvedStaggeredDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &fatGauge, const cudaGaugeField &longGauge, const cudaColorSpinorField *in, const int parity, const int dagger, const cudaColorSpinorField *x, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
QudaDagType dagger
Definition: test_util.cpp:1558
void domainWallDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in, const int parity, const int dagger, const cudaColorSpinorField *x, const double &m_f, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH)
void cloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const FullClover cloverInv, const cudaColorSpinorField *in, const int oddBit, const int daggerBit, const cudaColorSpinorField *x, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
bool getDslashLaunch()
void ndegTwistedMassDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in, const int parity, const int dagger, const cudaColorSpinorField *x, const QudaTwistDslashType type, const double &kappa, const double &mu, const double &epsilon, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH)
VOLATILE spinorFloat kappa
void cloverCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const FullClover clover, const cudaColorSpinorField *in, const int oddBit)
Definition: dslash_quda.cu:229
cpuColorSpinorField * in
enum QudaDslashPolicy_s QudaDslashPolicy
void createDslashEvents()
Definition: dslash_quda.cu:108
void MDWFDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in, const int parity, const int dagger, const cudaColorSpinorField *x, const double &m_f, const double &k, const int *commDim, const int DS_type, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
void twistedCloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const FullClover *clover, const FullClover *cloverInv, const cudaColorSpinorField *in, const int parity, const int dagger, const cudaColorSpinorField *x, const QudaTwistCloverDslashType type, const double &kappa, const double &mu, const double &epsilon, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
void asymCloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const FullClover cloverInv, const cudaColorSpinorField *in, const int oddBit, const int daggerBit, const cudaColorSpinorField *x, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
void twistGamma5Cuda(cudaColorSpinorField *out, const cudaColorSpinorField *in, const int dagger, const double &kappa, const double &mu, const double &epsilon, const QudaTwistGamma5Type)
ndeg tm:
Definition: dslash_quda.cu:356
void setTwistPack(bool pack)
Definition: dslash_quda.cu:90
int x[4]
void wilsonDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in, const int oddBit, const int daggerBit, const cudaColorSpinorField *x, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
enum QudaTwistDslashType_s QudaTwistDslashType
void twistCloverGamma5Cuda(cudaColorSpinorField *out, const cudaColorSpinorField *in, const int dagger, const double &kappa, const double &mu, const double &epsilon, const QudaTwistGamma5Type twist, const FullClover *clov, const FullClover *clovInv, const int parity)
Definition: dslash_quda.cu:495
cpuColorSpinorField * out
bool getTwistPack()
Definition: dslash_quda.cu:91
void setKernelPackT(bool pack)
Definition: dslash_quda.cu:82
enum QudaTwistGamma5Type_s QudaTwistGamma5Type
void packFaceExtended(void *ghost_buf, cudaColorSpinorField &field, const int nFace, const int R[], const int dagger, const int parity, const int dim, const int face_num, const cudaStream_t &stream, const bool unpack=false)
void twistedMassDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in, const int parity, const int dagger, const cudaColorSpinorField *x, const QudaTwistDslashType type, const double &kappa, const double &mu, const double &epsilon, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
void destroyDslashEvents()
Definition: dslash_quda.cu:129
const QudaParity parity
Definition: dslash_test.cpp:29
void * gauge[4]
Definition: su3_test.cpp:15
int oddBit