27
27
#include " test-limits.h"
28
28
#include " dis_warning.h"
29
29
30
+ #if defined ( _WIN32 ) || defined ( _WIN64 )
31
+ #else
32
+ #include " cblas.h"
33
+ #endif
34
+
30
35
#include " clBLAS.h"
31
36
#if defined(__APPLE__) || defined(__MACOSX)
32
37
#include < OpenCL/cl_ext.h>
@@ -77,6 +82,57 @@ randomScale()
77
82
return t;
78
83
}
79
84
85
+ #if defined ( _WIN32 ) || defined ( _WIN64 )
86
+ #else
87
+
88
+ CBLAS_ORDER
89
+ clblasToCblas_order (clblasOrder value)
90
+ {
91
+ switch (value) {
92
+ case clblasRowMajor: return CblasRowMajor;
93
+ case clblasColumnMajor: return CblasColMajor;
94
+ }
95
+ }
96
+
97
+ CBLAS_TRANSPOSE
98
+ clblasToCblas_operation (clblasTranspose value)
99
+ {
100
+ switch (value) {
101
+ case clblasNoTrans: return CblasNoTrans;
102
+ case clblasTrans: return CblasTrans;
103
+ case clblasConjTrans: return CblasConjTrans;
104
+ }
105
+ }
106
+
107
+ CBLAS_UPLO
108
+ clblasToCblas_fill (clblasUplo value)
109
+ {
110
+ switch (value) {
111
+ case clblasUpper: return CblasUpper;
112
+ case clblasLower: return CblasLower;
113
+ }
114
+ }
115
+
116
+ CBLAS_SIDE
117
+ clblasToCblas_side (clblasSide value)
118
+ {
119
+ switch (value) {
120
+ case clblasLeft: return CblasLeft;
121
+ case clblasRight: return CblasRight;
122
+ }
123
+ }
124
+
125
+ CBLAS_DIAG
126
+ clblasToCblas_diag (clblasDiag value)
127
+ {
128
+ switch (value) {
129
+ case clblasNonUnit: return CblasNonUnit;
130
+ case clblasUnit: return CblasUnit;
131
+ }
132
+ }
133
+
134
+ #endif
135
+
80
136
std::string
81
137
prettyPrintClStatus ( const cl_int& status )
82
138
{
@@ -269,7 +325,7 @@ class clblasFunc
269
325
virtual ~clblasFunc ()
270
326
{
271
327
clblasTeardown ();
272
-
328
+
273
329
for (unsigned int i = 0 ; i < numQueues; i++) {
274
330
OPENCL_V_THROW ( clReleaseCommandQueue (queues_[i]), " releasing command queue" );
275
331
}
@@ -278,36 +334,38 @@ class clblasFunc
278
334
279
335
void wait_and_check ()
280
336
{
281
- cl_int err;
337
+ cl_int err;
282
338
cl_int wait_status = clWaitForEvents (1 , &event_);
283
339
284
340
if ( wait_status != CL_SUCCESS )
285
341
{
286
- if ( wait_status == CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST )
287
- {
288
- clGetEventInfo ( event_, CL_EVENT_COMMAND_EXECUTION_STATUS,
342
+ if ( wait_status == CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST )
343
+ {
344
+ clGetEventInfo ( event_, CL_EVENT_COMMAND_EXECUTION_STATUS,
289
345
sizeof (cl_int), &err, NULL );
290
- std::cout << " blas function execution status error: " << err << std::endl;
346
+ std::cout << " blas function execution status error: " << err << std::endl;
291
347
exit (1 );
292
- }
348
+ }
293
349
else
294
350
{
295
- std::cout << " blas function wait status error: " << wait_status << std::endl;
351
+ std::cout << " blas function wait status error: " << wait_status << std::endl;
296
352
exit (1 );
297
353
}
298
354
}
299
355
}
300
356
301
357
double time_in_ns ()
302
358
{
303
- StatisticalTimer& timer = StatisticalTimer::getInstance ( );
359
+ StatisticalTimer& timer = StatisticalTimer::getInstance ( );
304
360
return timer.getAverageTime ( timer_id ) * 1e9 ;
305
361
}
306
362
363
+ virtual void validate_with_cblas (int v) {}
364
+
307
365
virtual void call_func () = 0;
308
366
virtual double gflops () = 0;
309
367
virtual std::string gflops_formula () = 0;
310
- virtual void setup_apiCallCount (cl_uint apiCallCount){}
368
+ virtual void setup_apiCallCount (cl_uint apiCallCount){}
311
369
virtual void setup_buffer (int order_option, int side_option,
312
370
int uplo_option, int diag_option, int
313
371
transA_option, int transB_option,
@@ -317,20 +375,20 @@ class clblasFunc
317
375
virtual void initialize_cpu_buffer () = 0;
318
376
virtual void initialize_gpu_buffer () = 0;
319
377
virtual void reset_gpu_write_buffer () = 0;
320
- virtual void read_gpu_buffer () = 0;
321
- virtual void roundtrip_func () = 0;
322
- virtual void roundtrip_func_rect () {}
323
- virtual void allochostptr_roundtrip_func () {}
324
- virtual void usehostptr_roundtrip_func () {}
325
- virtual void copyhostptr_roundtrip_func () {}
326
- virtual void usepersismem_roundtrip_func () {}
327
- virtual void roundtrip_setup_buffer (int order_option, int side_option,
378
+ virtual void read_gpu_buffer () = 0;
379
+ virtual void roundtrip_func () = 0;
380
+ virtual void roundtrip_func_rect () {}
381
+ virtual void allochostptr_roundtrip_func () {}
382
+ virtual void usehostptr_roundtrip_func () {}
383
+ virtual void copyhostptr_roundtrip_func () {}
384
+ virtual void usepersismem_roundtrip_func () {}
385
+ virtual void roundtrip_setup_buffer (int order_option, int side_option,
328
386
int uplo_option, int diag_option, int
329
387
transA_option, int transB_option,
330
388
size_t M, size_t N, size_t K, size_t lda,
331
389
size_t ldb, size_t ldc, size_t offA, size_t offBX,
332
390
size_t offCY, double alpha, double beta) = 0;
333
- virtual void releaseGPUBuffer_deleteCPUBuffer ()=0;
391
+ virtual void releaseGPUBuffer_deleteCPUBuffer ()=0;
334
392
StatisticalTimer& timer;
335
393
StatisticalTimer::sTimerID timer_id;
336
394
@@ -347,7 +405,7 @@ class clblasFunc
347
405
clblasOrder order_;
348
406
cl_event event_;
349
407
size_t maxMemAllocSize;
408
+ int validate_;
350
409
}; // class clblasFunc
351
410
352
411
#endif // ifndef CLBLAS_BENCHMARK_COMMON_HXX__
353
-
0 commit comments