QUDA
1.0.0
|
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <quda.h>
#include <quda_internal.h>
#include <dirac_quda.h>
#include <dslash_quda.h>
#include <invert_quda.h>
#include <util_quda.h>
#include <blas_quda.h>
#include <test_util.h>
#include <dslash_util.h>
#include <wilson_dslash_reference.h>
#include <domain_wall_dslash_reference.h>
#include "misc.h"
#include <qio_field.h>
#include <gtest/gtest.h>
Go to the source code of this file.
Classes | |
struct | DslashTime |
class | DslashTest |
Macros | |
#define | MAX(a, b) ((a)>(b)?(a):(b)) |
Functions | |
void | usage (char **) |
double | getTolerance (QudaPrecision prec) |
void | init (int precision, QudaReconstructType link_recon) |
void | end () |
DslashTime | dslashCUDA (int niter) |
void | dslashRef () |
void | display_test_info (int precision, QudaReconstructType link_recon) |
TEST_P (DslashTest, verify) | |
TEST_P (DslashTest, benchmark) | |
int | main (int argc, char **argv) |
std::string | getdslashtestname (testing::TestParamInfo<::testing::tuple< int, int, int >> param) |
INSTANTIATE_TEST_SUITE_P (QUDA, DslashTest, Combine(Range(0, 4), ::testing::Values(QUDA_RECONSTRUCT_NO, QUDA_RECONSTRUCT_12, QUDA_RECONSTRUCT_8), ::testing::Values(0)), getdslashtestname) | |
#define MAX | ( | a, | |
b | |||
) | ((a)>(b)?(a):(b)) |
Definition at line 24 of file dslash_ctest.cpp.
Referenced by init().
void display_test_info | ( | int | precision, |
QudaReconstructType | link_recon | ||
) |
Definition at line 961 of file dslash_ctest.cpp.
References dagger, dslash_type, get_dslash_str(), get_matpc_str(), get_prec_str(), get_recon_str(), getPrecision(), Lsdim, matpc_type, niter, prec, printfQuda, tdim, test_type, xdim, ydim, and zdim.
Referenced by DslashTest::SetUp().
DslashTime dslashCUDA | ( | int | niter | ) |
Definition at line 469 of file dslash_ctest.cpp.
References comm_barrier(), DslashTime::cpu_max, DslashTime::cpu_min, DslashTime::cpu_time, quda::Dirac::Dslash(), quda::DiracDomainWall4D::Dslash4(), quda::DiracMobius::Dslash4(), quda::DiracMobius::Dslash4pre(), quda::DiracDomainWall4D::Dslash5(), quda::DiracMobius::Dslash5(), quda::DiracDomainWall4DPC::Dslash5inv(), quda::DiracMobiusPC::Dslash5inv(), dslash_type, dslashQuda(), dslashQuda_4dpc(), dslashQuda_mdwf(), end(), DslashTime::event_time, inv_param, kappa5, quda::Dirac::M(), quda::DiracDomainWall4DPC::M(), quda::DiracMobiusPC::M(), MatDagMatQuda(), MatQuda(), quda::Dirac::MdagM(), quda::DiracDomainWall4DPC::MdagM(), quda::DiracMobiusPC::MdagM(), niter, parity, printfQuda, QUDA_DOMAIN_WALL_4D_DSLASH, QUDA_MOBIUS_DWF_DSLASH, QUDA_TWISTED_CLOVER_DSLASH, test_type, transfer, and quda::ColorSpinorField::V().
Referenced by TEST_P().
void dslashRef | ( | ) |
Definition at line 647 of file dslash_ctest.cpp.
References QudaInvertParam_s::b_5, QudaInvertParam_s::c_5, clover_dslash(), clover_mat(), clover_matpc(), cpu_prec, QudaGaugeParam_s::cpu_prec, QudaInvertParam_s::cpu_prec, dagger, dslash_4_4d(), dslash_5_inv(), dslash_type, dw_4d_matpc(), dw_dslash(), dw_dslash_5_4d(), dw_mat(), dw_matdagmat(), dw_matpc(), QudaInvertParam_s::epsilon, errorQuda, gauge_param, hostClover, hostCloverInv, hostGauge, QudaInvertParam_s::kappa, kappa5, Ls, Lsdim, QudaInvertParam_s::m5, QudaInvertParam_s::mass, QudaInvertParam_s::matpc_type, mdw_dslash_4_pre(), mdw_dslash_5(), mdw_dslash_5_inv(), mdw_matpc(), QudaInvertParam_s::mu, not_dagger, parity, printfQuda, QUDA_CLOVER_WILSON_DSLASH, QUDA_DOMAIN_WALL_4D_DSLASH, QUDA_DOMAIN_WALL_DSLASH, QUDA_MOBIUS_DWF_DSLASH, QUDA_TWIST_SINGLET, QUDA_TWISTED_CLOVER_DSLASH, QUDA_TWISTED_MASS_DSLASH, QUDA_WILSON_DSLASH, test_type, tm_dslash(), tm_mat(), tm_matpc(), tm_ndeg_dslash(), tm_ndeg_mat(), tm_ndeg_matpc(), tmc_dslash(), tmc_mat(), tmc_matpc(), tmp2, QudaInvertParam_s::twist_flavor, quda::ColorSpinorField::V(), quda::ColorSpinorField::Volume(), wil_dslash(), wil_mat(), and wil_matpc().
Referenced by TEST_P().
void end | ( | void | ) |
Definition at line 428 of file dslash_ctest.cpp.
References commDimPartitionedReset(), cudaSpinor, cudaSpinorOut, dirac, dslash_type, freeGaugeQuda(), hostClover, hostCloverInv, hostGauge, printfQuda, QUDA_CLOVER_WILSON_DSLASH, QUDA_TWISTED_CLOVER_DSLASH, spinor, spinorOut, spinorRef, spinorTmp, tmp1, tmp2, and transfer.
Referenced by dslashCUDA(), and DslashTest::TearDown().
std::string getdslashtestname | ( | testing::TestParamInfo<::testing::tuple< int, int, int >> | param | ) |
Definition at line 1118 of file dslash_ctest.cpp.
References INSTANTIATE_TEST_SUITE_P(), param, prec, prec_str, QUDA_RECONSTRUCT_12, QUDA_RECONSTRUCT_8, and QUDA_RECONSTRUCT_NO.
double getTolerance | ( | QudaPrecision | prec | ) |
Definition at line 88 of file dslash_ctest.cpp.
References QUDA_DOUBLE_PRECISION, QUDA_HALF_PRECISION, QUDA_INVALID_PRECISION, QUDA_QUARTER_PRECISION, and QUDA_SINGLE_PRECISION.
Referenced by TEST_P().
void init | ( | int | precision, |
QudaReconstructType | link_recon | ||
) |
Definition at line 100 of file dslash_ctest.cpp.
References QudaGaugeParam_s::anisotropy, QudaInvertParam_s::b_5, QudaInvertParam_s::c_5, QudaInvertParam_s::cl_pad, clover_coeff, QudaInvertParam_s::clover_coeff, QudaInvertParam_s::clover_cpu_prec, QudaInvertParam_s::clover_cuda_prec, QudaInvertParam_s::clover_cuda_prec_precondition, QudaInvertParam_s::clover_cuda_prec_refinement_sloppy, QudaInvertParam_s::clover_cuda_prec_sloppy, QudaInvertParam_s::clover_order, cloverSiteSize, compute_clover, QudaInvertParam_s::compute_clover, QudaInvertParam_s::compute_clover_inverse, construct_clover_field(), construct_gauge_field(), cpu_prec, QudaGaugeParam_s::cpu_prec, QudaInvertParam_s::cpu_prec, quda::ColorSpinorParam::create, quda::Dirac::create(), csParam, cuda_prec, QudaGaugeParam_s::cuda_prec, QudaInvertParam_s::cuda_prec, QudaGaugeParam_s::cuda_prec_sloppy, dagger, QudaInvertParam_s::dagger, QudaInvertParam_s::dirac_order, dslash_type, QudaInvertParam_s::dslash_type, dw_setDims(), epsilon, QudaInvertParam_s::epsilon, errorQuda, quda::ColorSpinorParam::fieldOrder, QudaGaugeParam_s::ga_pad, QudaInvertParam_s::gamma_basis, quda::ColorSpinorParam::gammaBasis, QudaGaugeParam_s::gauge_fix, QudaGaugeParam_s::gauge_order, gaugeSiteSize, getPrecision(), hostClover, hostCloverInv, hostGauge, QudaInvertParam_s::input_location, QudaInvertParam_s::kappa, kappa5, link_recon, loadCloverQuda(), loadGaugeQuda(), Ls, QudaInvertParam_s::Ls, Lsdim, QudaInvertParam_s::m5, mass, QudaInvertParam_s::mass, matpc_type, QudaInvertParam_s::matpc_type, MAX, mu, QudaInvertParam_s::mu, quda::ColorSpinorParam::nColor, quda::LatticeFieldParam::nDim, newQudaGaugeParam(), newQudaInvertParam(), quda::norm(), not_dagger, quda::ColorSpinorParam::nSpin, QudaInvertParam_s::output_location, quda::LatticeFieldParam::pad, quda::ColorSpinorParam::pc_type, quda::LatticeFieldParam::Precision(), printfQuda, QUDA_4D_PC, QUDA_5D_PC, QUDA_ANTI_PERIODIC_T, QUDA_ASQTAD_DSLASH, QUDA_CLOVER_WILSON_DSLASH, QUDA_CPU_FIELD_LOCATION, QUDA_DEGRAND_ROSSI_GAMMA_BASIS, QUDA_DIRAC_ORDER, QUDA_DIRECT_PC_SOLVE, QUDA_DIRECT_SOLVE, QUDA_DOMAIN_WALL_4D_DSLASH, QUDA_DOMAIN_WALL_DSLASH, QUDA_DOUBLE_PRECISION, QUDA_EVEN_ODD_SITE_ORDER, QUDA_FLOAT2_FIELD_ORDER, QUDA_FLOAT4_FIELD_ORDER, QUDA_FULL_SITE_SUBSET, QUDA_GAUGE_FIXED_NO, QUDA_MAT_SOLUTION, QUDA_MATDAG_MAT_SOLUTION, QUDA_MATPC_SOLUTION, QUDA_MATPCDAG_MATPC_SOLUTION, QUDA_MOBIUS_DWF_DSLASH, QUDA_PACKED_CLOVER_ORDER, QUDA_PARITY_SITE_SUBSET, QUDA_QDP_GAUGE_ORDER, QUDA_RANDOM_SOURCE, QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, QUDA_STAGGERED_DSLASH, QUDA_TWIST_NONDEG_DOUBLET, QUDA_TWIST_SINGLET, QUDA_TWISTED_CLOVER_DSLASH, QUDA_TWISTED_MASS_DSLASH, QUDA_UKQCD_GAMMA_BASIS, QUDA_WILSON_LINKS, QUDA_ZERO_FIELD_CREATE, QudaGaugeParam_s::reconstruct, QudaGaugeParam_s::reconstruct_sloppy, QudaInvertParam_s::return_clover, QudaInvertParam_s::return_clover_inverse, setDims(), quda::setDiracParam(), quda::ColorSpinorParam::setPrecision(), setSpinorSiteSize(), setVerbosity(), quda::ColorSpinorParam::siteOrder, quda::LatticeFieldParam::siteSubset, QudaInvertParam_s::solution_type, QudaInvertParam_s::solve_type, quda::cpuColorSpinorField::Source(), QudaInvertParam_s::sp_pad, spinor, QudaGaugeParam_s::t_boundary, tdim, test_type, tmp1, quda::DiracParam::tmp1, tmp2, quda::DiracParam::tmp2, transfer, twist_flavor, QudaInvertParam_s::twist_flavor, quda::ColorSpinorParam::twistFlavor, QudaGaugeParam_s::type, V, verbosity, QudaInvertParam_s::verbosity, QudaGaugeParam_s::X, quda::LatticeFieldParam::x, xdim, ydim, and zdim.
Referenced by DslashTest::SetUp().
INSTANTIATE_TEST_SUITE_P | ( | QUDA | , |
DslashTest | , | ||
Combine(Range(0, 4), ::testing::Values(QUDA_RECONSTRUCT_NO, QUDA_RECONSTRUCT_12, QUDA_RECONSTRUCT_8), ::testing::Values(0)) | , | ||
getdslashtestname | |||
) |
int main | ( | int | argc, |
char ** | argv | ||
) |
Definition at line 1095 of file dslash_ctest.cpp.
References comm_rank(), finalizeComms(), gridsize_from_cmdline, initComms(), process_command_line_option(), and usage().
TEST_P | ( | DslashTest | , |
verify | |||
) |
Definition at line 1043 of file dslash_ctest.cpp.
References quda::cpuColorSpinorField::Compare(), QudaInvertParam_s::cuda_prec, cudaSpinorOut, dslashCUDA(), dslashRef(), getTolerance(), quda::blas::norm2(), quda::pow(), printfQuda, QUDA_HALF_PRECISION, QUDA_RECONSTRUCT_8, QudaGaugeParam_s::reconstruct, tol, and transfer.
TEST_P | ( | DslashTest | , |
benchmark | |||
) |
Definition at line 1068 of file dslash_ctest.cpp.
References dslashCUDA(), quda::blas::flops, quda::Dirac::Flops(), quda::ColorSpinorField::GhostBytes(), niter, printfQuda, and transfer.
void usage | ( | char ** | ) |
Definition at line 1783 of file test_util.cpp.
Referenced by main().
double clover_coeff |
Definition at line 1653 of file test_util.cpp.
Referenced by init().
bool compute_clover |
Definition at line 1654 of file test_util.cpp.
Referenced by init().
QudaPrecision cpu_prec = QUDA_DOUBLE_PRECISION |
Definition at line 33 of file dslash_ctest.cpp.
Referenced by dslashRef(), and init().
QudaPrecision cuda_prec |
Definition at line 34 of file dslash_ctest.cpp.
Referenced by init().
cudaColorSpinorField* cudaSpinor |
Definition at line 40 of file dslash_ctest.cpp.
Referenced by end().
cudaColorSpinorField * cudaSpinorOut |
Definition at line 40 of file dslash_ctest.cpp.
QudaDagType dagger |
Definition at line 1620 of file test_util.cpp.
Referenced by display_test_info(), dslashRef(), and init().
int device |
Definition at line 1602 of file test_util.cpp.
Referenced by DslashTest::SetUpTestCase().
Dirac* dirac = NULL |
Definition at line 44 of file dslash_ctest.cpp.
Referenced by end().
DiracDomainWall4DPC* dirac_4dpc = NULL |
Definition at line 46 of file dslash_ctest.cpp.
DiracMobiusPC* dirac_mdwf = NULL |
Definition at line 45 of file dslash_ctest.cpp.
QudaDslashType dslash_type |
Definition at line 1621 of file test_util.cpp.
Referenced by display_test_info(), dslashCUDA(), dslashRef(), end(), and init().
double epsilon |
Definition at line 1649 of file test_util.cpp.
Referenced by init().
QudaGaugeParam gauge_param |
Definition at line 36 of file dslash_ctest.cpp.
Referenced by computeHISQLinksGPU(), computeStaggeredPlaquetteQDPOrder(), dslashRef(), eigensolve_test(), invert_test(), loadGaugeQuda(), loadSloppyGaugeQuda(), main(), plaq_test(), saveGaugeQuda(), and SU3test().
int gridsize_from_cmdline[] |
For MPI, the default node mapping is lexicographical with t varying fastest.
Definition at line 49 of file test_util.cpp.
Referenced by main().
void * hostClover |
Definition at line 42 of file dslash_ctest.cpp.
Referenced by dslashRef(), end(), and init().
void * hostCloverInv |
Definition at line 42 of file dslash_ctest.cpp.
Referenced by dslashRef(), end(), and init().
void* hostGauge[4] |
Definition at line 42 of file dslash_ctest.cpp.
Referenced by dslashRef(), end(), and init().
QudaInvertParam inv_param |
Definition at line 37 of file dslash_ctest.cpp.
Referenced by dslashCUDA().
double kappa5 |
Definition at line 31 of file dslash_ctest.cpp.
Referenced by dslashCUDA(), dslashRef(), dw_4d_matpc(), init(), main(), quda::massRescale(), mdw_mat(), and mdw_matpc().
char latfile[] |
Definition at line 1623 of file test_util.cpp.
int Lsdim |
Definition at line 1619 of file test_util.cpp.
Referenced by display_test_info(), dslashRef(), and init().
double mass |
Definition at line 1646 of file test_util.cpp.
Referenced by init().
QudaMatPCType matpc_type |
Definition at line 1662 of file test_util.cpp.
Referenced by display_test_info(), and init().
double mu |
Definition at line 1648 of file test_util.cpp.
Referenced by init().
int niter |
Definition at line 1629 of file test_util.cpp.
Referenced by display_test_info(), dslashCUDA(), and TEST_P().
QudaDagType not_dagger |
Definition at line 66 of file dslash_ctest.cpp.
Referenced by dslashRef(), and init().
const QudaParity parity = QUDA_EVEN_PARITY |
Definition at line 28 of file dslash_ctest.cpp.
Referenced by dslashCUDA(), and dslashRef().
const char* prec_str[] = {"quarter", "half", "single", "double"} |
Definition at line 82 of file dslash_ctest.cpp.
Referenced by getdslashtestname().
const char* recon_str[] = {"r18", "r12", "r8"} |
Definition at line 83 of file dslash_ctest.cpp.
cpuColorSpinorField* spinor |
Definition at line 39 of file dslash_ctest.cpp.
cpuColorSpinorField * spinorOut |
Definition at line 39 of file dslash_ctest.cpp.
Referenced by end().
cpuColorSpinorField * spinorRef |
Definition at line 39 of file dslash_ctest.cpp.
Referenced by end().
cpuColorSpinorField * spinorTmp |
Definition at line 39 of file dslash_ctest.cpp.
int tdim |
Definition at line 1618 of file test_util.cpp.
Referenced by display_test_info(), and init().
int test_type |
Definition at line 1636 of file test_util.cpp.
Referenced by display_test_info(), dslashCUDA(), dslashRef(), and init().
cudaColorSpinorField * tmp1 =0 |
Definition at line 40 of file dslash_ctest.cpp.
Referenced by dslashQuda(), end(), init(), main(), ndegTwistGamma5(), quda::MultiShiftCG::operator()(), tm_ndeg_matpc(), tmc_dslash(), tmc_matpc(), twistCloverGamma5(), and quda::MG::verify().
cudaColorSpinorField * tmp2 =0 |
Definition at line 40 of file dslash_ctest.cpp.
Referenced by quda::CG::blocksolve(), dslashRef(), end(), init(), quda::IncEigCG::initCGsolve(), invertQuda(), ndegTwistGamma5(), quda::CG::operator()(), quda::CACG::operator()(), quda::MultiShiftCG::operator()(), tm_ndeg_matpc(), tmc_dslash(), tmc_matpc(), twistCloverGamma5(), and quda::MG::verify().
const int transfer = 0 |
Definition at line 29 of file dslash_ctest.cpp.
Referenced by dslashCUDA(), end(), init(), and TEST_P().
QudaTwistFlavorType twist_flavor |
Definition at line 1660 of file test_util.cpp.
Referenced by init().
QudaVerbosity verbosity |
Definition at line 1614 of file test_util.cpp.
Referenced by init().
bool verify_results |
Definition at line 1643 of file test_util.cpp.
int xdim |
Definition at line 1615 of file test_util.cpp.
Referenced by display_test_info(), and init().
int ydim |
Definition at line 1616 of file test_util.cpp.
Referenced by display_test_info(), and init().
int zdim |
Definition at line 1617 of file test_util.cpp.
Referenced by display_test_info(), and init().