• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #define EIGEN_USE_SYCL
2 
3 #include <SYCL/sycl.hpp>
4 #include <iostream>
5 
6 #include "tensor_benchmarks.h"
7 
8 using Eigen::array;
9 using Eigen::SyclDevice;
10 using Eigen::Tensor;
11 using Eigen::TensorMap;
12 // Simple functions
13 template <typename device_selector>
sycl_queue()14 cl::sycl::queue sycl_queue() {
15   return cl::sycl::queue(device_selector(), [=](cl::sycl::exception_list l) {
16     for (const auto& e : l) {
17       try {
18         std::rethrow_exception(e);
19       } catch (cl::sycl::exception e) {
20         std::cout << e.what() << std::endl;
21       }
22     }
23   });
24 }
25 
26 #define BM_FuncGPU(FUNC)                                       \
27   static void BM_##FUNC(int iters, int N) {                    \
28     StopBenchmarkTiming();                                     \
29     cl::sycl::queue q = sycl_queue<cl::sycl::gpu_selector>();  \
30     Eigen::SyclDevice device(q);                               \
31     BenchmarkSuite<Eigen::SyclDevice, float> suite(device, N); \
32     suite.FUNC(iters);                                         \
33   }                                                            \
34   BENCHMARK_RANGE(BM_##FUNC, 10, 5000);
35 
36 BM_FuncGPU(broadcasting);
37 BM_FuncGPU(coeffWiseOp);
38