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

Method clblasPerfSingle

src/tests/performance/perf-scal.cpp:206–276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

204
205
206template <typename ElemType> nano_time_t
207ScalPerformanceTest<ElemType>::clblasPerfSingle(void)
208{
209 nano_time_t time;
210 cl_event event;
211 cl_int status;
212 cl_command_queue queue = base_->commandQueues()[0];
213 bool is_css_zds = (params_.K == 1)? true: false; // K indicates csscal/zdscal
214
215 status = clEnqueueWriteBuffer(queue, mobjX_, CL_TRUE, 0,
216 (lengthX + params_.offBX) * sizeof(ElemType), backX_, 0, NULL, &event);
217 if (status != CL_SUCCESS) {
218 cerr << "Matrix A buffer object enqueuing error, status = " <<
219 status << endl;
220
221 return NANOTIME_ERR;
222 }
223
224 status = clWaitForEvents(1, &event);
225 if (status != CL_SUCCESS) {
226 cout << "Wait on event failed, status = " <<
227 status << endl;
228
229 return NANOTIME_ERR;
230 }
231
232 event = NULL;
233 time = getCurrentTime();
234
235#define TIMING
236#ifdef TIMING
237 clFinish( queue);
238 int iter = 50;
239 for ( int i=1; i <= iter; i++)
240 {
241#endif
242
243 status = (cl_int)clMath::clblas::scal(is_css_zds, params_.N, alpha_, mobjX_, params_.offBX, params_.incx,
244 1, &queue, 0, NULL, &event);
245 if (status != CL_SUCCESS) {
246 cerr << "The CLBLAS SCAL function failed, status = " <<
247 status << endl;
248
249 return NANOTIME_ERR;
250 }
251#ifdef TIMING
252 } // iter loop
253 clFinish( queue);
254 time = getCurrentTime() - time;
255 time /= iter;
256#else
257
258 status = flushAll(1, &queue);
259 if (status != CL_SUCCESS) {
260 cerr << "clFlush() failed, status = " << status << endl;
261 return NANOTIME_ERR;
262 }
263

Callers

nothing calls this directly

Calls 4

commandQueuesMethod · 0.80
getCurrentTimeFunction · 0.50
flushAllFunction · 0.50
waitForSuccessfulFinishFunction · 0.50

Tested by

no test coverage detected