QUDA v0.4.0
A library for QCD on GPUs
|
00001 #ifndef _LLFAT_QUDA_H 00002 #define _LLFAT_QUDA_H 00003 00004 #include "quda.h" 00005 00006 #ifdef __cplusplus 00007 extern "C"{ 00008 #endif 00009 00010 #define LLFAT_INTERIOR_KERNEL 0 00011 #define LLFAT_EXTERIOR_KERNEL_FWD_X 1 00012 #define LLFAT_EXTERIOR_KERNEL_BACK_X 2 00013 #define LLFAT_EXTERIOR_KERNEL_FWD_Y 3 00014 #define LLFAT_EXTERIOR_KERNEL_BACK_Y 4 00015 #define LLFAT_EXTERIOR_KERNEL_FWD_Z 5 00016 #define LLFAT_EXTERIOR_KERNEL_BACK_Z 6 00017 #define LLFAT_EXTERIOR_KERNEL_FWD_T 7 00018 #define LLFAT_EXTERIOR_KERNEL_BACK_T 8 00019 00020 typedef struct llfat_kernel_param_s{ 00021 unsigned long threads; 00022 int ghostDim[4]; // Whether a ghost zone has been allocated for a given dimension 00023 int kernel_type; 00024 00025 //use in extended kernels 00026 int D1, D2,D3, D4, D1h; 00027 dim3 blockDim; 00028 dim3 halfGridDim; 00029 int base_idx; 00030 00031 }llfat_kernel_param_t; 00032 00033 00034 void llfat_cuda(cudaGaugeField& cudaFatLink, cudaGaugeField& cudaSiteLink, 00035 cudaGaugeField& cudaStaple, cudaGaugeField& cudaStaple1, 00036 QudaGaugeParam* param, double* act_path_coeff); 00037 void llfat_cuda_ex(cudaGaugeField& cudaFatLink, cudaGaugeField& cudaSiteLink, 00038 cudaGaugeField& cudaStaple, cudaGaugeField& cudaStaple1, 00039 QudaGaugeParam* param, double* act_path_coeff); 00040 00041 void llfat_init_cuda(QudaGaugeParam* param); 00042 void llfat_init_cuda_ex(QudaGaugeParam* param_ex); 00043 00044 void computeGenStapleFieldParityKernel(void* staple_even, void* staple_odd, 00045 void* sitelink_even, void* sitelink_odd, 00046 void* fatlink_even, void* fatlink_odd, 00047 void* mulink_even, void* mulink_odd, 00048 int mu, int nu, int save_staple, 00049 double mycoeff, 00050 QudaReconstructType recon, QudaPrecision prec, 00051 dim3 halfGridDim, llfat_kernel_param_t kparam, 00052 cudaStream_t* stream); 00053 void computeGenStapleFieldParityKernel_ex(void* staple_even, void* staple_odd, 00054 void* sitelink_even, void* sitelink_odd, 00055 void* fatlink_even, void* fatlink_odd, 00056 void* mulink_even, void* mulink_odd, 00057 int mu, int nu, int save_staple, 00058 double mycoeff, 00059 QudaReconstructType recon, QudaPrecision prec, 00060 llfat_kernel_param_t kparam); 00061 void siteComputeGenStapleParityKernel(void* staple_even, void* staple_odd, 00062 void* sitelink_even, void* sitelink_odd, 00063 void* fatlink_even, void* fatlink_odd, 00064 int mu, int nu, double mycoeff, 00065 QudaReconstructType recon, QudaPrecision prec, 00066 dim3 halfGridDim, llfat_kernel_param_t kparam, 00067 cudaStream_t* stream); 00068 void siteComputeGenStapleParityKernel_ex(void* staple_even, void* staple_odd, 00069 void* sitelink_even, void* sitelink_odd, 00070 void* fatlink_even, void* fatlink_odd, 00071 int mu, int nu, double mycoeff, 00072 QudaReconstructType recon, QudaPrecision prec, 00073 llfat_kernel_param_t kparam); 00074 void llfatOneLinkKernel(cudaGaugeField& cudaFatLink, cudaGaugeField& cudaSiteLink, 00075 cudaGaugeField& cudaStaple, cudaGaugeField& cudaStaple1, 00076 QudaGaugeParam* param, double* act_path_coeff); 00077 void llfatOneLinkKernel_ex(cudaGaugeField& cudaFatLink, cudaGaugeField& cudaSiteLink, 00078 cudaGaugeField& cudaStaple, cudaGaugeField& cudaStaple1, 00079 QudaGaugeParam* param, double* act_path_coeff, 00080 llfat_kernel_param_t kparam); 00081 00082 00083 void computeFatLinkCore(cudaGaugeField* cudaSiteLink, double* act_path_coeff, 00084 QudaGaugeParam* qudaGaugeParam, QudaComputeFatMethod method, 00085 cudaGaugeField* cudaFatLink, struct timeval time_array[]); 00086 00087 #ifdef __cplusplus 00088 } 00089 #endif 00090 00091 #endif // _LLFAT_QUDA_H