QUDA v0.4.0
A library for QCD on GPUs
quda/include/dslash_quda.h
Go to the documentation of this file.
00001 #ifndef _DSLASH_QUDA_H
00002 #define _DSLASH_QUDA_H
00003 
00004 #include <quda_internal.h>
00005 #include <tune_quda.h>
00006 #include <face_quda.h>
00007 #include <gauge_field.h>
00008 
00009 void setFace(const FaceBuffer &face);
00010 
00011 #ifdef __cplusplus
00012 extern "C" {
00013 #endif
00014 
00015   void initCache();
00016 
00017   extern int initDslash;
00018   extern int initClover;
00019   extern int initDomainWall;
00020   extern bool qudaPt0;
00021   extern bool qudaPtNm1;
00022 
00023   void setDslashTuning(QudaTune tune, QudaVerbosity verbose);
00024 
00025 #ifdef DSLASH_PROFILING
00026   void printDslashProfile();
00027 #endif
00028 
00029 #ifdef __cplusplus
00030 }
00031 #endif
00032 
00033 bool getDslashLaunch();
00034 
00035 void initCommonConstants(const LatticeField &lat);
00036 void initDslashConstants(const cudaGaugeField &gauge, const int sp_stride);
00037 void initCloverConstants(const int cl_stride);
00038 void initDomainWallConstants(const int Ls);
00039 void initStaggeredConstants(const cudaGaugeField &fatgauge, const cudaGaugeField &longgauge);
00040 void initGaugeFieldConstants(const cudaGaugeField &gauge);
00041 
00042 
00043 // plain Wilson Dslash  
00044 void wilsonDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
00045                       const int oddBit, const int daggerBit, const cudaColorSpinorField *x,
00046                       const double &k, const int *commDim);
00047 
00048 // clover Dslash
00049 void cloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, 
00050                       const FullClover cloverInv, const cudaColorSpinorField *in, 
00051                       const int oddBit, const int daggerBit, const cudaColorSpinorField *x,
00052                       const double &k, const int *commDim);
00053 
00054 // solo clover term
00055 void cloverCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const FullClover clover, 
00056                 const cudaColorSpinorField *in, const int oddBit);
00057 
00058 // domain wall Dslash  
00059 void domainWallDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in, 
00060                           const int parity, const int dagger, const cudaColorSpinorField *x, 
00061                           const double &m_f, const double &k);
00062 
00063 // staggered Dslash    
00064 void staggeredDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &fatGauge, const cudaGaugeField &longGauge,
00065                          const cudaColorSpinorField *in, const int parity, const int dagger, 
00066                          const cudaColorSpinorField *x, const double &k, 
00067                          const int *commDim);
00068 
00069 // twisted mass Dslash  
00070 void twistedMassDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in,
00071                            const int parity, const int dagger, const cudaColorSpinorField *x, 
00072                            const double &kappa, const double &mu, const double &a, const int *commDim);
00073 
00074 // solo twist term
00075 void twistGamma5Cuda(cudaColorSpinorField *out, const cudaColorSpinorField *in,
00076                      const int dagger, const double &kappa, const double &mu,
00077                      const QudaTwistGamma5Type);
00078 
00079 // face packing routines
00080 void packFace(void *ghost_buf, cudaColorSpinorField &in, const int dim, const int dagger, 
00081               const int parity, const cudaStream_t &stream);
00082 
00083 #endif // _DSLASH_QUDA_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines