2727#include " test-limits.h"
2828#include " dis_warning.h"
2929
30+ #if defined ( _WIN32 ) || defined ( _WIN64 )
31+ #else
32+ #include " cblas.h"
33+ #endif
34+
3035#include " clBLAS.h"
3136#if defined(__APPLE__) || defined(__MACOSX)
3237#include < OpenCL/cl_ext.h>
@@ -77,6 +82,57 @@ randomScale()
7782 return t;
7883}
7984
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+
80136std::string
81137prettyPrintClStatus ( const cl_int& status )
82138{
@@ -269,7 +325,7 @@ class clblasFunc
269325 virtual ~clblasFunc ()
270326 {
271327 clblasTeardown ();
272-
328+
273329 for (unsigned int i = 0 ; i < numQueues; i++) {
274330 OPENCL_V_THROW ( clReleaseCommandQueue (queues_[i]), " releasing command queue" );
275331 }
@@ -278,36 +334,38 @@ class clblasFunc
278334
279335 void wait_and_check ()
280336 {
281- cl_int err;
337+ cl_int err;
282338 cl_int wait_status = clWaitForEvents (1 , &event_);
283339
284340 if ( wait_status != CL_SUCCESS )
285341 {
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,
289345 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;
291347 exit (1 );
292- }
348+ }
293349 else
294350 {
295- std::cout << " blas function wait status error: " << wait_status << std::endl;
351+ std::cout << " blas function wait status error: " << wait_status << std::endl;
296352 exit (1 );
297353 }
298354 }
299355 }
300356
301357 double time_in_ns ()
302358 {
303- StatisticalTimer& timer = StatisticalTimer::getInstance ( );
359+ StatisticalTimer& timer = StatisticalTimer::getInstance ( );
304360 return timer.getAverageTime ( timer_id ) * 1e9 ;
305361 }
306362
363+ virtual void validate_with_cblas (int v) {}
364+
307365 virtual void call_func () = 0;
308366 virtual double gflops () = 0;
309367 virtual std::string gflops_formula () = 0;
310- virtual void setup_apiCallCount (cl_uint apiCallCount){}
368+ virtual void setup_apiCallCount (cl_uint apiCallCount){}
311369 virtual void setup_buffer (int order_option, int side_option,
312370 int uplo_option, int diag_option, int
313371 transA_option, int transB_option,
@@ -317,20 +375,20 @@ class clblasFunc
317375 virtual void initialize_cpu_buffer () = 0;
318376 virtual void initialize_gpu_buffer () = 0;
319377 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,
328386 int uplo_option, int diag_option, int
329387 transA_option, int transB_option,
330388 size_t M, size_t N, size_t K, size_t lda,
331389 size_t ldb, size_t ldc, size_t offA, size_t offBX,
332390 size_t offCY, double alpha, double beta) = 0;
333- virtual void releaseGPUBuffer_deleteCPUBuffer ()=0;
391+ virtual void releaseGPUBuffer_deleteCPUBuffer ()=0;
334392 StatisticalTimer& timer;
335393 StatisticalTimer::sTimerID timer_id;
336394
@@ -347,7 +405,7 @@ class clblasFunc
347405 clblasOrder order_;
348406 cl_event event_;
349407 size_t maxMemAllocSize;
408+ int validate_;
350409}; // class clblasFunc
351410
352411#endif // ifndef CLBLAS_BENCHMARK_COMMON_HXX__
353-
0 commit comments