From a411e9f344a354673b72a490433cf3cc2148ddf1 Mon Sep 17 00:00:00 2001 From: Eugene Zhulenev Date: Thu, 10 Oct 2019 10:56:58 -0700 Subject: Block evaluation for TensorGenerator + TensorReverse + fixed bug in tensor reverse op --- unsupported/test/cxx11_tensor_block_eval.cpp | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'unsupported/test/cxx11_tensor_block_eval.cpp') diff --git a/unsupported/test/cxx11_tensor_block_eval.cpp b/unsupported/test/cxx11_tensor_block_eval.cpp index e11092af3..aac75014c 100644 --- a/unsupported/test/cxx11_tensor_block_eval.cpp +++ b/unsupported/test/cxx11_tensor_block_eval.cpp @@ -369,6 +369,48 @@ static void test_eval_tensor_chipping() { [&chipped_dims]() { return RandomBlock(chipped_dims, 1, 10); }); } +template +static void test_eval_tensor_generator() { + DSizes dims = RandomDims(10, 20); + Tensor input(dims); + input.setRandom(); + + auto generator = [](const array& dims) -> T { + T result = static_cast(0); + for (int i = 0; i < NumDims; ++i) { + result += static_cast((i + 1) * dims[i]); + } + return result; + }; + + VerifyBlockEvaluator( + input.generate(generator), + [&dims]() { return FixedSizeBlock(dims); }); + + VerifyBlockEvaluator( + input.generate(generator), + [&dims]() { return RandomBlock(dims, 1, 10); }); +} + +template +static void test_eval_tensor_reverse() { + DSizes dims = RandomDims(10, 20); + Tensor input(dims); + input.setRandom(); + + // Randomly reverse dimensions. + Eigen::DSizes reverse; + for (int i = 0; i < NumDims; ++i) reverse[i] = internal::random(); + + VerifyBlockEvaluator( + input.reverse(reverse), + [&dims]() { return FixedSizeBlock(dims); }); + + VerifyBlockEvaluator( + input.reverse(reverse), + [&dims]() { return RandomBlock(dims, 1, 10); }); +} + template static void test_eval_tensor_reshape_with_bcast() { Index dim = internal::random(1, 100); @@ -573,6 +615,8 @@ EIGEN_DECLARE_TEST(cxx11_tensor_block_eval) { CALL_SUBTESTS_DIMS_LAYOUTS(test_eval_tensor_select); CALL_SUBTESTS_DIMS_LAYOUTS(test_eval_tensor_padding); CALL_SUBTESTS_DIMS_LAYOUTS(test_eval_tensor_chipping); + CALL_SUBTESTS_DIMS_LAYOUTS(test_eval_tensor_generator); + CALL_SUBTESTS_DIMS_LAYOUTS(test_eval_tensor_reverse); CALL_SUBTESTS_LAYOUTS(test_eval_tensor_reshape_with_bcast); CALL_SUBTESTS_LAYOUTS(test_eval_tensor_forced_eval); -- cgit v1.2.3