13 #if defined(QMP_COMMS) 15 #elif defined(MPI_COMMS) 20 #include <gtest/gtest.h> 45 extern void usage(
char **);
56 printfQuda(
"prec sloppy_prec S_dimension T_dimension Ls_dimension\n");
97 const char *
names[] = {
"OpenSpin",
"DegrandRossi"};
99 int main(
int argc,
char **argv)
104 for (
int i = 1; i < argc; i++) {
106 printf(
"ERROR: Invalid option:%s\n", argv[i]);
125 ::testing::InitGoogleTest(&argc, argv);
134 ::testing::TestEventListeners &listeners = ::testing::UnitTest::GetInstance()->listeners();
135 if (
comm_rank() != 0) {
delete listeners.Release(listeners.default_result_printer()); }
136 int result = RUN_ALL_TESTS();
137 if (result)
warningQuda(
"Google tests for QUDA contraction failed!");
154 void test(
int contractionType,
int Prec)
161 default:
errorQuda(
"Undefined QUDA precision type %d\n", Prec);
176 void *d_result = malloc(2 *
V * 16 * sSize);
180 ((
float *)spinorX)[i] = rand() / (float)RAND_MAX;
181 ((
float *)spinorY)[i] = rand() / (float)RAND_MAX;
185 ((
double *)spinorX)[i] = rand() / (double)RAND_MAX;
186 ((
double *)spinorY)[i] = rand() / (double)RAND_MAX;
197 switch (contractionType) {
200 default:
errorQuda(
"Undefined contraction type %d\n", contractionType);
204 contractQuda(spinorX, spinorY, d_result, cType, &inv_param, X);
218 EXPECT_LE(faults, 0) <<
"CPU and GPU implementations do not agree";
226 using ::testing::Bool;
227 using ::testing::Combine;
228 using ::testing::Range;
229 using ::testing::TestWithParam;
230 using ::testing::Values;
240 virtual void SetUp() { param = GetParam(); }
246 int prec = ::testing::get<0>(GetParam());
247 int contractionType = ::testing::get<1>(GetParam());
248 test(contractionType, prec);
254 int prec = ::testing::get<0>(
param.param);
255 int contractType = ::testing::get<1>(
param.param);
256 std::string str(
names[contractType]);
257 str += std::string(
"_");
int dimPartitioned(int dim)
QudaDiracFieldOrder dirac_order
TEST_P(ContractionTest, verify)
enum QudaPrecision_s QudaPrecision
QudaPrecision & cuda_prec
int process_command_line_option(int argc, char **argv, int *idx)
void setInvertParam(QudaInvertParam &inv_param)
const char * get_contract_str(QudaContractType type)
QudaPrecision prec_sloppy
const char * get_prec_str(QudaPrecision prec)
QudaPrecision prec_precondition
QudaPrecision & cuda_prec_precondition
QudaFieldLocation input_location
QudaPrecision & cuda_prec_sloppy
void initQuda(int device)
QudaFieldLocation output_location
int gridsize_from_cmdline[]
QudaInvertParam inv_param
void test(int contractionType, int Prec)
void setTransferGPU(bool)
INSTANTIATE_TEST_SUITE_P(QUDA, ContractionTest, Combine(Range(0, 2), Range(0, NcontractType)), getContractName)
int contraction_reference(Float *spinorX, Float *spinorY, Float *d_result, QudaContractType cType, int X[])
virtual ~ContractionTest()
QudaPrecision cuda_prec_sloppy
void setSpinorSiteSize(int n)
QudaInvertParam newQudaInvertParam(void)
QudaContractType contract_type
QudaGammaBasis gamma_basis
QudaPrecision cuda_prec_precondition
::testing::tuple< int, int > param
void contractQuda(const ColorSpinorField &x, const ColorSpinorField &y, void *result, QudaContractType cType)
Main header file for the QUDA library.
int main(int argc, char **argv)
enum QudaContractType_s QudaContractType
void initComms(int argc, char **argv, int *const commDims)
std::string getContractName(testing::TestParamInfo<::testing::tuple< int, int >> param)
QudaPreserveSource preserve_source