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()14cl::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