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

Function asumCorrectnessTest

src/tests/correctness/corr-asum.cpp:65–181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63
64template <typename T1, typename T2>
65void
66asumCorrectnessTest(TestParams *params)
67{
68 cl_int err;
69 T1 *blasX;
70 T2 *clblasAsum, *blasAsum;
71 cl_mem bufX, bufAsum, scratchBuff;
72 clMath::BlasBase *base;
73 cl_event *events;
74
75 base = clMath::BlasBase::getInstance();
76
77 if ((typeid(T1) == typeid(cl_double) ||
78 typeid(T1) == typeid(DoubleComplex)) &&
79 !base->isDevSupportDoublePrecision()) {
80
81 std::cerr << ">> WARNING: The target device doesn't support native "
82 "double precision floating point arithmetic" <<
83 std::endl << ">> Test skipped" << std::endl;
84 SUCCEED();
85 return;
86 }
87
88 printf("number of command queues : %d\n\n", params->numCommandQueues);
89
90 events = new cl_event[params->numCommandQueues];
91 memset(events, 0, params->numCommandQueues * sizeof(cl_event));
92
93 size_t lengthX = (1 + ((params->N -1) * abs(params->incx)));
94
95 blasX = new T1[lengthX + params->offBX ];
96 blasAsum = new T2[1];
97 clblasAsum = new T2[1 + params->offa];
98
99 if((blasX == NULL) || (clblasAsum == NULL) || (blasAsum == NULL))
100 {
101 ::std::cerr << "Cannot allocate memory on host side\n" << "!!!!!!!!!!!!Test skipped.!!!!!!!!!!!!" << ::std::endl;
102 deleteBuffers<T1>(blasX);
103 deleteBuffers<T2>(blasAsum, clblasAsum);
104 delete[] events;
105 SUCCEED();
106 return;
107 }
108
109 srand(params->seed);
110
111 randomVectors<T1>(params->N, (blasX + params->offBX), params->incx, (T1*)NULL, 0, true);
112
113 // Allocate buffers
114 bufX = base->createEnqueueBuffer(blasX, (lengthX + params->offBX)* sizeof(*blasX), 0, CL_MEM_READ_WRITE);
115 bufAsum = base->createEnqueueBuffer(NULL, (1 + params->offa) * sizeof(T2), 0, CL_MEM_READ_WRITE);
116 scratchBuff = base->createEnqueueBuffer(NULL, (lengthX * sizeof(T1)), 0, CL_MEM_READ_WRITE);
117
118 *blasAsum = ::clMath::blas::asum( params->N, blasX, params->offBX, params->incx);
119
120 if ((bufX == NULL) || (bufAsum == NULL) || (scratchBuff == NULL)) {
121 releaseMemObjects(bufX, bufAsum, scratchBuff);
122 deleteBuffers<T1>(blasX);

Callers

nothing calls this directly

Calls 6

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

Tested by

no test coverage detected