MCPcopy Create free account
hub / github.com/clMathLibraries/clBLAS / hemvCorrectnessTest

Function hemvCorrectnessTest

src/tests/correctness/corr-hemv.cpp:79–239  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77*/
78template <typename T>
79void
80hemvCorrectnessTest(TestParams *params)
81{
82 cl_int err;
83 T *A, *X, *blasY, *clblasY;
84 cl_mem bufA, bufX, bufY;
85 clMath::BlasBase *base;
86 cl_event *events;
87 T alpha, beta;
88
89 base = clMath::BlasBase::getInstance();
90
91 if ((typeid(T) == typeid(DoubleComplex)) &&
92 !base->isDevSupportDoublePrecision()) {
93
94 std::cerr << ">> WARNING: The target device doesn't support native "
95 "double precision floating point arithmetic" <<
96 std::endl << ">> Test skipped" << std::endl;
97 SUCCEED();
98 return;
99 }
100
101 printf("number of command queues : %d\n\n", params->numCommandQueues);
102
103 events = new cl_event[params->numCommandQueues];
104 memset(events, 0, params->numCommandQueues * sizeof(cl_event));
105
106 size_t lengthA = params->N * params->lda;
107 size_t lengthX = (1 + ((params->N -1) * abs(params->incx)));
108 size_t lengthY = (1 + ((params->N -1) * abs(params->incy)));
109
110 A = new T[lengthA + params->offA ];
111 X = new T[lengthX + params->offBX ];
112 blasY = new T[lengthY + params->offCY ];
113 clblasY = new T[lengthY + params->offCY ];
114
115 srand(params->seed);
116
117 if((A == NULL) || (X == NULL) || (blasY == NULL) || (clblasY == NULL))
118 {
119 deleteBuffers<T>(A, X, blasY, clblasY);
120 ::std::cerr << "Cannot allocate memory on host side\n" << "!!!!!!!!!!!!Test skipped.!!!!!!!!!!!!" << ::std::endl;
121 delete[] events;
122 SUCCEED();
123 return;
124 }
125
126 alpha = convertMultiplier<T>(params->alpha);
127 beta = convertMultiplier<T>(params->beta);
128// beta.s[0] = 0.0f;
129// beta.s[1] = 0.0f;
130
131 randomHemvMatrices(params->order, params->uplo, params->N, true, &alpha, (A + params->offA), params->lda,
132 (X + params->offBX), params->incx, true, &beta, (blasY + params->offCY), params->incy);
133 // Copy blasY to clblasY
134 memcpy(clblasY, blasY, (lengthY + params->offCY)* sizeof(*blasY));
135 /*
136 printf("\n\n before acml call\nA\n");

Callers

nothing calls this directly

Calls 8

randomHemvMatricesFunction · 0.85
doConjugateFunction · 0.85
printTestParamsFunction · 0.85
createEnqueueBufferMethod · 0.80
commandQueuesMethod · 0.80
releaseMemObjectsFunction · 0.70
waitForSuccessfulFinishFunction · 0.50

Tested by

no test coverage detected