• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef TEST_TRANS_OPENCL_HH
2 #define TEST_TRANS_OPENCL_HH
3 #include "test_opencl.hpp"
4 
5 
6 template <class T, class F, int number_of_tests, int max_dimension>
7 class bench_trans
8 {
9 public:
10 
11   typedef test_opencl<T, F> test;
12 
run()13   void run()
14   {
15 	opencl::library lib;
16 	int passedOperations = 0;
17 	// get default device and setup context
18 	compute::device device = compute::system::default_device();
19 	compute::context context(device);
20 	compute::command_queue queue(context, device);
21 
22 	std::srand(time(0));
23 
24 	ublas::matrix<T, F> a;
25 	ublas::matrix<T, F> resultUBLAS;
26 	ublas::matrix<T, F> resultOPENCL;
27 
28 
29 	for (int i = 0; i<number_of_tests; i++)
30 	{
31 	  int rowsA = std::rand() % max_dimension + 1;
32 	  int colsA = std::rand() % max_dimension + 1;
33 
34 	  a.resize(rowsA, colsA);
35 
36 	  test::init_matrix(a, 200);
37 
38 	  resultUBLAS = ublas::trans(a);
39 	  resultOPENCL = opencl::trans(a, queue);
40 
41 
42 	  if (!test::compare(resultUBLAS, resultOPENCL))
43 	  {
44 		std::cout << "Error in calculations" << std::endl;
45 
46 		std::cout << "passed: " << passedOperations << std::endl;
47 		return;
48 	  }
49 
50 	  passedOperations++;
51 
52 	}
53 	std::cout << "All is well (matrix opencl prod) of " << typeid(T).name() << std::endl;
54 
55 
56 
57   }
58 
59 };
60 
61 #endif