QUDA v0.4.0
A library for QCD on GPUs
|
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