QUDA v0.3.2
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 
00006 #ifdef __cplusplus
00007 extern "C" {
00008 #endif
00009 
00010   void initCache();
00011 
00012   extern int initDslash;
00013 
00014   int dslashCudaSharedBytes(QudaPrecision spinor_prec, int blockDim);
00015 
00016   void initDslashConstants(FullGauge gauge, int sp_stride, int cl_stride, int Ls=1);
00017   void initCommonConstants(FullGauge gauge);
00018 
00019   // plain Wilson Dslash  
00020   void dslashCuda(void *out, void *outNorm, const FullGauge gauge, const void *in, 
00021                   const void *inNorm, const int parity, const int dagger, 
00022                   const void *x, const void *xNorm, const double k,
00023                   const int volume, const int length, const QudaPrecision precision);
00024     
00025   // clover Dslash
00026   void cloverDslashCuda(void *out, void *outNorm, const FullGauge gauge, 
00027                         const FullClover cloverInv, const void *in, const void *inNorm,
00028                         const int oddBit, const int daggerBit, const void *x, const void *xNorm,
00029                         const double k, const int volume, const int length, const QudaPrecision precision);
00030     
00031   // solo clover term
00032   void cloverCuda(void *out, void *outNorm, const FullGauge gauge, const FullClover clover, 
00033                   const void *in, const void *inNorm, const int oddBit, const int volume, 
00034                   const int length, const QudaPrecision precision);
00035 
00036   // domain wall Dslash  
00037   void domainWallDslashCuda(void *out, void *outNorm, const FullGauge gauge, const void *in, 
00038                             const void *inNorm, const int parity, const int dagger, 
00039                             const void *x, const void *xNorm, const double m_f, const double k,
00040                             const int volume5d, const int length, const QudaPrecision precision);
00041     
00042   // staggered Dslash
00043   void staggeredDslashCuda(void *out, void *outNorm, const FullGauge fatGauge, FullGauge longGauge, const void *in, 
00044                            const void *inNorm, const int parity, const int dagger, 
00045                            const void *x, const void *xNorm, const double k,
00046                            const int volume, const int length, const QudaPrecision precision);
00047 
00048   // twisted mass Dslash  
00049   void twistedMassDslashCuda(void *out, void *outNorm, const FullGauge gauge, const void *in, 
00050                              const void *inNorm, const int parity, const int dagger, 
00051                              const void *x, const void *xNorm, const double kappa, const double mu,
00052                              const double a, const int volume, const int length, 
00053                              const QudaPrecision precision);
00054 
00055   // solo twist term
00056   void twistGamma5Cuda(void *out, void *outNorm, const void *in, const void *inNorm,
00057                        const int dagger, const double kappa, const double mu, const int volume, 
00058                        const int length, const QudaPrecision precision, const QudaTwistGamma5Type);
00059 
00060 #ifdef __cplusplus
00061 }
00062 #endif
00063 
00064 #endif // _DLASH_QUDA_H
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines