mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-23 10:09:36 +08:00
38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
#define EIGEN_USE_SYCL
|
|
|
|
#include <SYCL/sycl.hpp>
|
|
#include <iostream>
|
|
|
|
#include "tensor_benchmarks.h"
|
|
|
|
using Eigen::array;
|
|
using Eigen::SyclDevice;
|
|
using Eigen::Tensor;
|
|
using Eigen::TensorMap;
|
|
// Simple functions
|
|
template <typename device_selector>
|
|
cl::sycl::queue sycl_queue() {
|
|
return cl::sycl::queue(device_selector(), [=](cl::sycl::exception_list l) {
|
|
for (const auto& e : l) {
|
|
try {
|
|
std::rethrow_exception(e);
|
|
} catch (cl::sycl::exception e) {
|
|
std::cout << e.what() << std::endl;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
#define BM_FuncGPU(FUNC) \
|
|
static void BM_##FUNC(int iters, int N) { \
|
|
StopBenchmarkTiming(); \
|
|
cl::sycl::queue q = sycl_queue<cl::sycl::gpu_selector>(); \
|
|
Eigen::SyclDevice device(q); \
|
|
BenchmarkSuite<Eigen::SyclDevice, float> suite(device, N); \
|
|
suite.FUNC(iters); \
|
|
} \
|
|
BENCHMARK_RANGE(BM_##FUNC, 10, 5000);
|
|
|
|
BM_FuncGPU(broadcasting);
|
|
BM_FuncGPU(coeffWiseOp);
|