QUDA  v0.5.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 
16 
20  void setKernelPackT(bool pack);
21 
25  bool getKernelPackT();
26 
27 #ifdef DSLASH_PROFILING
28  void printDslashProfile();
29 #endif
30 
31  void setFace(const FaceBuffer &face);
32 
33  bool getDslashLaunch();
34 
35  void createDslashEvents();
36  void destroyDslashEvents();
37 
38  void initLatticeConstants(const LatticeField &lat);
39  void initGaugeConstants(const cudaGaugeField &gauge);
40  void initSpinorConstants(const cudaColorSpinorField &spinor);
41  void initDslashConstants();
42  void initCloverConstants (const cudaCloverField &clover);
43  void initStaggeredConstants(const cudaGaugeField &fatgauge, const cudaGaugeField &longgauge);
45  void initTwistedMassConstants(const int flv_stride);
46 
47  // plain Wilson Dslash
48  void wilsonDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
49  const int oddBit, const int daggerBit, const cudaColorSpinorField *x,
50  const double &k, const int *commDim);
51 
52  // clover Dslash
53  void cloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge,
54  const FullClover cloverInv, const cudaColorSpinorField *in,
55  const int oddBit, const int daggerBit, const cudaColorSpinorField *x,
56  const double &k, const int *commDim);
57 
58  // clover Dslash
59  void asymCloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge,
60  const FullClover cloverInv, const cudaColorSpinorField *in,
61  const int oddBit, const int daggerBit, const cudaColorSpinorField *x,
62  const double &k, const int *commDim);
63 
64  // solo clover term
65  void cloverCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const FullClover clover,
66  const cudaColorSpinorField *in, const int oddBit);
67 
68  // domain wall Dslash
69  void domainWallDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
70  const int parity, const int dagger, const cudaColorSpinorField *x,
71  const double &m_f, const double &k, const int *commDim);
72 
73  // staggered Dslash
74  void staggeredDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &fatGauge, const cudaGaugeField &longGauge,
75  const cudaColorSpinorField *in, const int parity, const int dagger,
76  const cudaColorSpinorField *x, const double &k,
77  const int *commDim);
78 
80  // twisted mass Dslash
81  void twistedMassDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
82  const int parity, const int dagger, const cudaColorSpinorField *x,
83  const double &kappa, const double &mu, const double &epsilon, const int *commDim);
84 
86  // solo twist term
87  void twistGamma5Cuda(cudaColorSpinorField *out, const cudaColorSpinorField *in, const int dagger,
88  const double &kappa, const double &mu, const double &epsilon,
89  const QudaTwistGamma5Type);
90 
91  // face packing routines
92  void packFace(void *ghost_buf, cudaColorSpinorField &in, const int dagger, const int parity, const cudaStream_t &stream);
93 
94 }
95 
96 #endif // _DSLASH_QUDA_H