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