From f2209d06e428e0691de71f30fc2db4cb29191cd2 Mon Sep 17 00:00:00 2001 From: Eugene Zhulenev Date: Fri, 10 Aug 2018 16:53:36 -0700 Subject: Add block evaluationto CwiseUnaryOp and add PreferBlockAccess enum to all evaluators --- unsupported/test/cxx11_tensor_executor.cpp | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'unsupported/test/cxx11_tensor_executor.cpp') diff --git a/unsupported/test/cxx11_tensor_executor.cpp b/unsupported/test/cxx11_tensor_executor.cpp index d16ae4d11..1dc18220c 100644 --- a/unsupported/test/cxx11_tensor_executor.cpp +++ b/unsupported/test/cxx11_tensor_executor.cpp @@ -29,6 +29,33 @@ static array RandomDims(int min_dim = 1, int max_dim = 20) { return dims; }; +template +static void test_execute_unary_expr(Device d) { + static constexpr int Options = 0 | Layout; + + // Pick a large enough tensor size to bypass small tensor block evaluation + // optimization. + auto dims = RandomDims(50 / NumDims, 100 / NumDims); + + Tensor src(dims); + Tensor dst(dims); + + src.setRandom(); + const auto expr = src.square(); + + using Assign = TensorAssignOp; + using Executor = + internal::TensorExecutor; + + Executor::run(Assign(dst, expr), d); + + for (Index i = 0; i < dst.dimensions().TotalSize(); ++i) { + T square = src.coeff(i) * src.coeff(i); + VERIFY_IS_EQUAL(square, dst.coeff(i)); + } +} + template static void test_execute_binary_expr(Device d) @@ -445,6 +472,10 @@ EIGEN_DECLARE_TEST(cxx11_tensor_executor) { Eigen::ThreadPool tp(num_threads); Eigen::ThreadPoolDevice tp_device(&tp, num_threads); + CALL_SUBTEST_COMBINATIONS(test_execute_unary_expr, float, 3); + CALL_SUBTEST_COMBINATIONS(test_execute_unary_expr, float, 4); + CALL_SUBTEST_COMBINATIONS(test_execute_unary_expr, float, 5); + CALL_SUBTEST_COMBINATIONS(test_execute_binary_expr, float, 3); CALL_SUBTEST_COMBINATIONS(test_execute_binary_expr, float, 4); CALL_SUBTEST_COMBINATIONS(test_execute_binary_expr, float, 5); -- cgit v1.2.3