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

Function gemm2CorrectnessTest

src/tests/correctness/corr-gemm2.cpp:70–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

68
69template <typename T>
70void
71gemm2CorrectnessTest(TestParams *params)
72{
73 cl_int err;
74 T *A, *B, *blasC, *clblasC;
75 T alpha, beta;
76 cl_mem bufA, bufB, bufC;
77 clMath::BlasBase *base;
78 bool useAlpha;
79 bool useBeta;
80 cl_event *events;
81
82 base = clMath::BlasBase::getInstance();
83 useAlpha = base->useAlpha();
84 useBeta = base->useBeta();
85 alpha = ZERO<T>();
86 beta = ZERO<T>();
87
88 if ((typeid(T) == typeid(cl_double) ||
89 typeid(T) == typeid(DoubleComplex)) &&
90 !base->isDevSupportDoublePrecision()) {
91
92 std::cerr << ">> WARNING: The target device doesn't support native "
93 "double precision floating point arithmetic" <<
94 std::endl << ">> Test skipped" << std::endl;
95 SUCCEED();
96 return;
97 }
98
99 events = new cl_event[params->numCommandQueues];
100 memset(events, 0, params->numCommandQueues * sizeof(cl_event));
101
102 A = new T[params->rowsA * params->columnsA];
103 B = new T[params->rowsB * params->columnsB];
104 blasC = new T[params->rowsC * params->columnsC];
105 clblasC = new T[params->rowsC * params->columnsC];
106
107 if((A == NULL) || (B == NULL) || (blasC == NULL) || (clblasC == NULL))
108 {
109 ::std::cerr << "Cannot allocate memory on host side\n" << "!!!!!!!!!!!!Test skipped.!!!!!!!!!!!!" << ::std::endl;
110 deleteBuffers(A, B, blasC, clblasC);
111 SUCCEED();
112 return;
113 }
114
115 srand(params->seed);
116 if (useAlpha) {
117 alpha = convertMultiplier<T>(params->alpha);
118 }
119 if (useBeta) {
120 beta = convertMultiplier<T>(params->beta);
121 }
122
123 randomGemmMatrices<T>(params->order, params->transA, params->transB,
124 params->M, params->N, params->K, useAlpha, &alpha, A, params->lda,
125 B, params->ldb, useBeta, &beta, blasC, params->ldc);
126 memcpy(clblasC, blasC, params->rowsC * params->columnsC * sizeof(*blasC));
127

Callers

nothing calls this directly

Calls 12

printTestParamsFunction · 0.85
useAlphaMethod · 0.80
useBetaMethod · 0.80
createEnqueueBufferMethod · 0.80
commandQueuesMethod · 0.80
alphaMethod · 0.80
betaMethod · 0.80
deleteBuffersFunction · 0.70
releaseMemObjectsFunction · 0.70
gemmFunction · 0.50
waitForSuccessfulFinishFunction · 0.50

Tested by

no test coverage detected