16 extern void usage(
char** argv);
61 for(
int dir=0; dir<4; ++dir){
62 for(
int i=0;
i<
V*18; ++
i){
64 double*
ptr = ((
double**)field)[dir] +
i;
65 *
ptr += (
rand() - RAND_MAX/2.0)/(20.0*RAND_MAX);
67 float*
ptr = ((
float**)field)[dir]+
i;
68 *
ptr += (
rand() - RAND_MAX/2.0)/(20.0*RAND_MAX);
152 const double hisq_force_filter = 5
e-5;
153 const double max_det_error = 1
e-12;
154 const bool allow_svd =
true;
155 const bool svd_only =
false;
156 const double svd_rel_err = 1
e-8;
157 const double svd_abs_err = 1
e-8;
165 errorQuda(
"cudaMalloc failed for num_failures_dev\n");
180 printfQuda(
"Comparing CPU and GPU results\n");
181 for(
int dir=0; dir<4; ++dir){
187 printfQuda(
"Dir:%d Test %s\n",dir,(1 == res) ?
"PASSED" :
"FAILED");
197 printfQuda(
"running the following fermion force computation test:\n");
199 printfQuda(
"link_precision link_reconstruct space_dim(x/y/z) T_dimension\n");
212 for (
i =1;
i < argc;
i++){
218 fprintf(stderr,
"ERROR: Invalid option:%s\n", argv[
i]);
static void hisq_force_test()
QudaGhostExchange ghostExchange
static void hisq_force_init()
cudaGaugeField * cudaResult
enum QudaPrecision_s QudaPrecision
void saveCPUField(cpuGaugeField &cpu) const
Upload from this field into a CPU field.
void setUnitarizeForceConstants(double unitarize_eps, double hisq_force_filter, double max_det_error, bool allow_svd, bool svd_only, double svd_rel_error, double svd_abs_error)
Set the constant parameters for the force unitarization.
int main(int argc, char **argv)
int process_command_line_option(int argc, char **argv, int *idx)
static QudaGaugeParam gaugeParam
cpuGaugeField * cpuResult
void setPrecision(QudaPrecision precision)
QudaGaugeFieldOrder gauge_order
int compare_floats(void *a, void *b, int len, double epsilon, QudaPrecision precision)
const char * get_prec_str(QudaPrecision prec)
void unitarizeForceCPU(cpuGaugeField &newForce, const cpuGaugeField &oldForce, const cpuGaugeField &gauge)
Unitarize the fermion force on CPU.
void createSiteLinkCPU(void **link, QudaPrecision precision, int phase)
else return(__swbuf(_c, _p))
cpuGaugeField * cpuReference
void loadCPUField(const cpuGaugeField &cpu)
Download into this field from a CPU field.
void initQuda(int device)
static void display_test_info()
void srand(unsigned) __attribute__((__availability__(swift
cpuGaugeField * cpuFatLink
cudaGaugeField * cudaFatLink
const char * get_recon_str(QudaReconstructType recon)
QudaGaugeFieldOrder order
QudaReconstructType link_recon
static double unitarize_eps
QudaReconstructType reconstruct
int fprintf(FILE *, const char *,...) __attribute__((__format__(__printf__
void unitarizeForce(cudaGaugeField &newForce, const cudaGaugeField &oldForce, const cudaGaugeField &gauge, int *unitarization_failed, long long *flops=NULL)
Unitarize the fermion force.
int rand(void) __attribute__((__availability__(swift
cudaGaugeField * cudaOprod
static void hisq_force_end()
enum QudaReconstructType_s QudaReconstructType
Main header file for the QUDA library.
int gridsize_from_cmdline[]
void createNoisyLinkCPU(void **field, QudaPrecision prec, int seed)
void comm_allreduce_int(int *data)
void initComms(int argc, char **argv, const int *commDims)
QudaPrecision cpu_hw_prec