QUDA
1.0.0
|
#include <stdio.h>
#include <stdlib.h>
#include <quda_internal.h>
#include <color_spinor_field.h>
#include <blas_quda.h>
#include <test_util.h>
#include <dslash_util.h>
#include <gtest/gtest.h>
Go to the source code of this file.
Classes | |
class | BlasTest |
Macros | |
#define | ERROR(a) fabs(blas::norm2(*a##D) - blas::norm2(*a##H)) / blas::norm2(*a##H) |
Functions | |
void | usage (char **) |
void | setPrec (ColorSpinorParam ¶m, const QudaPrecision precision) |
void | display_test_info () |
bool | skip_kernel (int precision, int kernel) |
void | initFields (int prec) |
void | freeFields () |
double | benchmark (int kernel, const int niter) |
double | test (int kernel) |
int | main (int argc, char **argv) |
TEST_P (BlasTest, verify) | |
TEST_P (BlasTest, benchmark) | |
std::string | getblasname (testing::TestParamInfo<::testing::tuple< int, int >> param) |
INSTANTIATE_TEST_SUITE_P (QUDA, BlasTest, Combine(Range(0, 4), Range(0, Nkernels)), getblasname) | |
Variables | |
int | test_type |
QudaPrecision | prec |
QudaDslashType | dslash_type |
QudaInverterType | inv_type |
int | nvec [QUDA_MAX_MG_LEVEL] |
int | device |
int | xdim |
int | ydim |
int | zdim |
int | tdim |
int | gridsize_from_cmdline [] |
int | niter |
int | Nsrc |
int | Msrc |
QudaSolveType | solve_type |
QudaVerbosity | verbosity |
const int | Nkernels = 40 |
ColorSpinorField * | xH |
ColorSpinorField * | yH |
ColorSpinorField * | zH |
ColorSpinorField * | wH |
ColorSpinorField * | vH |
ColorSpinorField * | hH |
ColorSpinorField * | mH |
ColorSpinorField * | lH |
ColorSpinorField * | xD |
ColorSpinorField * | yD |
ColorSpinorField * | zD |
ColorSpinorField * | wD |
ColorSpinorField * | vD |
ColorSpinorField * | hD |
ColorSpinorField * | mD |
ColorSpinorField * | lD |
ColorSpinorField * | xmD |
ColorSpinorField * | ymD |
ColorSpinorField * | zmD |
std::vector< cpuColorSpinorField * > | xmH |
std::vector< cpuColorSpinorField * > | ymH |
std::vector< cpuColorSpinorField * > | zmH |
int | Nspin |
int | Ncolor |
int | Nprec = 4 |
const char * | prec_str [] = {"quarter", "half", "single", "double"} |
const char * | names [] |
#define ERROR | ( | a | ) | fabs(blas::norm2(*a##D) - blas::norm2(*a##H)) / blas::norm2(*a##H) |
Definition at line 502 of file blas_test.cu.
Referenced by test().
double benchmark | ( | int | kernel, |
const int | niter | ||
) |
Definition at line 303 of file blas_test.cu.
References quda::blas::ax(), quda::blas::axpby(), quda::blas::axpy(), quda::blas::axpyBzpcx(), quda::blas::axpyNorm(), quda::blas::axpyReDot(), quda::blas::axpyZpbx(), quda::blas::cabxpyAx(), quda::blas::cabxpyzAxNorm(), quda::blas::caxpby(), quda::blas::caxpbypzYmbw(), quda::blas::caxpbypzYmbwcDotProductUYNormY(), quda::blas::caxpy(), quda::blas::caxpyBxpz(), quda::blas::caxpyBzpx(), quda::blas::caxpyDotzy(), quda::blas::caxpyNorm(), quda::blas::caxpyXmaz(), quda::blas::caxpyXmazNormX(), quda::blas::cDotProduct(), quda::blas::cDotProductNormA(), quda::blas::cDotProductNormB(), quda::ColorSpinorField::Components(), quda::blas::copy(), quda::blas::cxpaypbz(), quda::blas::end(), errorQuda, quda::blas::HeavyQuarkResidualNorm(), Msrc, quda::blas::mxpy(), niter, quda::blas::norm2(), Nsrc, quda::blas::reDotProduct(), quda::blas::tripleCGReduction(), quda::blas::tripleCGUpdate(), quda::blas::xmyNorm(), quda::blas::xpay(), quda::blas::xpy(), and quda::blas::xpyHeavyQuarkResidualNorm().
Referenced by TEST_P().
void display_test_info | ( | ) |
Definition at line 58 of file blas_test.cu.
References dimPartitioned(), Ncolor, Nspin, printfQuda, tdim, xdim, ydim, and zdim.
Referenced by main().
void freeFields | ( | ) |
std::string getblasname | ( | testing::TestParamInfo<::testing::tuple< int, int >> | param | ) |
Definition at line 1065 of file blas_test.cu.
References INSTANTIATE_TEST_SUITE_P(), names, Nkernels, param, prec, and prec_str.
void initFields | ( | int | prec | ) |
Definition at line 101 of file blas_test.cu.
References checkCudaError, quda::ColorSpinorParam::composite_dim, quda::ColorSpinorParam::create, errorQuda, quda::ColorSpinorParam::fieldOrder, quda::ColorSpinorParam::gammaBasis, hH, quda::ColorSpinorParam::is_component, quda::ColorSpinorParam::is_composite, lH, mH, Msrc, Ncolor, quda::ColorSpinorParam::nColor, quda::LatticeFieldParam::nDim, Nspin, quda::ColorSpinorParam::nSpin, Nsrc, quda::LatticeFieldParam::pad, param, QUDA_DEGRAND_ROSSI_GAMMA_BASIS, QUDA_DIRECT_PC_SOLVE, QUDA_DIRECT_SOLVE, QUDA_DOUBLE_PRECISION, QUDA_EVEN_ODD_SITE_ORDER, QUDA_FULL_SITE_SUBSET, QUDA_HALF_PRECISION, QUDA_INVALID_PRECISION, QUDA_NORMOP_PC_SOLVE, QUDA_NORMOP_SOLVE, QUDA_PARITY_SITE_SUBSET, QUDA_QUARTER_PRECISION, QUDA_RANDOM_SOURCE, QUDA_SINGLE_PRECISION, QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, QUDA_UKQCD_GAMMA_BASIS, QUDA_ZERO_FIELD_CREATE, setPrec(), quda::ColorSpinorParam::setPrecision(), quda::ColorSpinorParam::siteOrder, quda::LatticeFieldParam::siteSubset, solve_type, tdim, vH, wH, quda::LatticeFieldParam::x, xdim, xH, ydim, yH, zdim, and zH.
Referenced by BlasTest::SetUp().
INSTANTIATE_TEST_SUITE_P | ( | QUDA | , |
BlasTest | , | ||
Combine(Range(0, 4), Range(0, Nkernels)) | , | ||
getblasname | |||
) |
int main | ( | int | argc, |
char ** | argv | ||
) |
Definition at line 957 of file blas_test.cu.
References comm_rank(), device, display_test_info(), dslash_type, endQuda(), finalizeComms(), gridsize_from_cmdline, initComms(), initQuda(), inv_type, Ncolor, Nspin, nvec, prec, printfQuda, process_command_line_option(), QUDA_ASQTAD_DSLASH, QUDA_INVALID_PRECISION, QUDA_MG_INVERTER, QUDA_STAGGERED_DSLASH, setSpinorSiteSize(), setVerbosity(), test_type, usage(), and verbosity.
void setPrec | ( | ColorSpinorParam & | param, |
const QudaPrecision | precision | ||
) |
Definition at line 48 of file blas_test.cu.
References quda::ColorSpinorParam::fieldOrder, Nspin, QUDA_DOUBLE_PRECISION, QUDA_FLOAT2_FIELD_ORDER, QUDA_FLOAT4_FIELD_ORDER, and quda::ColorSpinorParam::setPrecision().
Referenced by initFields().
bool skip_kernel | ( | int | precision, |
int | kernel | ||
) |
Definition at line 74 of file blas_test.cu.
References getPrecision(), Ncolor, Nprec, Nspin, prec, QUDA_INVALID_PRECISION, and test_type.
Referenced by TEST_P().
double test | ( | int | kernel | ) |
Definition at line 504 of file blas_test.cu.
References quda::abs(), quda::blas::ax(), quda::blas::axpby(), quda::blas::axpy(), quda::blas::axpyBzpcx(), quda::blas::axpyNorm(), quda::blas::axpyReDot(), quda::blas::axpyZpbx(), quda::blas::cabxpyAx(), quda::blas::cabxpyzAxNorm(), quda::blas::caxpby(), quda::blas::caxpbypzYmbw(), quda::blas::caxpbypzYmbwcDotProductUYNormY(), quda::blas::caxpy(), quda::blas::caxpyBxpz(), quda::blas::caxpyBzpx(), quda::blas::caxpyDotzy(), quda::blas::caxpyNorm(), quda::blas::caxpyXmaz(), quda::blas::caxpyXmazNormX(), quda::blas::cDotProduct(), quda::blas::cDotProductNormA(), quda::blas::cDotProductNormB(), quda::ColorSpinorField::Component(), quda::ColorSpinorField::Components(), quda::blas::copy(), quda::blas::cxpaypbz(), ERROR, errorQuda, quda::exp(), quda::blas::HeavyQuarkResidualNorm(), hH, lH, mH, Msrc, quda::blas::mxpy(), quda::blas::norm2(), Nsrc, quda::blas::reDotProduct(), quda::sqrt(), quda::blas::tripleCGReduction(), quda::blas::tripleCGUpdate(), vH, wH, xD, xH, quda::blas::xmyNorm(), quda::blas::xpay(), quda::blas::xpy(), quda::blas::xpyHeavyQuarkResidualNorm(), yD, yH, and zH.
Referenced by TEST_P().
TEST_P | ( | BlasTest | , |
verify | |||
) |
Definition at line 1030 of file blas_test.cu.
References prec, skip_kernel(), test(), and tol.
Definition at line 1044 of file blas_test.cu.
References benchmark(), quda::blas::bytes, quda::blas::flops, names, niter, prec, printfQuda, and skip_kernel().
void usage | ( | char ** | ) |
Definition at line 1783 of file test_util.cpp.
Referenced by main().
int device |
Definition at line 1602 of file test_util.cpp.
Referenced by comm_init_common(), quda::dslash::DslashPolicyTune< Dslash >::DslashPolicyTune(), main(), and setNumaAffinityNVML().
QudaDslashType dslash_type |
Definition at line 1621 of file test_util.cpp.
Referenced by main(), printQudaInvertParam(), and staggered_dslash().
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().
ColorSpinorField * hD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields().
ColorSpinorField * hH |
Definition at line 40 of file blas_test.cu.
Referenced by freeFields(), initFields(), and test().
QudaInverterType inv_type |
Definition at line 1640 of file test_util.cpp.
Referenced by main(), and printQudaInvertParam().
ColorSpinorField * lD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields().
ColorSpinorField * lH |
Definition at line 40 of file blas_test.cu.
Referenced by freeFields(), initFields(), and test().
ColorSpinorField * mD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields().
ColorSpinorField * mH |
Definition at line 40 of file blas_test.cu.
Referenced by freeFields(), initFields(), and test().
int Msrc |
Definition at line 1628 of file test_util.cpp.
Referenced by benchmark(), freeFields(), initFields(), process_command_line_option(), and test().
const char* names[] |
Definition at line 914 of file blas_test.cu.
Referenced by getblasname(), and TEST_P().
int Ncolor |
Definition at line 46 of file blas_test.cu.
Referenced by quda::MG::buildFreeVectors(), display_test_info(), initFields(), main(), quda::blas::multiBlas(), and skip_kernel().
int niter |
Definition at line 1629 of file test_util.cpp.
Referenced by benchmark(), and TEST_P().
const int Nkernels = 40 |
Definition at line 36 of file blas_test.cu.
Referenced by getblasname().
int Nprec = 4 |
Definition at line 72 of file blas_test.cu.
Referenced by skip_kernel().
int Nspin |
Definition at line 45 of file blas_test.cu.
Referenced by quda::MG::buildFreeVectors(), display_test_info(), initFields(), SpinorTexture< RegType, StoreType, N >::loadGhost(), main(), quda::blas::mixedMultiBlas(), quda::blas::mixedMultiReduce(), quda::blas::multiBlas(), quda::blas::multiReduce(), setPrec(), and skip_kernel().
int Nsrc |
Definition at line 1627 of file test_util.cpp.
Referenced by benchmark(), freeFields(), initFields(), and test().
int nvec[QUDA_MAX_MG_LEVEL] |
Definition at line 1637 of file test_util.cpp.
Referenced by quda::MPCG::computeMatrixPowers(), and main().
QudaPrecision prec |
Definition at line 1608 of file test_util.cpp.
Referenced by checkClover(), computeHISQLinksCPU(), display_test_info(), exchange_llfat_init(), gauge_force_reference_dir(), get_prec(), getblasname(), getdslashtestname(), getstaggereddslashtestname(), init(), llfat_reference(), loadCloverQuda(), main(), quda::TRLM::operator()(), saveGaugeQuda(), StaggeredDslashTest::SetUp(), DslashTest::SetUp(), skip_kernel(), quda::spinorNoise(), TEST_P(), and quda::MG::verify().
const char* prec_str[] = {"quarter", "half", "single", "double"} |
Definition at line 909 of file blas_test.cu.
Referenced by quda::DslashCoarsePolicyTune::DslashCoarsePolicyTune(), and getblasname().
QudaSolveType solve_type |
Definition at line 1663 of file test_util.cpp.
Referenced by initFields(), and printQudaInvertParam().
int tdim |
Definition at line 24 of file gauge_force_test.cpp.
Referenced by display_test_info(), and initFields().
int test_type |
Definition at line 1636 of file test_util.cpp.
Referenced by main(), and skip_kernel().
ColorSpinorField * vD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields().
QudaVerbosity verbosity |
Definition at line 1614 of file test_util.cpp.
Referenced by main(), printQudaInvertParam(), printQudaMultigridParam(), quda::TunableVectorYZ::resizeStep(), and setVerbosity().
ColorSpinorField * vH |
Definition at line 40 of file blas_test.cu.
Referenced by freeFields(), initFields(), and test().
ColorSpinorField * wD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields().
ColorSpinorField * wH |
Definition at line 40 of file blas_test.cu.
Referenced by freeFields(), initFields(), and test().
ColorSpinorField* xD |
Definition at line 41 of file blas_test.cu.
Referenced by quda::MG::buildFreeVectors(), freeFields(), and test().
int xdim |
Definition at line 1615 of file test_util.cpp.
Referenced by display_test_info(), and initFields().
ColorSpinorField* xH |
Definition at line 40 of file blas_test.cu.
Referenced by freeFields(), initFields(), and test().
ColorSpinorField * xmD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields().
std::vector<cpuColorSpinorField*> xmH |
Definition at line 42 of file blas_test.cu.
ColorSpinorField * yD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields(), and test().
int ydim |
Definition at line 1616 of file test_util.cpp.
Referenced by display_test_info(), and initFields().
ColorSpinorField * yH |
Definition at line 40 of file blas_test.cu.
Referenced by freeFields(), initFields(), and test().
ColorSpinorField * ymD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields().
std::vector<cpuColorSpinorField*> ymH |
Definition at line 43 of file blas_test.cu.
ColorSpinorField * zD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields().
int zdim |
Definition at line 1617 of file test_util.cpp.
Referenced by display_test_info(), and initFields().
ColorSpinorField * zH |
Definition at line 40 of file blas_test.cu.
Referenced by freeFields(), initFields(), and test().
ColorSpinorField * zmD |
Definition at line 41 of file blas_test.cu.
Referenced by freeFields().
std::vector<cpuColorSpinorField*> zmH |
Definition at line 44 of file blas_test.cu.