17 extern void usage(
char** argv);
62 for(
int dir=0; dir<4; ++dir){
63 for(
int i=0; i<
V*18; ++i){
65 double* ptr = ((
double**)field)[dir] + i;
66 *ptr += (rand() - RAND_MAX/2.0)/(20.0*RAND_MAX);
68 float* ptr = ((
float**)field)[dir]+i;
69 *ptr += (rand() - RAND_MAX/2.0)/(20.0*RAND_MAX);
152 double unitarize_eps = 1e-5;
153 const double hisq_force_filter = 5e-5;
154 const double max_det_error = 1e-12;
155 const bool allow_svd =
true;
156 const bool svd_only =
false;
157 const double svd_rel_err = 1e-8;
158 const double svd_abs_err = 1e-8;
164 int* num_failures_dev;
165 if(cudaMalloc(&num_failures_dev,
sizeof(
int)) != cudaSuccess){
166 errorQuda(
"cudaMalloc failed for num_failures_dev\n");
168 cudaMemset(num_failures_dev, 0,
sizeof(
int));
181 printfQuda(
"Comparing CPU and GPU results\n");
182 for(
int dir=0; dir<4; ++dir){
188 printfQuda(
"Dir:%d Test %s\n",dir,(1 == res) ?
"PASSED" :
"FAILED");
198 printfQuda(
"running the following fermion force computation test:\n");
200 printfQuda(
"link_precision link_reconstruct space_dim(x/y/z) T_dimension\n");
213 for (i =1;i < argc; i++){
219 fprintf(stderr,
"ERROR: Invalid option:%s\n", argv[i]);
cudaGaugeField * cudaResult
enum QudaPrecision_s QudaPrecision
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)
void unitarizeForceCuda(cudaGaugeField &cudaOldForce, cudaGaugeField &cudaGauge, cudaGaugeField *cudaNewForce, int *unitarization_failed, long long *flops=NULL)
void saveCPUField(cpuGaugeField &, const QudaFieldLocation &) const
void unitarizeForceCPU(cpuGaugeField &cpuOldForce, cpuGaugeField &cpuGauge, cpuGaugeField *cpuNewForce)
int main(int argc, char **argv)
QudaGaugeParam gaugeParam
int process_command_line_option(int argc, char **argv, int *idx)
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 createSiteLinkCPU(void **link, QudaPrecision precision, int phase)
cpuGaugeField * cpuReference
void initQuda(int device)
cpuGaugeField * cpuFatLink
cudaGaugeField * cudaFatLink
const char * get_recon_str(QudaReconstructType recon)
QudaGaugeFieldOrder order
QudaReconstructType link_recon
void loadCPUField(const cpuGaugeField &, const QudaFieldLocation &)
QudaReconstructType reconstruct
cudaGaugeField * cudaOprod
QudaGhostExchange ghostExchange
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