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

Function spr2CorrectnessTest

src/tests/correctness/corr-spr2.cpp:63–191  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61
62template <typename T>
63void
64spr2CorrectnessTest(TestParams *params)
65{
66 cl_int err;
67 T *blasAP, *clblasAP, *X, *Y;
68 cl_mem bufAP, bufX, bufY;
69 clMath::BlasBase *base;
70 cl_event *events;
71 bool useAlpha;
72 T alpha;
73
74 base = clMath::BlasBase::getInstance();
75
76 if ((typeid(T) == typeid(cl_double)) &&
77 !base->isDevSupportDoublePrecision()) {
78
79 std::cerr << ">> WARNING: The target device doesn't support native "
80 "double precision floating point arithmetic" <<
81 std::endl << ">> Test skipped" << std::endl;
82 SUCCEED();
83 return;
84 }
85
86 printf("number of command queues : %d\n\n", params->numCommandQueues);
87
88 events = new cl_event[params->numCommandQueues];
89 memset(events, 0, params->numCommandQueues * sizeof(cl_event));
90
91 size_t lengthAP = (params->N *( params->N + 1 ))/2 ;
92 size_t lengthX = (1 + ((params->N - 1) * abs(params->incx)));
93 size_t lengthY = (1 + ((params->N - 1) * abs(params->incy)));
94
95 blasAP = new T[lengthAP + params->offa ];
96 clblasAP = new T[lengthAP + params->offa ];
97 X = new T[lengthX + params->offBX ];
98 Y = new T[lengthY + params->offCY ];
99
100 srand(params->seed);
101
102 if((blasAP == NULL) || (clblasAP == NULL) || (X == NULL) || (Y == NULL))
103 {
104 deleteBuffers<T>(blasAP, clblasAP, X, Y);
105 ::std::cerr << "Cannot allocate memory on host side\n" << "!!!!!!!!!!!!Test skipped.!!!!!!!!!!!!" << ::std::endl;
106 delete[] events;
107 SUCCEED();
108 return;
109 }
110
111 alpha = convertMultiplier<T>(params->alpha);
112 useAlpha = true;
113
114 randomSyr2Matrices<T>(params->order, params->uplo, params->N, useAlpha, &alpha, (blasAP + params->offa), params->lda,
115 (X + params->offBX), params->incx, (Y + params->offCY), params->incy);
116
117 // Copy blasAP to clblasAP
118 memcpy(clblasAP, blasAP, (lengthAP + params->offa)* sizeof(*blasAP));
119
120 // Allocate buffers

Callers

nothing calls this directly

Calls 5

createEnqueueBufferMethod · 0.80
commandQueuesMethod · 0.80
releaseMemObjectsFunction · 0.70
waitForSuccessfulFinishFunction · 0.50

Tested by

no test coverage detected