|
template<typename T > |
T | SYCL::abs (T x) |
|
template<> |
Eigen::half | SYCL::abs (Eigen::half x) |
|
template<> |
float | SYCL::abs (float x) |
|
template<> |
double | SYCL::abs (double x) |
|
template<typename T > |
T | SYCL::square (T x) |
|
template<typename T > |
T | SYCL::cube (T x) |
|
template<typename T > |
T | SYCL::inverse (T x) |
|
template<typename T > |
T | SYCL::cwiseMax (T x, T y) |
|
template<> |
Eigen::half | SYCL::cwiseMax (Eigen::half x, Eigen::half y) |
|
template<typename T > |
T | SYCL::cwiseMin (T x, T y) |
|
template<> |
Eigen::half | SYCL::cwiseMin (Eigen::half x, Eigen::half y) |
|
template<typename T > |
T | SYCL::sqrt (T x) |
|
template<> |
Eigen::half | SYCL::sqrt (Eigen::half x) |
|
template<typename T > |
T | SYCL::rsqrt (T x) |
|
template<> |
Eigen::half | SYCL::rsqrt (Eigen::half x) |
|
template<typename T > |
T | SYCL::tanh (T x) |
|
template<> |
Eigen::half | SYCL::tanh (Eigen::half x) |
|
template<typename T > |
T | SYCL::exp (T x) |
|
template<> |
Eigen::half | SYCL::exp (Eigen::half x) |
|
template<typename T > |
T | SYCL::expm1 (T x) |
|
template<> |
Eigen::half | SYCL::expm1 (Eigen::half x) |
|
template<typename T > |
T | SYCL::log (T x) |
|
template<> |
Eigen::half | SYCL::log (Eigen::half x) |
|
template<typename T > |
T | SYCL::ceil (T x) |
|
template<> |
Eigen::half | SYCL::ceil (Eigen::half x) |
|
template<typename T > |
T | SYCL::floor (T x) |
|
template<> |
Eigen::half | SYCL::floor (Eigen::half x) |
|
template<typename T > |
T | SYCL::round (T x) |
|
template<> |
Eigen::half | SYCL::round (Eigen::half x) |
|
template<typename T > |
T | SYCL::log1p (T x) |
|
template<> |
Eigen::half | SYCL::log1p (Eigen::half x) |
|
template<typename T > |
T | SYCL::sign (T x) |
|
template<> |
Eigen::half | SYCL::sign (Eigen::half x) |
|
template<typename T > |
T | SYCL::isnan (T x) |
|
template<> |
Eigen::half | SYCL::isnan (Eigen::half x) |
|
template<typename T > |
T | SYCL::isfinite (T x) |
|
template<> |
Eigen::half | SYCL::isfinite (Eigen::half x) |
|
template<typename T > |
T | SYCL::isinf (T x) |
|
template<> |
Eigen::half | SYCL::isinf (Eigen::half x) |
|
template<typename DataType , int DataLayout, typename Assignment , typename Operator > |
void | test_unary_builtins_for_scalar (const Eigen::SyclDevice &sycl_device, const array< int64_t, 3 > &tensor_range) |
|
template<typename DataType , int DataLayout, typename Assignment > |
void | test_unary_builtins_for_assignement (const Eigen::SyclDevice &sycl_device, const array< int64_t, 3 > &tensor_range) |
|
template<typename DataType , int DataLayout, typename Operator > |
void | test_unary_builtins_return_bool (const Eigen::SyclDevice &sycl_device, const array< int64_t, 3 > &tensor_range) |
|
template<typename DataType , int DataLayout> |
void | test_unary_builtins (const Eigen::SyclDevice &sycl_device, const array< int64_t, 3 > &tensor_range) |
|
template<typename DataType > |
static void | test_builtin_unary_sycl (const Eigen::SyclDevice &sycl_device) |
|
template<typename DataType , int DataLayout, typename Operator > |
void | test_binary_builtins_func (const Eigen::SyclDevice &sycl_device, const array< int64_t, 3 > &tensor_range) |
|
template<typename DataType , int DataLayout, typename Operator > |
void | test_binary_builtins_fixed_arg2 (const Eigen::SyclDevice &sycl_device, const array< int64_t, 3 > &tensor_range) |
|
template<typename DataType , int DataLayout> |
void | test_binary_builtins (const Eigen::SyclDevice &sycl_device, const array< int64_t, 3 > &tensor_range) |
|
template<typename DataType > |
static void | test_floating_builtin_binary_sycl (const Eigen::SyclDevice &sycl_device) |
|
template<typename DataType > |
static void | test_integer_builtin_binary_sycl (const Eigen::SyclDevice &sycl_device) |
|
| EIGEN_DECLARE_TEST (cxx11_tensor_builtins_sycl) |
|
template<typename DataType , int DataLayout, typename Operator >
void test_binary_builtins_fixed_arg2 |
( |
const Eigen::SyclDevice & |
sycl_device, |
|
|
const array< int64_t, 3 > & |
tensor_range |
|
) |
| |
424 const DataType arg2(2);
427 in_1 = in_1.random();
429 DataType* gpu_data_1 =
static_cast<DataType*
>(sycl_device.allocate(in_1.size() *
sizeof(DataType)));
430 DataType* gpu_data_out =
static_cast<DataType*
>(sycl_device.allocate(
out.size() *
sizeof(DataType)));
433 sycl_device.memcpyHostToDevice(gpu_data_1, in_1.data(), (in_1.size()) *
sizeof(DataType));
434 gpu_out.device(sycl_device) =
op(gpu_1, arg2);
435 sycl_device.memcpyDeviceToHost(
out.data(), gpu_data_out, (
out.size()) *
sizeof(DataType));
439 sycl_device.deallocate(gpu_data_1);
440 sycl_device.deallocate(gpu_data_out);
int i
Definition: BiCGSTAB_step_by_step.cpp:9
The tensor class.
Definition: Tensor.h:68
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
char char * op
Definition: level2_impl.h:374
std::int64_t int64_t
Definition: Meta.h:43
std::ofstream out("Result.txt")
References Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::data(), Eigen::TensorBase< Derived, AccessLevel >::device(), i, op, out(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::size(), and VERIFY_IS_APPROX.
template<typename DataType , int DataLayout, typename Operator >
void test_binary_builtins_func |
( |
const Eigen::SyclDevice & |
sycl_device, |
|
|
const array< int64_t, 3 > & |
tensor_range |
|
) |
| |
399 in_1 = in_1.random() + DataType(0.01);
400 in_2 = in_2.random() + DataType(0.01);
402 DataType* gpu_data_1 =
static_cast<DataType*
>(sycl_device.allocate(in_1.size() *
sizeof(DataType)));
403 DataType* gpu_data_2 =
static_cast<DataType*
>(sycl_device.allocate(in_2.size() *
sizeof(DataType)));
404 DataType* gpu_data_out =
static_cast<DataType*
>(sycl_device.allocate(
out.size() *
sizeof(DataType)));
408 sycl_device.memcpyHostToDevice(gpu_data_1, in_1.data(), (in_1.size()) *
sizeof(DataType));
409 sycl_device.memcpyHostToDevice(gpu_data_2, in_2.data(), (in_2.size()) *
sizeof(DataType));
410 gpu_out.device(sycl_device) =
op(gpu_1, gpu_2);
411 sycl_device.memcpyDeviceToHost(
out.data(), gpu_data_out, (
out.size()) *
sizeof(DataType));
415 sycl_device.deallocate(gpu_data_1);
416 sycl_device.deallocate(gpu_data_2);
417 sycl_device.deallocate(gpu_data_out);
References Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::data(), Eigen::TensorBase< Derived, AccessLevel >::device(), i, op, out(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::size(), and VERIFY_IS_APPROX.
template<typename DataType , int DataLayout, typename Assignment >
void test_unary_builtins_for_assignement |
( |
const Eigen::SyclDevice & |
sycl_device, |
|
|
const array< int64_t, 3 > & |
tensor_range |
|
) |
| |
332 #define RUN_UNARY_TEST(FUNC) \
333 test_unary_builtins_for_scalar<DataType, DataLayout, Assignment, op_##FUNC>(sycl_device, tensor_range)
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
#define RUN_UNARY_TEST(FUNC)
void inverse(const MatrixType &m)
Definition: inverse.cpp:64
Eigen::half log1p(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:167
T cube(T x)
Definition: cxx11_tensor_builtins_sycl.cpp:56
Eigen::half floor(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:149
Eigen::half tanh(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:104
Eigen::half round(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:158
T square(T x)
Definition: cxx11_tensor_builtins_sycl.cpp:52
Eigen::half sign(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:176
Eigen::half rsqrt(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:95
Eigen::half exp(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:113
Eigen::half ceil(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:140
Eigen::half expm1(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:122
Eigen::half log(Eigen::half x)
Definition: cxx11_tensor_builtins_sycl.cpp:131
References abs(), SYCL::ceil(), SYCL::cube(), SYCL::exp(), SYCL::expm1(), SYCL::floor(), inverse(), SYCL::log(), SYCL::log1p(), SYCL::round(), SYCL::rsqrt(), RUN_UNARY_TEST, SYCL::sign(), sqrt(), SYCL::square(), and SYCL::tanh().
template<typename DataType , int DataLayout, typename Assignment , typename Operator >
void test_unary_builtins_for_scalar |
( |
const Eigen::SyclDevice & |
sycl_device, |
|
|
const array< int64_t, 3 > & |
tensor_range |
|
) |
| |
262 in = in.random() + DataType(0.01);
263 out =
out.random() + DataType(0.01);
265 DataType* gpu_data =
static_cast<DataType*
>(sycl_device.allocate(in.size() *
sizeof(DataType)));
266 DataType* gpu_data_out =
static_cast<DataType*
>(sycl_device.allocate(
out.size() *
sizeof(DataType)));
269 sycl_device.memcpyHostToDevice(gpu_data, in.data(), (in.size()) *
sizeof(DataType));
270 sycl_device.memcpyHostToDevice(gpu_data_out,
out.data(), (
out.size()) *
sizeof(DataType));
271 auto device_expr = gpu_out.device(sycl_device);
272 asgn(device_expr,
op(
gpu));
273 sycl_device.memcpyDeviceToHost(
out.data(), gpu_data_out, (
out.size()) *
sizeof(DataType));
275 DataType ver = reference(
i);
276 asgn(ver,
op(in(
i)));
279 sycl_device.deallocate(gpu_data);
280 sycl_device.deallocate(gpu_data_out);
286 out =
out.random() + DataType(1);
288 DataType* gpu_data_out =
static_cast<DataType*
>(sycl_device.allocate(
out.size() *
sizeof(DataType)));
290 sycl_device.memcpyHostToDevice(gpu_data_out,
out.data(), (
out.size()) *
sizeof(DataType));
291 auto device_expr = gpu_out.device(sycl_device);
292 asgn(device_expr,
op(gpu_out));
293 sycl_device.memcpyDeviceToHost(
out.data(), gpu_data_out, (
out.size()) *
sizeof(DataType));
295 DataType ver = reference(
i);
296 asgn(ver,
op(reference(
i)));
299 sycl_device.deallocate(gpu_data_out);
GpuHelper gpu
Definition: gpuhelper.cpp:18
References Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::data(), Eigen::TensorBase< Derived, AccessLevel >::device(), gpu, i, op, out(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::size(), and VERIFY_IS_APPROX.
template<typename DataType , int DataLayout, typename Operator >
void test_unary_builtins_return_bool |
( |
const Eigen::SyclDevice & |
sycl_device, |
|
|
const array< int64_t, 3 > & |
tensor_range |
|
) |
| |
357 in = in.random() + DataType(0.01);
358 DataType* gpu_data =
static_cast<DataType*
>(sycl_device.allocate(in.size() *
sizeof(DataType)));
359 bool* gpu_data_out =
static_cast<bool*
>(sycl_device.allocate(
out.size() *
sizeof(
bool)));
362 sycl_device.memcpyHostToDevice(gpu_data, in.data(), (in.size()) *
sizeof(DataType));
363 gpu_out.device(sycl_device) =
op(
gpu);
364 sycl_device.memcpyDeviceToHost(
out.data(), gpu_data_out, (
out.size()) *
sizeof(
bool));
368 sycl_device.deallocate(gpu_data);
369 sycl_device.deallocate(gpu_data_out);
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
References Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::data(), Eigen::TensorBase< Derived, AccessLevel >::device(), gpu, i, op, out(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::size(), and VERIFY_IS_EQUAL.