QUDA v0.4.0
A library for QCD on GPUs
|
00001 #ifndef _HISQ_FORCE_QUDA_H 00002 #define _HISQ_FORCE_QUDA_H 00003 00004 #include "hisq_force_utils.h" 00005 00006 #include <gauge_field.h> 00007 00008 namespace hisq { 00009 namespace fermion_force { 00010 00011 void hisqForceInitCuda(QudaGaugeParam* param); 00012 00013 void hisqStaplesForceCuda(const double path_coeff[6], 00014 const QudaGaugeParam& param, 00015 const cudaGaugeField& oprod, 00016 const cudaGaugeField& link, 00017 cudaGaugeField *newOprod); 00018 00019 00020 void hisqLongLinkForceCuda(double coeff, 00021 const QudaGaugeParam& param, 00022 const cudaGaugeField &oprod, 00023 const cudaGaugeField &link, 00024 cudaGaugeField *newOprod); 00025 00026 00027 void hisqCompleteForceCuda(const QudaGaugeParam ¶m, 00028 const cudaGaugeField &oprod, 00029 const cudaGaugeField &link, 00030 cudaGaugeField *force); 00031 00032 00033 00034 void setUnitarizeForceConstants(double unitarize_eps, double hisq_force_filter, double max_det_error, 00035 bool allow_svd, bool svd_only, 00036 double svd_rel_error, 00037 double svd_abs_error); 00038 00039 void unitarizeForceCuda(const QudaGaugeParam ¶m, 00040 cudaGaugeField &cudaOldForce, 00041 cudaGaugeField &cudaGauge, 00042 cudaGaugeField *cudaNewForce, 00043 int* unitarization_failed); 00044 00045 void unitarizeForceCPU( const QudaGaugeParam ¶m, 00046 cpuGaugeField &cpuOldForce, 00047 cpuGaugeField &cpuGauge, 00048 cpuGaugeField *cpuNewForce); 00049 00050 00051 } // namespace fermion_force 00052 } // namespace hisq 00053 00054 #endif // _HISQ_FORCE_QUDA_H